From 6e9cd6b491267e6dff3e3f3f37d8af5f28e40672 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 19 Sep 2024 06:05:15 +0200 Subject: Adding upstream version 2:9.1.0698. Signed-off-by: Daniel Baumann --- runtime/syntax/antlr4.vim | 30 + runtime/syntax/asy.vim | 243 ++++ runtime/syntax/chicken.vim | 18 +- runtime/syntax/csv.vim | 39 + runtime/syntax/debcopyright.vim | 4 +- runtime/syntax/dockerfile.vim | 4 +- runtime/syntax/dosbatch.vim | 9 +- runtime/syntax/dune.vim | 3 + runtime/syntax/fstab.vim | 22 +- runtime/syntax/generator/Makefile | 6 +- runtime/syntax/generator/gen_syntax_vim.vim | 19 +- runtime/syntax/generator/vim.vim.base | 298 +++-- runtime/syntax/glsl.vim | 752 ++++++++++++ runtime/syntax/goaccess.vim | 34 + runtime/syntax/html.vim | 3 +- runtime/syntax/htmlangular.vim | 18 + runtime/syntax/java.vim | 462 +++++--- runtime/syntax/javascript.vim | 9 +- runtime/syntax/kconfig.vim | 4 +- runtime/syntax/kivy.vim | 10 +- runtime/syntax/logindefs.vim | 27 +- runtime/syntax/make.vim | 21 +- runtime/syntax/mediawiki.vim | 292 +++++ runtime/syntax/mysql.vim | 314 ++--- runtime/syntax/ocaml.vim | 407 +++++-- runtime/syntax/opam.vim | 52 +- runtime/syntax/progress.vim | 14 +- runtime/syntax/scheme.vim | 21 +- runtime/syntax/sdc.vim | 46 +- runtime/syntax/testdir/README.txt | 102 +- runtime/syntax/testdir/dumps/c_02.dump | 10 +- runtime/syntax/testdir/dumps/c_03.dump | 8 +- runtime/syntax/testdir/dumps/c_04.dump | 12 +- runtime/syntax/testdir/dumps/c_05.dump | 12 +- runtime/syntax/testdir/dumps/c_06.dump | 12 +- runtime/syntax/testdir/dumps/c_07.dump | 20 + runtime/syntax/testdir/dumps/c_99.dump | 20 - runtime/syntax/testdir/dumps/dots_01_00.dump | 20 + runtime/syntax/testdir/dumps/dots_01_01.dump | 20 + runtime/syntax/testdir/dumps/dots_01_02.dump | 20 + runtime/syntax/testdir/dumps/dots_01_03.dump | 20 + runtime/syntax/testdir/dumps/dots_02_00.dump | 20 + runtime/syntax/testdir/dumps/dots_02_01.dump | 20 + runtime/syntax/testdir/dumps/dots_02_02.dump | 20 + runtime/syntax/testdir/dumps/dots_02_03.dump | 20 + runtime/syntax/testdir/dumps/dots_03_00.dump | 20 + runtime/syntax/testdir/dumps/dots_03_01.dump | 20 + runtime/syntax/testdir/dumps/dots_03_02.dump | 20 + runtime/syntax/testdir/dumps/dots_03_03.dump | 20 + runtime/syntax/testdir/dumps/dots_04_00.dump | 20 + runtime/syntax/testdir/dumps/dots_04_01.dump | 20 + runtime/syntax/testdir/dumps/dots_04_02.dump | 20 + runtime/syntax/testdir/dumps/dots_04_03.dump | 20 + runtime/syntax/testdir/dumps/dots_04_04.dump | 20 + runtime/syntax/testdir/dumps/dots_05_00.dump | 20 + runtime/syntax/testdir/dumps/dots_05_01.dump | 20 + runtime/syntax/testdir/dumps/dots_05_02.dump | 20 + runtime/syntax/testdir/dumps/dots_05_03.dump | 20 + runtime/syntax/testdir/dumps/dots_05_04.dump | 20 + runtime/syntax/testdir/dumps/dots_06_00.dump | 20 + runtime/syntax/testdir/dumps/dots_06_01.dump | 20 + runtime/syntax/testdir/dumps/dots_06_02.dump | 20 + runtime/syntax/testdir/dumps/dots_06_03.dump | 20 + runtime/syntax/testdir/dumps/dots_07_00.dump | 20 + runtime/syntax/testdir/dumps/dots_07_01.dump | 20 + runtime/syntax/testdir/dumps/dots_07_02.dump | 20 + runtime/syntax/testdir/dumps/dots_07_03.dump | 20 + runtime/syntax/testdir/dumps/dots_07_04.dump | 20 + runtime/syntax/testdir/dumps/dots_08_00.dump | 20 + runtime/syntax/testdir/dumps/dots_08_01.dump | 20 + runtime/syntax/testdir/dumps/dots_08_02.dump | 20 + runtime/syntax/testdir/dumps/dots_08_03.dump | 20 + runtime/syntax/testdir/dumps/dots_08_04.dump | 20 + runtime/syntax/testdir/dumps/dots_09_00.dump | 20 + runtime/syntax/testdir/dumps/dots_09_01.dump | 20 + runtime/syntax/testdir/dumps/dots_09_02.dump | 20 + runtime/syntax/testdir/dumps/dots_09_03.dump | 20 + runtime/syntax/testdir/dumps/dots_10_00.dump | 20 + runtime/syntax/testdir/dumps/dots_10_01.dump | 20 + runtime/syntax/testdir/dumps/dots_10_02.dump | 20 + runtime/syntax/testdir/dumps/dots_10_03.dump | 20 + runtime/syntax/testdir/dumps/dots_10_04.dump | 20 + runtime/syntax/testdir/dumps/dots_10_05.dump | 20 + runtime/syntax/testdir/dumps/dots_11_00.dump | 20 + runtime/syntax/testdir/dumps/dots_11_01.dump | 20 + runtime/syntax/testdir/dumps/dots_11_02.dump | 20 + runtime/syntax/testdir/dumps/dots_11_03.dump | 20 + runtime/syntax/testdir/dumps/dots_11_04.dump | 20 + runtime/syntax/testdir/dumps/dots_11_05.dump | 20 + runtime/syntax/testdir/dumps/dots_12_00.dump | 20 + runtime/syntax/testdir/dumps/dots_12_01.dump | 20 + runtime/syntax/testdir/dumps/dots_12_02.dump | 20 + runtime/syntax/testdir/dumps/dots_12_03.dump | 20 + runtime/syntax/testdir/dumps/dots_12_04.dump | 20 + runtime/syntax/testdir/dumps/dots_13_00.dump | 20 + runtime/syntax/testdir/dumps/dots_13_01.dump | 20 + runtime/syntax/testdir/dumps/dots_13_02.dump | 20 + runtime/syntax/testdir/dumps/dots_13_03.dump | 20 + runtime/syntax/testdir/dumps/dots_13_04.dump | 20 + runtime/syntax/testdir/dumps/dots_14_00.dump | 20 + runtime/syntax/testdir/dumps/dots_14_01.dump | 20 + runtime/syntax/testdir/dumps/dots_14_02.dump | 20 + runtime/syntax/testdir/dumps/dots_14_03.dump | 20 + runtime/syntax/testdir/dumps/dots_14_04.dump | 20 + runtime/syntax/testdir/dumps/dots_15_00.dump | 20 + runtime/syntax/testdir/dumps/dots_15_01.dump | 20 + runtime/syntax/testdir/dumps/dots_15_02.dump | 20 + runtime/syntax/testdir/dumps/dots_15_03.dump | 20 + runtime/syntax/testdir/dumps/dots_16_00.dump | 20 + runtime/syntax/testdir/dumps/dots_16_01.dump | 20 + runtime/syntax/testdir/dumps/dots_16_02.dump | 20 + runtime/syntax/testdir/dumps/dots_16_03.dump | 20 + runtime/syntax/testdir/dumps/dots_17_00.dump | 20 + runtime/syntax/testdir/dumps/dots_17_01.dump | 20 + runtime/syntax/testdir/dumps/dots_17_02.dump | 20 + runtime/syntax/testdir/dumps/dots_17_03.dump | 20 + runtime/syntax/testdir/dumps/dots_18_00.dump | 20 + runtime/syntax/testdir/dumps/dots_18_01.dump | 20 + runtime/syntax/testdir/dumps/dots_18_02.dump | 20 + runtime/syntax/testdir/dumps/dots_18_03.dump | 20 + runtime/syntax/testdir/dumps/dots_19_00.dump | 20 + runtime/syntax/testdir/dumps/dots_19_01.dump | 20 + runtime/syntax/testdir/dumps/dots_19_02.dump | 20 + runtime/syntax/testdir/dumps/dots_19_03.dump | 20 + runtime/syntax/testdir/dumps/dots_20_00.dump | 20 + runtime/syntax/testdir/dumps/dots_20_01.dump | 20 + runtime/syntax/testdir/dumps/html_01.dump | 12 +- runtime/syntax/testdir/dumps/html_02.dump | 12 +- runtime/syntax/testdir/dumps/html_03.dump | 12 +- runtime/syntax/testdir/dumps/html_04.dump | 12 +- runtime/syntax/testdir/dumps/html_05.dump | 12 +- runtime/syntax/testdir/dumps/html_06.dump | 12 +- runtime/syntax/testdir/dumps/html_07.dump | 12 +- runtime/syntax/testdir/dumps/html_08.dump | 12 +- runtime/syntax/testdir/dumps/html_99.dump | 20 - .../syntax/testdir/dumps/java_annotations_99.dump | 20 - .../dumps/java_annotations_signature_00.dump | 20 + .../dumps/java_annotations_signature_01.dump | 20 + .../dumps/java_annotations_signature_02.dump | 20 + .../dumps/java_annotations_signature_03.dump | 20 + .../dumps/java_annotations_signature_04.dump | 20 + runtime/syntax/testdir/dumps/java_comments_02.dump | 2 +- runtime/syntax/testdir/dumps/java_comments_05.dump | 20 + runtime/syntax/testdir/dumps/java_comments_99.dump | 20 - .../testdir/dumps/java_contextual_keywords_99.dump | 20 - .../syntax/testdir/dumps/java_enfoldment_00.dump | 14 +- .../syntax/testdir/dumps/java_enfoldment_01.dump | 28 +- .../syntax/testdir/dumps/java_enfoldment_02.dump | 40 +- .../syntax/testdir/dumps/java_enfoldment_03.dump | 20 - .../syntax/testdir/dumps/java_enfoldment_04.dump | 20 - .../syntax/testdir/dumps/java_enfoldment_99.dump | 20 - runtime/syntax/testdir/dumps/java_escapes_07.dump | 20 + runtime/syntax/testdir/dumps/java_escapes_99.dump | 20 - runtime/syntax/testdir/dumps/java_generics_00.dump | 20 + runtime/syntax/testdir/dumps/java_generics_01.dump | 20 + runtime/syntax/testdir/dumps/java_generics_02.dump | 20 + runtime/syntax/testdir/dumps/java_generics_03.dump | 20 + runtime/syntax/testdir/dumps/java_generics_04.dump | 20 + runtime/syntax/testdir/dumps/java_generics_05.dump | 20 + runtime/syntax/testdir/dumps/java_generics_06.dump | 20 + runtime/syntax/testdir/dumps/java_generics_07.dump | 20 + .../testdir/dumps/java_generics_signature_00.dump | 20 + .../testdir/dumps/java_generics_signature_01.dump | 20 + .../testdir/dumps/java_generics_signature_02.dump | 20 + .../testdir/dumps/java_generics_signature_03.dump | 20 + .../testdir/dumps/java_generics_signature_04.dump | 20 + .../testdir/dumps/java_generics_signature_05.dump | 20 + .../testdir/dumps/java_generics_signature_06.dump | 20 + .../testdir/dumps/java_generics_signature_07.dump | 20 + .../testdir/dumps/java_lambda_expressions_07.dump | 2 +- .../testdir/dumps/java_lambda_expressions_99.dump | 20 - .../java_lambda_expressions_signature_00.dump | 20 + .../java_lambda_expressions_signature_01.dump | 20 + .../java_lambda_expressions_signature_02.dump | 20 + .../java_lambda_expressions_signature_03.dump | 20 + .../java_lambda_expressions_signature_04.dump | 20 + .../java_lambda_expressions_signature_05.dump | 20 + .../java_lambda_expressions_signature_06.dump | 20 + .../java_lambda_expressions_signature_07.dump | 20 + .../java_lambda_expressions_signature_08.dump | 20 + .../testdir/dumps/java_method_references_00.dump | 20 + .../testdir/dumps/java_method_references_01.dump | 20 + .../testdir/dumps/java_method_references_02.dump | 20 + .../testdir/dumps/java_method_references_03.dump | 20 + .../testdir/dumps/java_method_references_04.dump | 20 + .../testdir/dumps/java_method_references_05.dump | 20 + .../testdir/dumps/java_method_references_06.dump | 20 + .../testdir/dumps/java_method_references_07.dump | 20 + .../testdir/dumps/java_method_references_08.dump | 20 + .../testdir/dumps/java_method_references_09.dump | 20 + .../testdir/dumps/java_method_references_10.dump | 20 + .../dumps/java_method_references_signature_00.dump | 20 + .../dumps/java_method_references_signature_01.dump | 20 + .../dumps/java_method_references_signature_02.dump | 20 + .../dumps/java_method_references_signature_03.dump | 20 + .../dumps/java_method_references_signature_04.dump | 20 + .../dumps/java_method_references_signature_05.dump | 20 + .../dumps/java_method_references_signature_06.dump | 20 + .../dumps/java_method_references_signature_07.dump | 20 + .../dumps/java_method_references_signature_08.dump | 20 + .../dumps/java_method_references_signature_09.dump | 20 + .../dumps/java_method_references_signature_10.dump | 20 + .../testdir/dumps/java_methods_indent2_01.dump | 2 +- .../testdir/dumps/java_methods_indent2_02.dump | 4 +- .../testdir/dumps/java_methods_indent2_03.dump | 2 +- .../testdir/dumps/java_methods_indent2_04.dump | 2 +- .../testdir/dumps/java_methods_indent2_05.dump | 20 + .../testdir/dumps/java_methods_indent2_05.vim | 2 + .../testdir/dumps/java_methods_indent2_99.dump | 20 - .../testdir/dumps/java_methods_indent2_99.vim | 2 - .../dumps/java_methods_indent2_signature_00.dump | 20 + .../dumps/java_methods_indent2_signature_00.vim | 2 + .../dumps/java_methods_indent2_signature_01.dump | 20 + .../dumps/java_methods_indent2_signature_01.vim | 2 + .../dumps/java_methods_indent2_signature_02.dump | 20 + .../dumps/java_methods_indent2_signature_02.vim | 2 + .../dumps/java_methods_indent2_signature_03.dump | 20 + .../dumps/java_methods_indent2_signature_03.vim | 2 + .../dumps/java_methods_indent2_signature_04.dump | 20 + .../dumps/java_methods_indent2_signature_04.vim | 2 + .../dumps/java_methods_indent2_signature_05.dump | 20 + .../dumps/java_methods_indent2_signature_05.vim | 2 + .../testdir/dumps/java_methods_indent4_01.dump | 2 +- .../testdir/dumps/java_methods_indent4_02.dump | 4 +- .../testdir/dumps/java_methods_indent4_03.dump | 2 +- .../testdir/dumps/java_methods_indent4_04.dump | 2 +- .../testdir/dumps/java_methods_indent4_05.dump | 20 + .../testdir/dumps/java_methods_indent4_05.vim | 2 + .../testdir/dumps/java_methods_indent4_06.dump | 20 + .../testdir/dumps/java_methods_indent4_99.dump | 20 - .../testdir/dumps/java_methods_indent4_99.vim | 2 - .../dumps/java_methods_indent4_signature_00.dump | 20 + .../dumps/java_methods_indent4_signature_00.vim | 2 + .../dumps/java_methods_indent4_signature_01.dump | 20 + .../dumps/java_methods_indent4_signature_01.vim | 2 + .../dumps/java_methods_indent4_signature_02.dump | 20 + .../dumps/java_methods_indent4_signature_02.vim | 2 + .../dumps/java_methods_indent4_signature_03.dump | 20 + .../dumps/java_methods_indent4_signature_03.vim | 2 + .../dumps/java_methods_indent4_signature_04.dump | 20 + .../dumps/java_methods_indent4_signature_04.vim | 2 + .../dumps/java_methods_indent4_signature_05.dump | 20 + .../dumps/java_methods_indent4_signature_05.vim | 2 + .../dumps/java_methods_indent4_signature_06.dump | 20 + .../testdir/dumps/java_methods_indent8_01.dump | 2 +- .../testdir/dumps/java_methods_indent8_02.dump | 4 +- .../testdir/dumps/java_methods_indent8_03.dump | 2 +- .../testdir/dumps/java_methods_indent8_04.dump | 10 +- .../testdir/dumps/java_methods_indent8_05.dump | 20 + .../testdir/dumps/java_methods_indent8_05.vim | 2 + .../testdir/dumps/java_methods_indent8_06.dump | 20 + .../testdir/dumps/java_methods_indent8_99.dump | 20 - .../testdir/dumps/java_methods_indent8_99.vim | 2 - .../dumps/java_methods_indent8_signature_00.dump | 20 + .../dumps/java_methods_indent8_signature_00.vim | 2 + .../dumps/java_methods_indent8_signature_01.dump | 20 + .../dumps/java_methods_indent8_signature_01.vim | 2 + .../dumps/java_methods_indent8_signature_02.dump | 20 + .../dumps/java_methods_indent8_signature_02.vim | 2 + .../dumps/java_methods_indent8_signature_03.dump | 20 + .../dumps/java_methods_indent8_signature_03.vim | 2 + .../dumps/java_methods_indent8_signature_04.dump | 20 + .../dumps/java_methods_indent8_signature_04.vim | 2 + .../dumps/java_methods_indent8_signature_05.dump | 20 + .../dumps/java_methods_indent8_signature_05.vim | 2 + .../dumps/java_methods_indent8_signature_06.dump | 20 + .../dumps/java_methods_indent8_signature_06.vim | 2 + .../testdir/dumps/java_methods_style_99.dump | 20 - .../syntax/testdir/dumps/java_methods_style_99.vim | 2 - .../dumps/java_methods_style_signature_00.dump | 20 + .../dumps/java_methods_style_signature_00.vim | 2 + .../dumps/java_methods_style_signature_01.dump | 20 + .../dumps/java_methods_style_signature_01.vim | 2 + .../dumps/java_methods_style_signature_02.dump | 20 + .../dumps/java_methods_style_signature_02.vim | 2 + .../dumps/java_methods_style_signature_03.dump | 20 + .../dumps/java_methods_style_signature_03.vim | 2 + .../dumps/java_methods_style_signature_04.dump | 20 + .../dumps/java_methods_style_signature_04.vim | 2 + runtime/syntax/testdir/dumps/java_numbers_05.dump | 20 + runtime/syntax/testdir/dumps/java_numbers_99.dump | 20 - runtime/syntax/testdir/dumps/java_string_99.dump | 20 - runtime/syntax/testdir/dumps/java_switch_01.dump | 10 +- runtime/syntax/testdir/dumps/java_switch_02.dump | 10 +- runtime/syntax/testdir/dumps/java_switch_03.dump | 12 +- runtime/syntax/testdir/dumps/java_switch_04.dump | 10 +- runtime/syntax/testdir/dumps/java_switch_05.dump | 12 +- runtime/syntax/testdir/dumps/java_switch_06.dump | 12 +- runtime/syntax/testdir/dumps/java_switch_07.dump | 20 + runtime/syntax/testdir/dumps/java_switch_99.dump | 20 - .../syntax/testdir/dumps/java_unfoldment_01.dump | 2 +- .../syntax/testdir/dumps/java_unfoldment_02.dump | 4 +- .../syntax/testdir/dumps/java_unfoldment_03.dump | 28 +- .../syntax/testdir/dumps/java_unfoldment_04.dump | 28 +- .../syntax/testdir/dumps/java_unfoldment_05.dump | 20 + .../syntax/testdir/dumps/java_unfoldment_99.dump | 20 - .../syntax/testdir/dumps/markdown_conceal_99.dump | 20 - runtime/syntax/testdir/dumps/modula2_iso_02.dump | 10 +- runtime/syntax/testdir/dumps/modula2_iso_03.dump | 10 +- runtime/syntax/testdir/dumps/modula2_iso_04.dump | 10 +- runtime/syntax/testdir/dumps/modula2_iso_05.dump | 10 +- runtime/syntax/testdir/dumps/modula2_iso_06.dump | 10 +- runtime/syntax/testdir/dumps/modula2_iso_99.dump | 20 - runtime/syntax/testdir/dumps/modula2_pim_06.dump | 20 + runtime/syntax/testdir/dumps/modula2_pim_99.dump | 20 - runtime/syntax/testdir/dumps/modula2_r10_02.dump | 10 +- runtime/syntax/testdir/dumps/modula2_r10_03.dump | 10 +- runtime/syntax/testdir/dumps/modula2_r10_04.dump | 12 +- runtime/syntax/testdir/dumps/modula2_r10_05.dump | 10 +- runtime/syntax/testdir/dumps/modula2_r10_06.dump | 12 +- runtime/syntax/testdir/dumps/modula2_r10_07.dump | 12 +- runtime/syntax/testdir/dumps/modula2_r10_08.dump | 20 + runtime/syntax/testdir/dumps/modula2_r10_99.dump | 20 - .../syntax/testdir/dumps/progress_comments_00.dump | 20 + .../syntax/testdir/dumps/progress_comments_01.dump | 20 + .../syntax/testdir/dumps/progress_comments_02.dump | 20 + runtime/syntax/testdir/dumps/sh_01_99.dump | 20 - runtime/syntax/testdir/dumps/sh_02_01.dump | 10 +- runtime/syntax/testdir/dumps/sh_02_99.dump | 20 - runtime/syntax/testdir/dumps/sh_03_01.dump | 10 +- runtime/syntax/testdir/dumps/sh_03_02.dump | 20 + runtime/syntax/testdir/dumps/sh_03_99.dump | 20 - runtime/syntax/testdir/dumps/sh_04_99.dump | 20 - runtime/syntax/testdir/dumps/sh_05_02.dump | 6 +- runtime/syntax/testdir/dumps/sh_05_03.dump | 10 +- runtime/syntax/testdir/dumps/sh_05_04.dump | 10 +- runtime/syntax/testdir/dumps/sh_05_05.dump | 10 +- runtime/syntax/testdir/dumps/sh_05_06.dump | 10 +- runtime/syntax/testdir/dumps/sh_05_07.dump | 12 +- runtime/syntax/testdir/dumps/sh_05_08.dump | 12 +- runtime/syntax/testdir/dumps/sh_05_09.dump | 12 +- runtime/syntax/testdir/dumps/sh_05_10.dump | 12 +- runtime/syntax/testdir/dumps/sh_05_11.dump | 12 +- runtime/syntax/testdir/dumps/sh_05_12.dump | 14 +- runtime/syntax/testdir/dumps/sh_05_13.dump | 14 +- runtime/syntax/testdir/dumps/sh_05_14.dump | 14 +- runtime/syntax/testdir/dumps/sh_05_15.dump | 14 +- runtime/syntax/testdir/dumps/sh_05_16.dump | 16 +- runtime/syntax/testdir/dumps/sh_05_17.dump | 16 +- runtime/syntax/testdir/dumps/sh_05_18.dump | 16 +- runtime/syntax/testdir/dumps/sh_05_19.dump | 18 +- runtime/syntax/testdir/dumps/sh_05_20.dump | 16 +- runtime/syntax/testdir/dumps/sh_05_21.dump | 20 + runtime/syntax/testdir/dumps/sh_05_99.dump | 20 - runtime/syntax/testdir/dumps/sh_06_01.dump | 12 +- runtime/syntax/testdir/dumps/sh_06_02.dump | 12 +- runtime/syntax/testdir/dumps/sh_06_03.dump | 14 +- runtime/syntax/testdir/dumps/sh_06_04.dump | 20 + runtime/syntax/testdir/dumps/sh_06_99.dump | 20 - runtime/syntax/testdir/dumps/sh_07_01.dump | 16 +- runtime/syntax/testdir/dumps/sh_07_02.dump | 18 +- runtime/syntax/testdir/dumps/sh_07_03.dump | 20 +- runtime/syntax/testdir/dumps/sh_07_04.dump | 26 +- runtime/syntax/testdir/dumps/sh_07_05.dump | 20 + runtime/syntax/testdir/dumps/sh_07_99.dump | 20 - runtime/syntax/testdir/dumps/sh_08_02.dump | 10 +- runtime/syntax/testdir/dumps/sh_08_03.dump | 12 +- runtime/syntax/testdir/dumps/sh_08_04.dump | 14 +- runtime/syntax/testdir/dumps/sh_08_99.dump | 20 - runtime/syntax/testdir/dumps/sh_09_99.dump | 20 - runtime/syntax/testdir/dumps/sh_10_99.dump | 20 - runtime/syntax/testdir/dumps/sh_11_01.dump | 20 + runtime/syntax/testdir/dumps/sh_11_99.dump | 20 - runtime/syntax/testdir/dumps/vim9_comment_00.dump | 2 +- runtime/syntax/testdir/dumps/vim9_comment_01.dump | 6 +- runtime/syntax/testdir/dumps/vim9_comment_03.dump | 2 +- runtime/syntax/testdir/dumps/vim9_comment_99.dump | 20 - .../syntax/testdir/dumps/vim9_ex_commands_00.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_01.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_02.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_03.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_04.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_05.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_06.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_07.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_08.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_09.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_10.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_11.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_12.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_13.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_14.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_15.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_16.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_17.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_18.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_19.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_20.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_21.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_22.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_23.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_24.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_25.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_26.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_27.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_28.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_29.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_30.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_31.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_32.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_33.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_34.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_35.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_36.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_37.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_38.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_39.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_40.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_41.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_42.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_43.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_44.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_45.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_46.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_47.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_48.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_49.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_50.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_51.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_52.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_53.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_54.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_55.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_56.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_57.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_58.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_59.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_60.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_61.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_62.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_63.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_64.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_65.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_66.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_67.dump | 20 + .../syntax/testdir/dumps/vim9_ex_commands_68.dump | 20 + .../testdir/dumps/vim9_ex_comment_strings_00.dump | 4 +- .../testdir/dumps/vim9_ex_comment_strings_01.dump | 4 +- .../testdir/dumps/vim9_ex_comment_strings_99.dump | 20 - ...im9_ex_function_def_tail_comment_errors_00.dump | 20 + ...im9_ex_function_def_tail_comment_errors_01.dump | 20 + ...im9_ex_function_def_tail_comment_errors_02.dump | 20 + .../vim9_ex_function_def_tail_comments_00.dump | 20 + .../vim9_ex_function_def_tail_comments_01.dump | 20 + .../vim9_ex_function_def_tail_comments_02.dump | 20 + .../testdir/dumps/vim9_ex_loadkeymap_00.dump | 20 + .../testdir/dumps/vim9_ex_loadkeymap_01.dump | 20 + .../dumps/vim9_ex_no_comment_strings_00.dump | 4 +- .../dumps/vim9_ex_no_comment_strings_01.dump | 4 +- .../dumps/vim9_ex_no_comment_strings_99.dump | 20 - runtime/syntax/testdir/dumps/vim9_keymap_00.dump | 20 - runtime/syntax/testdir/dumps/vim9_keymap_01.dump | 20 - runtime/syntax/testdir/dumps/vim9_keymap_99.dump | 20 - runtime/syntax/testdir/dumps/vim9_keymap_99.vim | 2 - .../testdir/dumps/vim9_legacy_header_99.dump | 20 - .../testdir/dumps/vim9_legacy_header_fold_99.dump | 20 - runtime/syntax/testdir/dumps/vim9_shebang_99.dump | 20 - runtime/syntax/testdir/dumps/vim_comment_03.dump | 2 +- runtime/syntax/testdir/dumps/vim_comment_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_abbreviate_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_augroup_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_behave_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_call_00.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_call_01.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_call_02.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_call_03.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_catch_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_command_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_commands_05.dump | 2 +- .../syntax/testdir/dumps/vim_ex_commands_06.dump | 8 +- .../syntax/testdir/dumps/vim_ex_commands_07.dump | 8 +- .../syntax/testdir/dumps/vim_ex_commands_08.dump | 8 +- .../syntax/testdir/dumps/vim_ex_commands_09.dump | 10 +- .../syntax/testdir/dumps/vim_ex_commands_10.dump | 12 +- .../syntax/testdir/dumps/vim_ex_commands_11.dump | 12 +- .../syntax/testdir/dumps/vim_ex_commands_12.dump | 12 +- .../syntax/testdir/dumps/vim_ex_commands_13.dump | 12 +- .../syntax/testdir/dumps/vim_ex_commands_14.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_15.dump | 12 +- .../syntax/testdir/dumps/vim_ex_commands_16.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_17.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_18.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_19.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_20.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_21.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_22.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_23.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_24.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_25.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_26.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_27.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_28.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_29.dump | 14 +- .../syntax/testdir/dumps/vim_ex_commands_30.dump | 16 +- .../syntax/testdir/dumps/vim_ex_commands_31.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_32.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_33.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_34.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_35.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_36.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_37.dump | 18 +- .../syntax/testdir/dumps/vim_ex_commands_38.dump | 20 +- .../syntax/testdir/dumps/vim_ex_commands_39.dump | 20 +- .../syntax/testdir/dumps/vim_ex_commands_40.dump | 20 +- .../syntax/testdir/dumps/vim_ex_commands_41.dump | 20 +- .../syntax/testdir/dumps/vim_ex_commands_42.dump | 22 +- .../syntax/testdir/dumps/vim_ex_commands_43.dump | 24 +- .../syntax/testdir/dumps/vim_ex_commands_44.dump | 24 +- .../syntax/testdir/dumps/vim_ex_commands_45.dump | 24 +- .../syntax/testdir/dumps/vim_ex_commands_46.dump | 24 +- .../syntax/testdir/dumps/vim_ex_commands_47.dump | 24 +- .../syntax/testdir/dumps/vim_ex_commands_48.dump | 24 +- .../syntax/testdir/dumps/vim_ex_commands_49.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_50.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_51.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_52.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_53.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_54.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_55.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_56.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_57.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_58.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_59.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_60.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_61.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_62.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_63.dump | 26 +- .../syntax/testdir/dumps/vim_ex_commands_64.dump | 30 +- .../syntax/testdir/dumps/vim_ex_commands_65.dump | 30 +- .../syntax/testdir/dumps/vim_ex_commands_66.dump | 40 +- .../syntax/testdir/dumps/vim_ex_commands_67.dump | 20 + .../syntax/testdir/dumps/vim_ex_commands_68.dump | 20 + .../syntax/testdir/dumps/vim_ex_commands_99.dump | 20 - .../testdir/dumps/vim_ex_comment_strings_01.dump | 20 + .../testdir/dumps/vim_ex_comment_strings_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_def_05.dump | 12 +- runtime/syntax/testdir/dumps/vim_ex_def_06.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_def_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_def_fold_02.dump | 22 +- .../syntax/testdir/dumps/vim_ex_def_fold_03.dump | 24 +- .../syntax/testdir/dumps/vim_ex_def_fold_04.dump | 22 +- .../syntax/testdir/dumps/vim_ex_def_fold_05.dump | 20 - .../syntax/testdir/dumps/vim_ex_def_fold_06.dump | 20 - .../syntax/testdir/dumps/vim_ex_def_fold_07.dump | 20 - .../syntax/testdir/dumps/vim_ex_def_fold_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_def_nested_00.dump | 2 +- .../syntax/testdir/dumps/vim_ex_def_nested_01.dump | 20 + .../syntax/testdir/dumps/vim_ex_def_nested_99.dump | 20 - .../testdir/dumps/vim_ex_def_nested_fold_00.dump | 2 +- .../testdir/dumps/vim_ex_def_nested_fold_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_echo_02.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_echo_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_execute_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_function_10.dump | 20 + .../syntax/testdir/dumps/vim_ex_function_99.dump | 20 - ...vim_ex_function_def_tail_comment_errors_00.dump | 20 + ...vim_ex_function_def_tail_comment_errors_01.dump | 20 + ...vim_ex_function_def_tail_comment_errors_02.dump | 20 + .../vim_ex_function_def_tail_comments_00.dump | 20 + .../vim_ex_function_def_tail_comments_01.dump | 20 + .../vim_ex_function_def_tail_comments_02.dump | 20 + .../testdir/dumps/vim_ex_function_fold_02.dump | 16 +- .../testdir/dumps/vim_ex_function_fold_03.dump | 26 +- .../testdir/dumps/vim_ex_function_fold_04.dump | 26 +- .../testdir/dumps/vim_ex_function_fold_05.dump | 26 +- .../testdir/dumps/vim_ex_function_fold_06.dump | 30 +- .../testdir/dumps/vim_ex_function_fold_07.dump | 34 +- .../testdir/dumps/vim_ex_function_fold_08.dump | 20 - .../testdir/dumps/vim_ex_function_fold_09.dump | 20 - .../testdir/dumps/vim_ex_function_fold_10.dump | 20 - .../testdir/dumps/vim_ex_function_fold_11.dump | 20 - .../testdir/dumps/vim_ex_function_fold_12.dump | 20 - .../testdir/dumps/vim_ex_function_fold_99.dump | 20 - .../testdir/dumps/vim_ex_function_nested_02.dump | 20 + .../testdir/dumps/vim_ex_function_nested_99.dump | 20 - .../dumps/vim_ex_function_nested_fold_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_highlight_03.dump | 20 + .../syntax/testdir/dumps/vim_ex_highlight_99.dump | 20 - .../testdir/dumps/vim_ex_let_heredoc_00.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_01.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_02.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_03.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_04.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_05.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_06.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_07.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_08.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_09.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_10.dump | 20 + .../testdir/dumps/vim_ex_let_heredoc_11.dump | 20 + .../syntax/testdir/dumps/vim_ex_loadkeymap_00.dump | 20 + .../syntax/testdir/dumps/vim_ex_loadkeymap_01.dump | 20 + .../dumps/vim_ex_loadkeymap_after_bar_00.dump | 20 + .../dumps/vim_ex_loadkeymap_after_colon_00.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_map_00.dump | 6 +- runtime/syntax/testdir/dumps/vim_ex_map_01.dump | 14 +- runtime/syntax/testdir/dumps/vim_ex_map_02.dump | 12 +- runtime/syntax/testdir/dumps/vim_ex_map_03.dump | 14 +- runtime/syntax/testdir/dumps/vim_ex_map_04.dump | 32 +- runtime/syntax/testdir/dumps/vim_ex_map_05.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_map_06.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_map_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_match_00.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_match_01.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_menu_03.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_menu_04.dump | 12 +- runtime/syntax/testdir/dumps/vim_ex_menu_05.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_menu_99.dump | 20 - .../testdir/dumps/vim_ex_menutranslate_03.dump | 20 + .../testdir/dumps/vim_ex_menutranslate_99.dump | 20 - .../dumps/vim_ex_no_comment_strings_01.dump | 20 + .../dumps/vim_ex_no_comment_strings_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_set_00.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_set_01.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_set_02.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_set_03.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_set_04.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_set_05.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump | 20 - .../syntax/testdir/dumps/vim_ex_substitute_08.dump | 20 + .../syntax/testdir/dumps/vim_ex_substitute_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump | 10 +- runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump | 20 + runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump | 20 - runtime/syntax/testdir/dumps/vim_ex_throw_99.dump | 20 - runtime/syntax/testdir/dumps/vim_expr_01.dump | 14 +- runtime/syntax/testdir/dumps/vim_expr_02.dump | 16 +- runtime/syntax/testdir/dumps/vim_expr_03.dump | 16 +- runtime/syntax/testdir/dumps/vim_expr_04.dump | 20 + runtime/syntax/testdir/dumps/vim_expr_99.dump | 20 - .../syntax/testdir/dumps/vim_key_notation_09.dump | 20 + .../syntax/testdir/dumps/vim_key_notation_99.dump | 20 - runtime/syntax/testdir/dumps/vim_keymap_00.dump | 20 - runtime/syntax/testdir/dumps/vim_keymap_01.dump | 20 - runtime/syntax/testdir/dumps/vim_keymap_04.vim | 2 + runtime/syntax/testdir/dumps/vim_keymap_99.dump | 20 - runtime/syntax/testdir/dumps/vim_keymap_99.vim | 2 - .../testdir/dumps/vim_line_continuation_99.dump | 20 - runtime/syntax/testdir/dumps/vim_new_99.dump | 20 - .../testdir/dumps/vim_object_methods_00.dump | 4 +- .../testdir/dumps/vim_object_methods_02.dump | 6 +- .../testdir/dumps/vim_object_methods_03.dump | 20 + .../testdir/dumps/vim_object_methods_99.dump | 20 - runtime/syntax/testdir/dumps/vim_shebang_99.dump | 20 - runtime/syntax/testdir/dumps/vim_variables_99.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_00.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_01.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_02.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_03.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_04.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_05.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_06.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_07.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_08.dump | 20 - runtime/syntax/testdir/dumps/yaml.yaml_99.dump | 20 - runtime/syntax/testdir/dumps/yaml_01.dump | 4 +- runtime/syntax/testdir/dumps/yaml_03.dump | 2 +- runtime/syntax/testdir/dumps/yaml_04.dump | 2 +- runtime/syntax/testdir/dumps/yaml_05.dump | 8 +- runtime/syntax/testdir/dumps/yaml_06.dump | 12 +- runtime/syntax/testdir/dumps/yaml_07.dump | 16 +- runtime/syntax/testdir/dumps/yaml_99.dump | 20 - .../testdir/input/java_annotations_signature.java | 78 ++ runtime/syntax/testdir/input/java_enfoldment.java | 16 +- runtime/syntax/testdir/input/java_generics.java | 140 +++ .../testdir/input/java_generics_signature.java | 140 +++ .../testdir/input/java_lambda_expressions.java | 2 +- .../input/java_lambda_expressions_signature.java | 154 +++ .../testdir/input/java_method_references.java | 186 +++ .../input/java_method_references_signature.java | 186 +++ .../syntax/testdir/input/java_methods_indent2.java | 18 +- .../input/java_methods_indent2_signature.java | 104 ++ .../syntax/testdir/input/java_methods_indent4.java | 18 +- .../input/java_methods_indent4_signature.java | 104 ++ .../syntax/testdir/input/java_methods_indent8.java | 18 +- .../input/java_methods_indent8_signature.java | 104 ++ .../input/java_methods_style_signature.java | 82 ++ runtime/syntax/testdir/input/java_switch.java | 10 +- runtime/syntax/testdir/input/java_unfoldment.java | 14 +- runtime/syntax/testdir/input/progress_comments.p | 45 + .../syntax/testdir/input/selftestdir/README.txt | 10 + runtime/syntax/testdir/input/selftestdir/dots_01 | 60 + runtime/syntax/testdir/input/selftestdir/dots_02 | 30 + runtime/syntax/testdir/input/selftestdir/dots_03 | 20 + runtime/syntax/testdir/input/selftestdir/dots_04 | 15 + runtime/syntax/testdir/input/selftestdir/dots_05 | 12 + runtime/syntax/testdir/input/selftestdir/dots_06 | 10 + runtime/syntax/testdir/input/selftestdir/dots_07 | 9 + runtime/syntax/testdir/input/selftestdir/dots_08 | 8 + runtime/syntax/testdir/input/selftestdir/dots_09 | 7 + runtime/syntax/testdir/input/selftestdir/dots_10 | 6 + runtime/syntax/testdir/input/selftestdir/dots_11 | 6 + runtime/syntax/testdir/input/selftestdir/dots_12 | 5 + runtime/syntax/testdir/input/selftestdir/dots_13 | 5 + runtime/syntax/testdir/input/selftestdir/dots_14 | 5 + runtime/syntax/testdir/input/selftestdir/dots_15 | 4 + runtime/syntax/testdir/input/selftestdir/dots_16 | 4 + runtime/syntax/testdir/input/selftestdir/dots_17 | 4 + runtime/syntax/testdir/input/selftestdir/dots_18 | 4 + runtime/syntax/testdir/input/selftestdir/dots_19 | 4 + runtime/syntax/testdir/input/selftestdir/dots_20 | 2 + runtime/syntax/testdir/input/vim9_ex_commands.vim | 1225 ++++++++++++++++++++ .../vim9_ex_function_def_tail_comment_errors.vim | 44 + .../input/vim9_ex_function_def_tail_comments.vim | 44 + .../syntax/testdir/input/vim9_ex_loadkeymap.vim | 26 + runtime/syntax/testdir/input/vim9_keymap.vim | 26 - runtime/syntax/testdir/input/vim_ex_call.vim | 51 + runtime/syntax/testdir/input/vim_ex_commands.vim | 56 +- runtime/syntax/testdir/input/vim_ex_def.vim | 2 +- runtime/syntax/testdir/input/vim_ex_def_fold.vim | 4 +- .../vim_ex_function_def_tail_comment_errors.vim | 43 + .../input/vim_ex_function_def_tail_comments.vim | 43 + .../syntax/testdir/input/vim_ex_function_fold.vim | 3 +- .../syntax/testdir/input/vim_ex_let_heredoc.vim | 196 ++++ runtime/syntax/testdir/input/vim_ex_loadkeymap.vim | 24 + .../testdir/input/vim_ex_loadkeymap_after_bar.vim | 10 + .../input/vim_ex_loadkeymap_after_colon.vim | 10 + runtime/syntax/testdir/input/vim_ex_map.vim | 24 +- runtime/syntax/testdir/input/vim_ex_match.vim | 32 + runtime/syntax/testdir/input/vim_ex_set.vim | 93 ++ runtime/syntax/testdir/input/vim_keymap.vim | 27 - runtime/syntax/testdir/input/yaml.yaml | 7 +- runtime/syntax/testdir/runtest.vim | 204 +++- runtime/syntax/testdir/viewdumps.vim | 24 + runtime/syntax/thrift.vim | 74 ++ runtime/syntax/tmux.vim | 12 +- runtime/syntax/tsv.vim | 12 + runtime/syntax/typst.vim | 472 ++++++++ runtime/syntax/vim.vim | 368 +++--- runtime/syntax/yaml.vim | 2 +- 738 files changed, 14960 insertions(+), 4192 deletions(-) create mode 100644 runtime/syntax/antlr4.vim create mode 100644 runtime/syntax/asy.vim create mode 100644 runtime/syntax/csv.vim create mode 100644 runtime/syntax/glsl.vim create mode 100644 runtime/syntax/goaccess.vim create mode 100644 runtime/syntax/htmlangular.vim create mode 100644 runtime/syntax/mediawiki.vim create mode 100644 runtime/syntax/testdir/dumps/c_07.dump delete mode 100644 runtime/syntax/testdir/dumps/c_99.dump create mode 100644 runtime/syntax/testdir/dumps/dots_01_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_01_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_01_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_01_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_02_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_02_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_02_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_02_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_03_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_03_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_03_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_03_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_04_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_04_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_04_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_04_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_04_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_05_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_05_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_05_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_05_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_05_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_06_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_06_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_06_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_06_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_07_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_07_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_07_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_07_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_07_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_08_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_08_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_08_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_08_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_08_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_09_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_09_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_09_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_09_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_10_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_10_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_10_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_10_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_10_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_10_05.dump create mode 100644 runtime/syntax/testdir/dumps/dots_11_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_11_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_11_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_11_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_11_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_11_05.dump create mode 100644 runtime/syntax/testdir/dumps/dots_12_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_12_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_12_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_12_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_12_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_13_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_13_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_13_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_13_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_13_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_14_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_14_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_14_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_14_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_14_04.dump create mode 100644 runtime/syntax/testdir/dumps/dots_15_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_15_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_15_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_15_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_16_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_16_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_16_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_16_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_17_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_17_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_17_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_17_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_18_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_18_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_18_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_18_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_19_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_19_01.dump create mode 100644 runtime/syntax/testdir/dumps/dots_19_02.dump create mode 100644 runtime/syntax/testdir/dumps/dots_19_03.dump create mode 100644 runtime/syntax/testdir/dumps/dots_20_00.dump create mode 100644 runtime/syntax/testdir/dumps/dots_20_01.dump delete mode 100644 runtime/syntax/testdir/dumps/html_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_annotations_99.dump create mode 100644 runtime/syntax/testdir/dumps/java_annotations_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_annotations_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_annotations_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_annotations_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_annotations_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_comments_05.dump delete mode 100644 runtime/syntax/testdir/dumps/java_comments_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_enfoldment_03.dump delete mode 100644 runtime/syntax/testdir/dumps/java_enfoldment_04.dump delete mode 100644 runtime/syntax/testdir/dumps/java_enfoldment_99.dump create mode 100644 runtime/syntax/testdir/dumps/java_escapes_07.dump delete mode 100644 runtime/syntax/testdir/dumps/java_escapes_99.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_generics_signature_07.dump delete mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_08.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_09.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_10.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_08.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_09.dump create mode 100644 runtime/syntax/testdir/dumps/java_method_references_signature_10.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_05.vim delete mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_99.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_05.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_06.dump delete mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_99.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_05.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_06.dump delete mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_99.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim delete mode 100644 runtime/syntax/testdir/dumps/java_methods_style_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_methods_style_99.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim create mode 100644 runtime/syntax/testdir/dumps/java_numbers_05.dump delete mode 100644 runtime/syntax/testdir/dumps/java_numbers_99.dump delete mode 100644 runtime/syntax/testdir/dumps/java_string_99.dump create mode 100644 runtime/syntax/testdir/dumps/java_switch_07.dump delete mode 100644 runtime/syntax/testdir/dumps/java_switch_99.dump create mode 100644 runtime/syntax/testdir/dumps/java_unfoldment_05.dump delete mode 100644 runtime/syntax/testdir/dumps/java_unfoldment_99.dump delete mode 100644 runtime/syntax/testdir/dumps/markdown_conceal_99.dump delete mode 100644 runtime/syntax/testdir/dumps/modula2_iso_99.dump create mode 100644 runtime/syntax/testdir/dumps/modula2_pim_06.dump delete mode 100644 runtime/syntax/testdir/dumps/modula2_pim_99.dump create mode 100644 runtime/syntax/testdir/dumps/modula2_r10_08.dump delete mode 100644 runtime/syntax/testdir/dumps/modula2_r10_99.dump create mode 100644 runtime/syntax/testdir/dumps/progress_comments_00.dump create mode 100644 runtime/syntax/testdir/dumps/progress_comments_01.dump create mode 100644 runtime/syntax/testdir/dumps/progress_comments_02.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_01_99.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_02_99.dump create mode 100644 runtime/syntax/testdir/dumps/sh_03_02.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_03_99.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_04_99.dump create mode 100644 runtime/syntax/testdir/dumps/sh_05_21.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_05_99.dump create mode 100644 runtime/syntax/testdir/dumps/sh_06_04.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_06_99.dump create mode 100644 runtime/syntax/testdir/dumps/sh_07_05.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_07_99.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_08_99.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_09_99.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_10_99.dump create mode 100644 runtime/syntax/testdir/dumps/sh_11_01.dump delete mode 100644 runtime/syntax/testdir/dumps/sh_11_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_comment_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_keymap_00.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_keymap_01.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_keymap_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_keymap_99.vim delete mode 100644 runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim9_shebang_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_comment_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_behave_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_call_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_call_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_call_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_call_03.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_catch_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_command_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_commands_67.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_commands_68.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_commands_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_06.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_echo_02.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_echo_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_execute_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_10.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_map_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_map_06.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_map_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_match_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_match_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_menu_05.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_menu_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_set_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_set_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_set_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_set_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_set_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_set_05.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_ex_throw_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_expr_04.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_expr_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_key_notation_09.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_key_notation_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_keymap_00.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_keymap_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_keymap_04.vim delete mode 100644 runtime/syntax/testdir/dumps/vim_keymap_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_keymap_99.vim delete mode 100644 runtime/syntax/testdir/dumps/vim_line_continuation_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_new_99.dump create mode 100644 runtime/syntax/testdir/dumps/vim_object_methods_03.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_object_methods_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_shebang_99.dump delete mode 100644 runtime/syntax/testdir/dumps/vim_variables_99.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_00.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_01.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_02.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_03.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_04.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_05.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_06.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_07.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_08.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml.yaml_99.dump delete mode 100644 runtime/syntax/testdir/dumps/yaml_99.dump create mode 100644 runtime/syntax/testdir/input/java_annotations_signature.java create mode 100644 runtime/syntax/testdir/input/java_generics.java create mode 100644 runtime/syntax/testdir/input/java_generics_signature.java create mode 100644 runtime/syntax/testdir/input/java_lambda_expressions_signature.java create mode 100644 runtime/syntax/testdir/input/java_method_references.java create mode 100644 runtime/syntax/testdir/input/java_method_references_signature.java create mode 100644 runtime/syntax/testdir/input/java_methods_indent2_signature.java create mode 100644 runtime/syntax/testdir/input/java_methods_indent4_signature.java create mode 100644 runtime/syntax/testdir/input/java_methods_indent8_signature.java create mode 100644 runtime/syntax/testdir/input/java_methods_style_signature.java create mode 100644 runtime/syntax/testdir/input/progress_comments.p create mode 100644 runtime/syntax/testdir/input/selftestdir/README.txt create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_01 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_02 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_03 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_04 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_05 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_06 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_07 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_08 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_09 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_10 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_11 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_12 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_13 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_14 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_15 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_16 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_17 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_18 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_19 create mode 100644 runtime/syntax/testdir/input/selftestdir/dots_20 create mode 100644 runtime/syntax/testdir/input/vim9_ex_commands.vim create mode 100644 runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim create mode 100644 runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim create mode 100644 runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim delete mode 100644 runtime/syntax/testdir/input/vim9_keymap.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_call.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_let_heredoc.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_loadkeymap.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_match.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_set.vim delete mode 100644 runtime/syntax/testdir/input/vim_keymap.vim create mode 100644 runtime/syntax/testdir/viewdumps.vim create mode 100644 runtime/syntax/thrift.vim create mode 100644 runtime/syntax/tsv.vim create mode 100644 runtime/syntax/typst.vim (limited to 'runtime/syntax') diff --git a/runtime/syntax/antlr4.vim b/runtime/syntax/antlr4.vim new file mode 100644 index 0000000..33cc865 --- /dev/null +++ b/runtime/syntax/antlr4.vim @@ -0,0 +1,30 @@ +" Vim syntax file +" Language: ANTLR4, ANother Tool for Language Recognition v4 +" Maintainer: Yinzuo Jiang +" Last Change: 2024 July 09 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Keywords. See https://github.com/antlr/antlr4/blob/4.13.1/doc/lexicon.md +syn keyword antlr4Include import +" https://github.com/antlr/antlr4/blob/4.13.1/doc/options.md +" https://github.com/antlr/antlr4/blob/4.13.1/doc/grammars.md +syn keyword antlr4Structure fragment lexer parser grammar options channels tokens mode +syn keyword antlr4Statement returns locals +syn keyword antlr4Exceptions throws catch finally + +" Comments. +syn keyword antlr4Todo contained TODO FIXME XXX NOTE +syn region antlr4Comment start="//" end="$" contains=antlr4Todo,@Spell +syn region antlr4Comment start="/\*" end="\*/" contains=antlr4Todo,@Spell + +hi def link antlr4Include Include +hi def link antlr4Structure Structure +hi def link antlr4Statement Statement +hi def link antlr4Exceptions Structure +hi def link antlr4Comment Comment + +let b:current_syntax = "antlr4" diff --git a/runtime/syntax/asy.vim b/runtime/syntax/asy.vim new file mode 100644 index 0000000..ed2bf71 --- /dev/null +++ b/runtime/syntax/asy.vim @@ -0,0 +1,243 @@ +" Vim syntax file +" Language: Asymptote +" Maintainer: Avid Seeker +" Andy Hammerlindl +" Last Change: 2022 Jan 05 + +" Hacked together from Bram Moolenaar's C syntax file, and Claudio Fleiner's +" Java syntax file. + +if exists("b:current_syntax") + finish +endif + +" useful C/C++/Java keywords +syn keyword asyStatement break return continue unravel +syn keyword asyConditional if else +syn keyword asyRepeat while for do +syn keyword asyExternal access from import include +syn keyword asyOperator new operator + +" basic asymptote keywords +syn keyword asyConstant VERSION +syn keyword asyConstant true false default infinity inf nan +syn keyword asyConstant null nullframe nullpath nullpen +syn keyword asyConstant intMin intMax realMin realMax +syn keyword asyConstant realEpsilon realDigits +syn keyword asyPathSpec and cycle controls tension atleast curl +syn keyword asyStorageClass static public restricted private explicit +syn keyword asyStructure struct typedef +syn keyword asyType void bool bool3 int real string file +syn keyword asyType pair triple transform guide path pen frame +syn keyword asyType picture + +" module specific keywords +if exists("asy_syn_plain") + syn keyword asyConstant currentpicture currentpen defaultpen + syn keyword asyConstant inch inches cm mm bp pt up down right left + syn keyword asyConstant E NE N NW W SW S SE + syn keyword asyConstant ENE NNE NNW WNW WSW SSW SSE ESE + syn keyword asyConstant I pi twopi + syn keyword asyConstant CCW CW + syn keyword asyConstant undefined sqrtEpsilon Align mantissaBits + syn keyword asyConstant identity zeroTransform invert + syn keyword asyConstant stdin stdout + syn keyword asyConstant unitsquare unitcircle circleprecision + syn keyword asyConstant solid dotted Dotted dashed dashdotted + syn keyword asyConstant longdashed longdashdotted + syn keyword asyConstant squarecap roundcap extendcap + syn keyword asyConstant miterjoin roundjoin beveljoin + syn keyword asyConstant zerowinding evenodd basealign nobasealign + syn keyword asyConstant black white gray red green blue Cyan Magenta + syn keyword asyConstant Yellow Black cyan magenta yellow palered + syn keyword asyConstant palegreen paleblue palecyan palemagenta + syn keyword asyConstant paleyellow palegray lightred lightgreen + syn keyword asyConstant lightblue lightcyan lightmagenta lightyellow + syn keyword asyConstant lightgray mediumred mediumgreen mediumblue + syn keyword asyConstant mediumcyan mediummagenta mediumyellow + syn keyword asyConstant mediumgray heavyred heavygreen heavyblue + syn keyword asyConstant heavycyan heavymagenta lightolive heavygray + syn keyword asyConstant deepred deepgreen deepblue deepcyan + syn keyword asyConstant deepmagenta deepyellow deepgray darkred + syn keyword asyConstant darkgreen darkblue darkcyan darkmagenta + syn keyword asyConstant darkolive darkgray orange fuchsia chartreuse + syn keyword asyConstant springgreen purple royalblue salmon brown + syn keyword asyConstant olive darkbrown pink palegrey lightgrey + syn keyword asyConstant mediumgrey grey heavygrey deepgrey darkgrey + + if exists("asy_syn_texcolors") + syn keyword asyConstant GreenYellow Yellow Goldenrod Dandelion + syn keyword asyConstant Apricot Peach Melon YellowOrange Orange + syn keyword asyConstant BurntOrange Bittersweet RedOrange Mahogany + syn keyword asyConstant Maroon BrickRed Red OrangeRed RubineRed + syn keyword asyConstant WildStrawberry Salmon CarnationPink Magenta + syn keyword asyConstant VioletRed Rhodamine Mulberry RedViolet + syn keyword asyConstant Fuchsia Lavender Thistle Orchid DarkOrchid + syn keyword asyConstant Purple Plum Violet RoyalPurple BlueViolet + syn keyword asyConstant Periwinkle CadetBlue CornflowerBlue + syn keyword asyConstant MidnightBlue NavyBlue RoyalBlue Blue + syn keyword asyConstant Cerulean Cyan ProcessBlue SkyBlue Turquoise + syn keyword asyConstant TealBlue Aquamarine BlueGreen Emerald + syn keyword asyConstant JungleGreen SeaGreen Green ForestGreen + syn keyword asyConstant PineGreen LimeGreen YellowGreen SpringGreen + syn keyword asyConstant OliveGreen RawSienna Sepia Brown Tan Gray + syn keyword asyConstant Black White + endif + + if exists("asy_syn_x11colors") + syn keyword asyConstant AliceBlue AntiqueWhite Aqua Aquamarine Azure + syn keyword asyConstant Beige Bisque Black BlanchedAlmond Blue + syn keyword asyConstant BlueViolet Brown BurlyWood CadetBlue + syn keyword asyConstant Chartreuse Chocolate Coral CornflowerBlue + syn keyword asyConstant Cornsilk Crimson Cyan DarkBlue DarkCyan + syn keyword asyConstant DarkGoldenrod DarkGray DarkGreen DarkKhaki + syn keyword asyConstant DarkMagenta DarkOliveGreen DarkOrange + syn keyword asyConstant DarkOrchid DarkRed DarkSalmon DarkSeaGreen + syn keyword asyConstant DarkSlateBlue DarkSlateGray DarkTurquoise + syn keyword asyConstant DarkViolet DeepPink DeepSkyBlue DimGray + syn keyword asyConstant DodgerBlue FireBrick FloralWhite ForestGreen + syn keyword asyConstant Fuchsia Gainsboro GhostWhite Gold Goldenrod + syn keyword asyConstant Gray Green GreenYellow Honeydew HotPink + syn keyword asyConstant IndianRed Indigo Ivory Khaki Lavender + syn keyword asyConstant LavenderBlush LawnGreen LemonChiffon + syn keyword asyConstant LightBlue LightCoral LightCyan + syn keyword asyConstant LightGoldenrodYellow LightGreen LightGrey + syn keyword asyConstant LightPink LightSalmon LightSeaGreen + syn keyword asyConstant LightSkyBlue LightSlateGray LightSteelBlue + syn keyword asyConstant LightYellow Lime LimeGreen Linen Magenta + syn keyword asyConstant Maroon MediumAquamarine MediumBlue + syn keyword asyConstant MediumOrchid MediumPurple MediumSeaGreen + syn keyword asyConstant MediumSlateBlue MediumSpringGreen + syn keyword asyConstant MediumTurquoise MediumVioletRed MidnightBlue + syn keyword asyConstant MintCream MistyRose Moccasin NavajoWhite + syn keyword asyConstant Navy OldLace Olive OliveDrab Orange + syn keyword asyConstant OrangeRed Orchid PaleGoldenrod PaleGreen + syn keyword asyConstant PaleTurquoise PaleVioletRed PapayaWhip + syn keyword asyConstant PeachPuff Peru Pink Plum PowderBlue Purple + syn keyword asyConstant Red RosyBrown RoyalBlue SaddleBrown Salmon + syn keyword asyConstant SandyBrown SeaGreen Seashell Sienna Silver + syn keyword asyConstant SkyBlue SlateBlue SlateGray Snow SpringGreen + syn keyword asyConstant SteelBlue Tan Teal Thistle Tomato Turquoise + syn keyword asyConstant Violet Wheat White WhiteSmoke Yellow + syn keyword asyConstant YellowGreen + endif + + if exists("asy_syn_three") + syn keyword asyType path3 guide3 transform3 + syn keyword asyType projection light material patch surface tube + syn keyword asyConstant currentprojection currentlight defaultrender + syn keyword asyConstant identity4 O X Y Z + syn keyword asyConstant nolight nullpens + syn keyword asyConstant unitsphere unithemisphere unitplane octant1 + syn keyword asyConstant unitcone unitsolidcone unitcube unitcylinder + syn keyword asyConstant unitdisk unittube + endif +endif + + +" string constants +syn region asyCString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=asyCSpecial +syn match asyCSpecial display contained +\\\(['"?\\abfnrtv]\|\o\{1,3}\)+ +syn match asyCSpecial display contained +\\\(x[0-9A-F]\{1,2\}\|$\)+ +" double quoted strings only special character is \" +syn region asyString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=asySpecial +syn match asySpecial display contained +\(\\\)\@1 -" Maintainer: Evan Hanson -" Repository: https://git.foldling.org/vim-scheme.git -" URL: https://foldling.org/vim/syntax/chicken.vim -" Notes: This is supplemental syntax, to be loaded after the core Scheme -" syntax file (syntax/scheme.vim). Enable it by setting b:is_chicken=1 -" and filetype=scheme. +" Language: Scheme (CHICKEN) +" Last Change: 2024 Jun 21 +" Author: Evan Hanson +" Maintainer: Evan Hanson +" Repository: https://git.foldling.org/vim-scheme.git +" URL: https://foldling.org/vim/syntax/chicken.vim +" Notes: This is supplemental syntax, to be loaded after the core +" Scheme syntax file (syntax/scheme.vim). Enable it by +" setting b:is_chicken=1 and filetype=scheme. " Only to be used on top of the Scheme syntax. if !exists('b:did_scheme_syntax') diff --git a/runtime/syntax/csv.vim b/runtime/syntax/csv.vim new file mode 100644 index 0000000..848029a --- /dev/null +++ b/runtime/syntax/csv.vim @@ -0,0 +1,39 @@ +vim9script + +# Maintainer: Maxim Kim +# Last Update: 2024-06-18 + +if exists("b:current_syntax") + finish +endif + +var delimiter = get(b:, "csv_delimiter", ",") + +# generate bunch of following syntaxes: +# syntax match csvCol8 /.\{-}\(,\|$\)/ nextgroup=escCsvCol0,csvCol0 +# syntax region escCsvCol8 start=/ *"\([^"]*""\)*[^"]*/ end=/" *\(,\|$\)/ nextgroup=escCsvCol0,csvCol0 +for col in range(8, 0, -1) + var ncol = (col == 8 ? 0 : col + 1) + exe $'syntax match csvCol{col}' .. ' /.\{-}\(' .. delimiter .. '\|$\)/ nextgroup=escCsvCol' .. ncol .. ',csvCol' .. ncol + exe $'syntax region escCsvCol{col}' .. ' start=/ *"\([^"]*""\)*[^"]*/ end=/" *\(' .. delimiter .. '\|$\)/ nextgroup=escCsvCol' .. ncol .. ',csvCol' .. ncol +endfor + +hi def link csvCol1 Statement +hi def link csvCol2 Constant +hi def link csvCol3 Type +hi def link csvCol4 PreProc +hi def link csvCol5 Identifier +hi def link csvCol6 Special +hi def link csvCol7 String +hi def link csvCol8 Comment + +hi def link escCsvCol1 csvCol1 +hi def link escCsvCol2 csvCol2 +hi def link escCsvCol3 csvCol3 +hi def link escCsvCol4 csvCol4 +hi def link escCsvCol5 csvCol5 +hi def link escCsvCol6 csvCol6 +hi def link escCsvCol7 csvCol7 +hi def link escCsvCol8 csvCol8 + +b:current_syntax = "csv" diff --git a/runtime/syntax/debcopyright.vim b/runtime/syntax/debcopyright.vim index 6f76b5c..cb9e896 100644 --- a/runtime/syntax/debcopyright.vim +++ b/runtime/syntax/debcopyright.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Debian copyright file " Maintainer: Debian Vim Maintainers -" Last Change: 2023 Jan 16 +" Last Change: 2024 Jul 28 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcopyright.vim " Standard syntax initialization @@ -15,7 +15,7 @@ set cpo&vim syn case match syn match debcopyrightUrl "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" -syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-Excluded\%(-[-a-zA-Z0-9]\+\)\=\): *" +syn match debcopyrightKey "^\%(Format\|Upstream-Name\|Upstream-Contact\|Disclaimer\|Source\|Comment\|Files\|Copyright\|License\|Files-\%(Excluded\|Included\)\%(-[-a-zA-Z0-9]\+\)\=\): *" syn match debcopyrightEmail "[_=[:alnum:]\.+-]\+@[[:alnum:]\./\-]\+" syn match debcopyrightEmail "<.\{-}>" syn match debcopyrightComment "^#.*$" contains=@Spell diff --git a/runtime/syntax/dockerfile.vim b/runtime/syntax/dockerfile.vim index ce52e69..6ec71fc 100644 --- a/runtime/syntax/dockerfile.vim +++ b/runtime/syntax/dockerfile.vim @@ -1,6 +1,6 @@ " dockerfile.vim - Syntax highlighting for Dockerfiles " Maintainer: Honza Pokorny -" Last Change: 2020 Feb 11 +" Last Change: 2024 Jul 03 " License: BSD " https://docs.docker.com/engine/reference/builder/ @@ -34,7 +34,7 @@ syntax region dockerfileJSON contained keepend start=/\v\[/ skip=/\v\\\_./ end syntax region dockerfileShell contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=@Shell syntax region dockerfileValue contained keepend start=/\v/ skip=/\v\\\_./ end=/\v$/ contains=dockerfileString -syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/ +syntax region dockerfileComment start=/\v^\s*#/ end=/\v$/ contains=@Spell set commentstring=#\ %s hi def link dockerfileString String diff --git a/runtime/syntax/dosbatch.vim b/runtime/syntax/dosbatch.vim index 5560199..0c3e99b 100644 --- a/runtime/syntax/dosbatch.vim +++ b/runtime/syntax/dosbatch.vim @@ -3,6 +3,7 @@ " Maintainer: Mike Williams " Filenames: *.bat " Last Change: 3rd February 2024 +" 2024 Aug 14 by Vim Project: improve syntax (#15453) " " Options Flags: " dosbatch_cmdextversion - 1 = Windows NT, 2 = Windows 2000 [default] @@ -45,7 +46,7 @@ syn match dosbatchString "\|]\|\^\@<=[)>|]\)*"lc=4 contains=dosbatchV syn match dosbatchEchoOperator "\" +syn match dosbatchArgument "%%[a-z]\>" if dosbatch_cmdextversion == 1 syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>" else @@ -102,9 +103,11 @@ else syn match dosbatchColonCommentErr contained "\s*:\s*:.*$" endif syn match dosbatchColonCommentErr contained "\s*:\s*:[^)]*\(\(\n\s*\)\?)\)\@=" -syn region dosbatchCodeBlock transparent start=+(+ end=+)+ contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator,@dosbatchCodeBlockComment,dosbatchColonCommentErr,dosbatchCodeBlock +syn region dosbatchCodeBlock transparent start=+(+ end=+)+ contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator,dosbatchIfOperator,@dosbatchCodeBlockComment,dosbatchColonCommentErr,dosbatchCodeBlock syn match dosbatchCodeBlockErr ")" +syn sync match dosbatchSyncCodeBlock grouphere NONE "^)\s*$" + syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy syn keyword dosbatchImplicit date del dir diskcomp diskcopy doskey echo endlocal diff --git a/runtime/syntax/dune.vim b/runtime/syntax/dune.vim index b425405..3cfb47f 100644 --- a/runtime/syntax/dune.vim +++ b/runtime/syntax/dune.vim @@ -4,6 +4,7 @@ " Anton Kochkov " URL: https://github.com/ocaml/vim-ocaml " Last Change: +" 2023 Nov 24 - Add end-of-line strings (Samuel Hym) " 2019 Feb 27 - Add newer keywords to the syntax (Simon Cruanes) " 2018 May 8 - Check current_syntax (Kawahara Satoru) " 2018 Mar 29 - Extend jbuild syntax with more keywords (Petter A. Urkedal) @@ -38,6 +39,8 @@ syn keyword lispFunc ignore-stdout ignore-stderr ignore-outputs syn keyword lispFunc with-stdout-to with-stderr-to with-outputs-to syn keyword lispFunc write-file system bash +syn region lispString start=+"\\[>|]+ end=+$+ contains=@Spell + syn cluster lispBaseListCluster add=duneVar syn match duneVar '\${[@<^]}' containedin=lispSymbol syn match duneVar '\${\k\+\(:\k\+\)\?}' containedin=lispSymbol diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim index 91150bc..64d5bee 100644 --- a/runtime/syntax/fstab.vim +++ b/runtime/syntax/fstab.vim @@ -2,8 +2,8 @@ " Language: fstab file " Maintainer: Radu Dineiu " URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim -" Last Change: 2023 Feb 19 -" Version: 1.6.3 +" Last Change: 2024 Jul 11 +" Version: 1.6.4 " " Credits: " David Necas (Yeti) @@ -35,7 +35,7 @@ syn match fsOperator /[,=:#]/ " Device syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained -syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs +syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs tracefs overlay syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID syn keyword fsDeviceKeyword contained PARTLABEL nextgroup=fsDevicePARTLABEL @@ -56,7 +56,7 @@ syn keyword fsMountPointKeyword contained none swap " Type syn cluster fsTypeCluster contains=fsTypeKeyword,fsTypeUnknown syn match fsTypeUnknown /\s\+\zs\w\+/ contained -syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs +syn keyword fsTypeKeyword contained adfs ados affs anon_inodefs atfs audiofs auto autofs bdev befs bfs btrfs binfmt_misc cd9660 ceph cfs cgroup cifs coda coherent configfs cpuset cramfs debugfs devfs devpts devtmpfs dlmfs e2compr ecryptfs efivarfs efs erofs exfat ext2 ext2fs ext3 ext4 f2fs fdesc ffs filecore fuse fuseblk fusectl gfs2 hfs hfsplus hpfs hugetlbfs iso9660 jffs jffs2 jfs kernfs lfs linprocfs mfs minix mqueue msdos ncpfs nfs nfs4 nfsd nilfs2 none ntfs ntfs3 null nwfs ocfs2 omfs overlay ovlfs pipefs portal proc procfs pstore ptyfs pvfs2 qnx4 qnx6 reiserfs ramfs romfs rpc_pipefs securityfs shm smbfs spufs squashfs sockfs sshfs std subfs swap sysfs sysv tcfs tmpfs tracefs ubifs udf ufs umap umsdos union usbfs userfs v9fs vfat virtiofs vs3fs vxfs wrapfs wvfs xenfs xenix xfs zisofs zonefs " Options " ------- @@ -80,10 +80,10 @@ syn match fsOptionsKeywords contained /\ " Doug Kearns " URL: https://github.com/vim-jp/syntax-vim-ex -" Last Change: 2024 Jun 17 +" Last Change: 2024 Aug 23 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. @@ -29,15 +29,13 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='' -syn keyword vimCommand contained 2mat[ch] 3mat[ch] - " Lower priority for _new_ to distinguish constructors from the command. syn match vimCommand contained "\(\@!" syn match vimCommand contained "\" syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns " vimOptions are caught only when contained in a vimSet {{{2 -" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='' +" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod' " vimOptions: These are the turn-off setting variants {{{2 " GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR='' @@ -46,7 +44,7 @@ syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue Di " GEN_SYN_VIM: vimOption invertible, START_STR='syn keyword vimOption contained', END_STR='' " termcap codes (which can also be set) {{{2 -" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='' +" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod' " term key codes syn keyword vimOption contained t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku syn match vimOption contained "t_%1" @@ -79,7 +77,11 @@ syn case match "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 -" Set up folding commands for this syntax highlighting file {{{2 +" Set up commands for this syntax highlighting file {{{2 + +com! -nargs=* Vim9 execute s:vim9script ? "" : "contained" +com! -nargs=* VimL execute s:vim9script ? "contained" : "" + if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]' if g:vimsyn_folding =~# 'a' com! -nargs=* VimFolda fold @@ -162,6 +164,14 @@ else let s:vimsyn_maxlines= 60 endif +" Nulls {{{2 +" ===== +Vim9 syn keyword vim9Null null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string + +" Booleans {{{2 +" ======== +Vim9 syn keyword vim9Boolean true false + " Numbers {{{2 " ======= syn case ignore @@ -175,7 +185,8 @@ syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSub syn case match " All vimCommands are contained by vimIsCommand. {{{2 -syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate +syn cluster vimCmdList contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList +syn cluster vim9CmdList contains=vim9Const,vim9Final,vim9For,vim9Var syn match vimCmdSep "[:|]\+" skipwhite nextgroup=@vimCmdList,vimSubst1 syn match vimIsCommand "\<\%(\h\w*\|[23]mat\%[ch]\)\>" contains=vimCommand syn match vimVar contained "\<\h[a-zA-Z0-9#_]*\>" @@ -186,7 +197,8 @@ syn match vimVar "\s\zs&t_k;" syn match vimFBVar contained "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>" syn keyword vimCommand contained in -syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar +syn cluster vimExprList contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList +syn cluster vim9ExprList contains=vim9Boolean,vim9Null " Insertions And Appends: insert append {{{2 " (buftype != nofile test avoids having append, change, insert show up in the command window) @@ -206,6 +218,10 @@ syn match vimBehave "\" nextgroup=vimBehaveBang,vimBehaveModel,vi syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite syn keyword vimBehaveModel contained mswin xterm +" Call {{{2 +" ==== +syn match vimCall "\" skipwhite nextgroup=vimFunc + " Exception Handling {{{2 syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList syn keyword vimCatch cat[ch] skipwhite nextgroup=vimCatchPattern @@ -240,8 +256,8 @@ syn keyword vimAugroupKey contained aug[roup] skipwhite nextgroup=vimAugroupBan " Operators: {{{2 " ========= -syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar -syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile +syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull +syn match vimOper "||\|&&\|[-+*/%.!]" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\(\" skipwhite nextgroup=vimString,vimSpecFile syn region vimOperParen matchgroup=vimParenSep start="(" end=")" contains=@vimOperGroup @@ -256,8 +272,8 @@ syn cluster vimFuncList contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFunc syn cluster vimDefList contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag syn cluster vimFuncBodyCommon contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold -syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert -syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment +syn cluster vimFuncBodyList contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet +syn cluster vimDefBodyList contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For syn region vimFuncPattern contained matchgroup=vimOper start="/" end="$" contains=@vimSubstList syn match vimFunction "\" skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey @@ -277,19 +293,19 @@ syn keyword vimFuncKey contained fu[nction] syn keyword vimDefKey contained def syn keyword vimMethodName contained empty len string -syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue -syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType contains=vimDefParam,vim9Comment +syn region vimFuncParams contained matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError contains=vimFuncParam,@vimContinue +syn region vimDefParams contained matchgroup=Delimiter start="(" end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError contains=vimDefParam,vim9Comment,vimFuncParamEquals syn match vimFuncParam contained "\<\h\w*\>\|\.\.\." skipwhite nextgroup=vimFuncParamEquals syn match vimDefParam contained "\<\h\w*\>" skipwhite nextgroup=vimParamType,vimFuncParamEquals syn match vimFuncParamEquals contained "=" skipwhite nextgroup=@vimExprList -syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod +syn match vimFuncMod contained "\<\%(abort\|closure\|dict\|range\)\>" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError -syn region vimFuncBody contained start="^" matchgroup=vimCommand end="\" contains=@vimFuncBodyList -syn region vimDefBody contained start="^" matchgroup=vimCommand end="\" contains=@vimDefBodyList +syn region vimFuncBody contained start="^.\=" matchgroup=vimCommand end="\" contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError +syn region vimDefBody contained start="^.\=" matchgroup=vimCommand end="\" contains=@vimDefBodyList skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError -syn match vimEndfunction "\" -syn match vimEnddef "\" +syn match vimEndfunction "\" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError +syn match vimEnddef "\" skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f' syn region vimFuncFold start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*(" end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent @@ -302,9 +318,9 @@ syn match vimFuncBlank contained "\s\+" " Types: {{{2 " ===== -" vimTypes : new for vim9 -syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent -syn match vimParamType contained ":\s\+\a" skipwhite skipnl nextgroup=vimFuncParamEquals contains=vimTypeSep,@vimType + +syn region vimReturnType contained start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent +syn match vimParamType contained ":\s" skipwhite skipnl nextgroup=@vimType contains=vimTypeSep syn match vimTypeSep contained ":\s\@=" skipwhite nextgroup=@vimType syn keyword vimType contained any blob bool channel float job number string void @@ -331,7 +347,7 @@ else endif syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment -syn region vimKeymap matchgroup=vimCommand start="\" end="\%$" contains=vimKeymapStart +syn region vimLoadkeymap matchgroup=vimCommand start="\" end="\%$" contains=vimKeymapStart " Special Filenames, Modifiers, Extension Removal: {{{2 " =============================================== @@ -379,35 +395,26 @@ if get(g:, "vimsyn_comment_strings", 1) endif if s:vim9script - syn match vimComment excludenl +\s"[^\-:.%#=*].*$+lc=1 contains=@vimCommentGroup,vimCommentString contained - syn match vimComment +\]*>\=>" -syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr -syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr +syn region vimString oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation +syn region vimString oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation syn region vimStringInterpolationExpr oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList syn match vimStringInterpolationBrace contained "{{" syn match vimStringInterpolationBrace contained "}}" +syn cluster vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace " Substitutions: {{{2 " ============= @@ -498,28 +506,45 @@ syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1 syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' " Set command and associated set-options (vimOptions) with comment {{{2 -syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,@vimComment,vimSetString,vimSetMod -syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar -syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar +syn match vimSet "\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimSetRegion +syn region vimSetRegion contained start="\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*["#]\\ + matchgroup=vimCmdSep end="|" end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=@vimComment,@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap +syn region vimSetEqual contained matchgroup=vimOper start="[=:]\|[-+^]=" skip=+\\\\\|\\|\|\\\s\|\n\s*\\\|\n\s*["#]\\ \|^\s*\\\|^\s*["#]\\ + matchgroup=vimCmdSep end="|" end="\ze\s" end="$" contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep +syn match vimSetBang contained "\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap +syn keyword vimSetAll contained all nextgroup=vimSetMod +syn keyword vimSetTermcap contained termcap +syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar syn match vimSetSep contained "[,:]" -syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" +syn match vimSetMod contained "\a\@1<=\%(&vim\=\|[!&?<]\)" -" Let And Var: {{{2 -" =========== -syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList -syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList -syn region vimVarList contained start="\[" end="]" contains=vimVar,vimContinue +" Variable Declarations: {{{2 +" ===================== +VimL syn keyword vimLet let skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList +VimL syn keyword vimConst cons[t] skipwhite nextgroup=vimVar,vimVarList +syn region vimVarList contained start="\[" end="]" contains=vimVar,@vimContinue -syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars +VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars syn match vimUnletBang contained "!" skipwhite nextgroup=vimUnletVars syn region vimUnletVars contained start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber -VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' extend -syn keyword vimLet var skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc +VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' extend +VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\%(\s*\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' extend +VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1\=\z2$' contains=@vimStringInterpolation extend +VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\z1$' contains=@vimStringInterpolation extend + +Vim9 syn keyword vim9Const const skipwhite nextgroup=vim9Variable,vim9VariableList +Vim9 syn keyword vim9Final final skipwhite nextgroup=vim9Variable,vim9VariableList +Vim9 syn keyword vim9Var var skipwhite nextgroup=vim9Variable,vim9VariableList + +syn match vim9Variable contained "\<\h\w*\>" skipwhite nextgroup=vimTypeSep,vimLetHereDoc +syn region vim9VariableList contained start="\[" end="]" contains=vim9Variable,@vimContinue " For: {{{2 " === -syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList +if s:vim9script + syn keyword vim9For for skipwhite nextgroup=vim9Variable,vim9VariableList +else + syn keyword vimFor for skipwhite nextgroup=vimVar,vimVarList +endif " Abbreviations: {{{2 " ============= @@ -561,12 +586,14 @@ syn region vimExecute matchgroup=vimCommand start="\" skip=+\\|\|\ " Maps: {{{2 " ==== -syn match vimMap "\\ze\s*(\@!" skipwhite nextgroup=vimMapMod,vimMapLhs -syn match vimMap "\" skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs +syn keyword vimMap no[remap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs " GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod' -syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod -" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs' +syn keyword vimMap mapc[lear] skipwhite nextgroup=vimMapBang,vimMapMod +" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs' +syn keyword vimUnmap unm[ap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs + syn match vimMapLhs contained "\%(.\|\S\)\+" contains=vimCtrlChar,vimNotation skipwhite nextgroup=vimMapRhs syn match vimMapLhs contained "\%(.\|\S\)\+\ze\s*$" contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue syn match vimMapBang contained "\a\@1<=!" skipwhite nextgroup=vimMapMod,vimMapLhs @@ -632,6 +659,8 @@ syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\ syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\" contains=vimNotation,vimMethodName syn keyword vimFuncEcho contained ec ech echo +syn match vimMap "\\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!' @@ -649,6 +678,15 @@ endif syn match vimNotFunc "\\|\\|\\|\" skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation +" Match: {{{2 +" ===== +syn match vimMatch "\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone +syn match vimMatchGroup contained "[[:alnum:]._-]\+" skipwhite nextgroup=vimMatchPattern +syn case ignore +syn keyword vimMatchNone contained none +syn case match +syn region vimMatchPattern contained matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline + " Norm: {{{2 " ==== syn match vimNorm "\ +" Last Modified: 2024 Jul 21 +" Upstream: https://github.com/tikhomirov/vim-glsl + +if exists('b:current_syntax') + finish +endif + +" Statements +syn keyword glslConditional if else switch case default +syn keyword glslRepeat for while do +syn keyword glslStatement discard return break continue + +" Comments +syn keyword glslTodo contained TODO FIXME XXX NOTE +syn region glslCommentL start="//" skip="\\$" end="$" keepend contains=glslTodo,@Spell +syn region glslComment matchgroup=glslCommentStart start="/\*" end="\*/" extend contains=glslTodo,@Spell + +" Preprocessor +syn region glslPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|else\|elif\|endif\)" skip="\\$" end="$" keepend +syn region glslDefine start="^\s*#\s*\(define\|undef\)" skip="\\$" end="$" keepend +syn keyword glslTokenConcat ## +syn keyword glslPredefinedMacro __LINE__ __FILE__ __VERSION__ GL_ES +syn region glslPreProc start="^\s*#\s*\(error\|pragma\|extension\|version\|line\)" skip="\\$" end="$" keepend +syn region glslInclude start="^\s*#\s*include" skip="\\$" end="$" keepend + +" Folding Blocks +syn region glslCurlyBlock start="{" end="}" transparent fold +syn region glslParenBlock start="(" end=")" transparent fold + +" Boolean Constants +syn keyword glslBoolean true false + +" Integer Numbers +syn match glslDecimalInt display "\<\(0\|[1-9]\d*\)[uU]\?" +syn match glslOctalInt display "\<0\o\+[uU]\?" +syn match glslHexInt display "\<0[xX]\x\+[uU]\?" + +" Float Numbers +syn match glslFloat display "\<\d\+\.\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\d\+[eE][+-]\=\d\+\(lf\|LF\|f\|F\)\=" +syn match glslFloat display "\<\d\+\.\d\+\([eE][+-]\=\d\+\)\=\(lf\|LF\|f\|F\)\=" + +" Swizzles +syn match glslSwizzle display /\.[xyzw]\{1,4\}\>/ +syn match glslSwizzle display /\.[rgba]\{1,4\}\>/ +syn match glslSwizzle display /\.[stpq]\{1,4\}\>/ + +" Structure +syn keyword glslStructure struct nextgroup=glslIdentifier skipwhite skipempty + +syn match glslIdentifier contains=glslIdentifierPrime "\%([a-zA-Z_]\)\%([a-zA-Z0-9_]\)*" display contained + +" Types +syn keyword glslType accelerationStructureEXT +syn keyword glslType atomic_uint +syn keyword glslType bool +syn keyword glslType bvec2 +syn keyword glslType bvec3 +syn keyword glslType bvec4 +syn keyword glslType dmat2 +syn keyword glslType dmat2x2 +syn keyword glslType dmat2x3 +syn keyword glslType dmat2x4 +syn keyword glslType dmat3 +syn keyword glslType dmat3x2 +syn keyword glslType dmat3x3 +syn keyword glslType dmat3x4 +syn keyword glslType dmat4 +syn keyword glslType dmat4x2 +syn keyword glslType dmat4x3 +syn keyword glslType dmat4x4 +syn keyword glslType double +syn keyword glslType dvec2 +syn keyword glslType dvec3 +syn keyword glslType dvec4 +syn keyword glslType float +syn keyword glslType iimage1D +syn keyword glslType iimage1DArray +syn keyword glslType iimage2D +syn keyword glslType iimage2DArray +syn keyword glslType iimage2DMS +syn keyword glslType iimage2DMSArray +syn keyword glslType iimage2DRect +syn keyword glslType iimage3D +syn keyword glslType iimageBuffer +syn keyword glslType iimageCube +syn keyword glslType iimageCubeArray +syn keyword glslType image1D +syn keyword glslType image1DArray +syn keyword glslType image2D +syn keyword glslType image2DArray +syn keyword glslType image2DMS +syn keyword glslType image2DMSArray +syn keyword glslType image2DRect +syn keyword glslType image3D +syn keyword glslType imageBuffer +syn keyword glslType imageCube +syn keyword glslType imageCubeArray +syn keyword glslType int +syn keyword glslType isampler1D +syn keyword glslType isampler1DArray +syn keyword glslType isampler2D +syn keyword glslType isampler2DArray +syn keyword glslType isampler2DMS +syn keyword glslType isampler2DMSArray +syn keyword glslType isampler2DRect +syn keyword glslType isampler3D +syn keyword glslType isamplerBuffer +syn keyword glslType isamplerCube +syn keyword glslType isamplerCubeArray +syn keyword glslType ivec2 +syn keyword glslType ivec3 +syn keyword glslType ivec4 +syn keyword glslType mat2 +syn keyword glslType mat2x2 +syn keyword glslType mat2x3 +syn keyword glslType mat2x4 +syn keyword glslType mat3 +syn keyword glslType mat3x2 +syn keyword glslType mat3x3 +syn keyword glslType mat3x4 +syn keyword glslType mat4 +syn keyword glslType mat4x2 +syn keyword glslType mat4x3 +syn keyword glslType mat4x4 +syn keyword glslType rayQueryEXT +syn keyword glslType sampler1D +syn keyword glslType sampler1DArray +syn keyword glslType sampler1DArrayShadow +syn keyword glslType sampler1DShadow +syn keyword glslType sampler2D +syn keyword glslType sampler2DArray +syn keyword glslType sampler2DArrayShadow +syn keyword glslType sampler2DMS +syn keyword glslType sampler2DMSArray +syn keyword glslType sampler2DRect +syn keyword glslType sampler2DRectShadow +syn keyword glslType sampler2DShadow +syn keyword glslType sampler3D +syn keyword glslType samplerBuffer +syn keyword glslType samplerCube +syn keyword glslType samplerCubeArray +syn keyword glslType samplerCubeArrayShadow +syn keyword glslType samplerCubeShadow +syn keyword glslType uimage1D +syn keyword glslType uimage1DArray +syn keyword glslType uimage2D +syn keyword glslType uimage2DArray +syn keyword glslType uimage2DMS +syn keyword glslType uimage2DMSArray +syn keyword glslType uimage2DRect +syn keyword glslType uimage3D +syn keyword glslType uimageBuffer +syn keyword glslType uimageCube +syn keyword glslType uimageCubeArray +syn keyword glslType uint +syn keyword glslType usampler1D +syn keyword glslType usampler1DArray +syn keyword glslType usampler2D +syn keyword glslType usampler2DArray +syn keyword glslType usampler2DMS +syn keyword glslType usampler2DMSArray +syn keyword glslType usampler2DRect +syn keyword glslType usampler3D +syn keyword glslType usamplerBuffer +syn keyword glslType usamplerCube +syn keyword glslType usamplerCubeArray +syn keyword glslType uvec2 +syn keyword glslType uvec3 +syn keyword glslType uvec4 +syn keyword glslType vec2 +syn keyword glslType vec3 +syn keyword glslType vec4 +syn keyword glslType void + +" Qualifiers +syn keyword glslQualifier align +syn keyword glslQualifier attribute +syn keyword glslQualifier binding +syn keyword glslQualifier buffer +syn keyword glslQualifier callableDataEXT +syn keyword glslQualifier callableDataInEXT +syn keyword glslQualifier ccw +syn keyword glslQualifier centroid +syn keyword glslQualifier centroid varying +syn keyword glslQualifier coherent +syn keyword glslQualifier column_major +syn keyword glslQualifier const +syn keyword glslQualifier cw +syn keyword glslQualifier depth_any +syn keyword glslQualifier depth_greater +syn keyword glslQualifier depth_less +syn keyword glslQualifier depth_unchanged +syn keyword glslQualifier early_fragment_tests +syn keyword glslQualifier equal_spacing +syn keyword glslQualifier flat +syn keyword glslQualifier fractional_even_spacing +syn keyword glslQualifier fractional_odd_spacing +syn keyword glslQualifier highp +syn keyword glslQualifier hitAttributeEXT +syn keyword glslQualifier in +syn keyword glslQualifier index +syn keyword glslQualifier inout +syn keyword glslQualifier invariant +syn keyword glslQualifier invocations +syn keyword glslQualifier isolines +syn keyword glslQualifier layout +syn keyword glslQualifier line_strip +syn keyword glslQualifier lines +syn keyword glslQualifier lines_adjacency +syn keyword glslQualifier local_size_x +syn keyword glslQualifier local_size_y +syn keyword glslQualifier local_size_z +syn keyword glslQualifier location +syn keyword glslQualifier lowp +syn keyword glslQualifier max_vertices +syn keyword glslQualifier mediump +syn keyword glslQualifier nonuniformEXT +syn keyword glslQualifier noperspective +syn keyword glslQualifier offset +syn keyword glslQualifier origin_upper_left +syn keyword glslQualifier out +syn keyword glslQualifier packed +syn keyword glslQualifier patch +syn keyword glslQualifier pixel_center_integer +syn keyword glslQualifier point_mode +syn keyword glslQualifier points +syn keyword glslQualifier precise +syn keyword glslQualifier precision +syn keyword glslQualifier quads +syn keyword glslQualifier r11f_g11f_b10f +syn keyword glslQualifier r16 +syn keyword glslQualifier r16_snorm +syn keyword glslQualifier r16f +syn keyword glslQualifier r16i +syn keyword glslQualifier r16ui +syn keyword glslQualifier r32f +syn keyword glslQualifier r32i +syn keyword glslQualifier r32ui +syn keyword glslQualifier r8 +syn keyword glslQualifier r8_snorm +syn keyword glslQualifier r8i +syn keyword glslQualifier r8ui +syn keyword glslQualifier rayPayloadEXT +syn keyword glslQualifier rayPayloadInEXT +syn keyword glslQualifier readonly +syn keyword glslQualifier restrict +syn keyword glslQualifier rg16 +syn keyword glslQualifier rg16_snorm +syn keyword glslQualifier rg16f +syn keyword glslQualifier rg16i +syn keyword glslQualifier rg16ui +syn keyword glslQualifier rg32f +syn keyword glslQualifier rg32i +syn keyword glslQualifier rg32ui +syn keyword glslQualifier rg8 +syn keyword glslQualifier rg8_snorm +syn keyword glslQualifier rg8i +syn keyword glslQualifier rg8ui +syn keyword glslQualifier rgb10_a2 +syn keyword glslQualifier rgb10_a2ui +syn keyword glslQualifier rgba16 +syn keyword glslQualifier rgba16_snorm +syn keyword glslQualifier rgba16f +syn keyword glslQualifier rgba16i +syn keyword glslQualifier rgba16ui +syn keyword glslQualifier rgba32f +syn keyword glslQualifier rgba32i +syn keyword glslQualifier rgba32ui +syn keyword glslQualifier rgba8 +syn keyword glslQualifier rgba8_snorm +syn keyword glslQualifier rgba8i +syn keyword glslQualifier rgba8ui +syn keyword glslQualifier row_major +syn keyword glslQualifier sample +syn keyword glslQualifier shaderRecordEXT +syn keyword glslQualifier shared +syn keyword glslQualifier smooth +syn keyword glslQualifier std140 +syn keyword glslQualifier std430 +syn keyword glslQualifier stream +syn keyword glslQualifier triangle_strip +syn keyword glslQualifier triangles +syn keyword glslQualifier triangles_adjacency +syn keyword glslQualifier uniform +syn keyword glslQualifier varying +syn keyword glslQualifier vertices +syn keyword glslQualifier volatile +syn keyword glslQualifier writeonly +syn keyword glslQualifier xfb_buffer +syn keyword glslQualifier xfb_offset +syn keyword glslQualifier xfb_stride + +" Built-in Constants +syn keyword glslBuiltinConstant gl_CullDistance +syn keyword glslBuiltinConstant gl_HitKindBackFacingTriangleEXT +syn keyword glslBuiltinConstant gl_HitKindFrontFacingTriangleEXT +syn keyword glslBuiltinConstant gl_MaxAtomicCounterBindings +syn keyword glslBuiltinConstant gl_MaxAtomicCounterBufferSize +syn keyword glslBuiltinConstant gl_MaxClipDistances +syn keyword glslBuiltinConstant gl_MaxClipPlanes +syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxCombinedAtomicCounters +syn keyword glslBuiltinConstant gl_MaxCombinedClipAndCullDistances +syn keyword glslBuiltinConstant gl_MaxCombinedImageUniforms +syn keyword glslBuiltinConstant gl_MaxCombinedImageUnitsAndFragmentOutputs +syn keyword glslBuiltinConstant gl_MaxCombinedShaderOutputResources +syn keyword glslBuiltinConstant gl_MaxCombinedTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxComputeAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxComputeAtomicCounters +syn keyword glslBuiltinConstant gl_MaxComputeImageUniforms +syn keyword glslBuiltinConstant gl_MaxComputeTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxComputeUniformComponents +syn keyword glslBuiltinConstant gl_MaxComputeWorkGroupCount +syn keyword glslBuiltinConstant gl_MaxComputeWorkGroupSize +syn keyword glslBuiltinConstant gl_MaxCullDistances +syn keyword glslBuiltinConstant gl_MaxDrawBuffers +syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxFragmentAtomicCounters +syn keyword glslBuiltinConstant gl_MaxFragmentImageUniforms +syn keyword glslBuiltinConstant gl_MaxFragmentInputComponents +syn keyword glslBuiltinConstant gl_MaxFragmentInputVectors +syn keyword glslBuiltinConstant gl_MaxFragmentUniformComponents +syn keyword glslBuiltinConstant gl_MaxFragmentUniformVectors +syn keyword glslBuiltinConstant gl_MaxGeometryAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxGeometryAtomicCounters +syn keyword glslBuiltinConstant gl_MaxGeometryImageUniforms +syn keyword glslBuiltinConstant gl_MaxGeometryInputComponents +syn keyword glslBuiltinConstant gl_MaxGeometryOutputComponents +syn keyword glslBuiltinConstant gl_MaxGeometryOutputVertices +syn keyword glslBuiltinConstant gl_MaxGeometryTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxGeometryTotalOutputComponents +syn keyword glslBuiltinConstant gl_MaxGeometryUniformComponents +syn keyword glslBuiltinConstant gl_MaxGeometryVaryingComponents +syn keyword glslBuiltinConstant gl_MaxImageSamples +syn keyword glslBuiltinConstant gl_MaxImageUnits +syn keyword glslBuiltinConstant gl_MaxLights +syn keyword glslBuiltinConstant gl_MaxPatchVertices +syn keyword glslBuiltinConstant gl_MaxProgramTexelOffset +syn keyword glslBuiltinConstant gl_MaxSamples +syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxTessControlAtomicCounters +syn keyword glslBuiltinConstant gl_MaxTessControlImageUniforms +syn keyword glslBuiltinConstant gl_MaxTessControlInputComponents +syn keyword glslBuiltinConstant gl_MaxTessControlOutputComponents +syn keyword glslBuiltinConstant gl_MaxTessControlTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxTessControlTotalOutputComponents +syn keyword glslBuiltinConstant gl_MaxTessControlUniformComponents +syn keyword glslBuiltinConstant gl_MaxTessEvaluationAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxTessEvaluationAtomicCounters +syn keyword glslBuiltinConstant gl_MaxTessEvaluationImageUniforms +syn keyword glslBuiltinConstant gl_MaxTessEvaluationInputComponents +syn keyword glslBuiltinConstant gl_MaxTessEvaluationOutputComponents +syn keyword glslBuiltinConstant gl_MaxTessEvaluationTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxTessEvaluationUniformComponents +syn keyword glslBuiltinConstant gl_MaxTessGenLevel +syn keyword glslBuiltinConstant gl_MaxTessPatchComponents +syn keyword glslBuiltinConstant gl_MaxTextureCoords +syn keyword glslBuiltinConstant gl_MaxTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxTextureUnits +syn keyword glslBuiltinConstant gl_MaxTransformFeedbackBuffers +syn keyword glslBuiltinConstant gl_MaxTransformFeedbackInterleavedComponents +syn keyword glslBuiltinConstant gl_MaxVaryingComponents +syn keyword glslBuiltinConstant gl_MaxVaryingFloats +syn keyword glslBuiltinConstant gl_MaxVaryingVectors +syn keyword glslBuiltinConstant gl_MaxVertexAtomicCounterBuffers +syn keyword glslBuiltinConstant gl_MaxVertexAtomicCounters +syn keyword glslBuiltinConstant gl_MaxVertexAttribs +syn keyword glslBuiltinConstant gl_MaxVertexImageUniforms +syn keyword glslBuiltinConstant gl_MaxVertexOutputComponents +syn keyword glslBuiltinConstant gl_MaxVertexOutputVectors +syn keyword glslBuiltinConstant gl_MaxVertexTextureImageUnits +syn keyword glslBuiltinConstant gl_MaxVertexUniformComponents +syn keyword glslBuiltinConstant gl_MaxVertexUniformVectors +syn keyword glslBuiltinConstant gl_MaxViewports +syn keyword glslBuiltinConstant gl_MinProgramTexelOffset +syn keyword glslBuiltinConstant gl_RayFlagsCullBackFacingTrianglesEXT +syn keyword glslBuiltinConstant gl_RayFlagsCullFrontFacingTrianglesEXT +syn keyword glslBuiltinConstant gl_RayFlagsCullNoOpaqueEXT +syn keyword glslBuiltinConstant gl_RayFlagsCullOpaqueEXT +syn keyword glslBuiltinConstant gl_RayFlagsNoOpaqueEXT +syn keyword glslBuiltinConstant gl_RayFlagsNoneEXT +syn keyword glslBuiltinConstant gl_RayFlagsOpaqueEXT +syn keyword glslBuiltinConstant gl_RayFlagsSkipClosestHitShaderEXT +syn keyword glslBuiltinConstant gl_RayFlagsTerminateOnFirstHitEXT +syn keyword glslBuiltinConstant gl_RayQueryCandidateIntersectionAABBEXT +syn keyword glslBuiltinConstant gl_RayQueryCandidateIntersectionTriangleEXT +syn keyword glslBuiltinConstant gl_RayQueryCommittedIntersectionGeneratedEXT +syn keyword glslBuiltinConstant gl_RayQueryCommittedIntersectionNoneEXT +syn keyword glslBuiltinConstant gl_RayQueryCommittedIntersectionTriangleEXT + +" Built-in Variables +syn keyword glslBuiltinVariable gl_BackColor +syn keyword glslBuiltinVariable gl_BackLightModelProduct +syn keyword glslBuiltinVariable gl_BackLightProduct +syn keyword glslBuiltinVariable gl_BackLightProduct +syn keyword glslBuiltinVariable gl_BackMaterial +syn keyword glslBuiltinVariable gl_BackSecondaryColor +syn keyword glslBuiltinVariable gl_ClipDistance +syn keyword glslBuiltinVariable gl_ClipPlane +syn keyword glslBuiltinVariable gl_ClipVertex +syn keyword glslBuiltinVariable gl_Color +syn keyword glslBuiltinVariable gl_DepthRange +syn keyword glslBuiltinVariable gl_EyePlaneQ +syn keyword glslBuiltinVariable gl_EyePlaneR +syn keyword glslBuiltinVariable gl_EyePlaneS +syn keyword glslBuiltinVariable gl_EyePlaneT +syn keyword glslBuiltinVariable gl_Fog +syn keyword glslBuiltinVariable gl_FogCoord +syn keyword glslBuiltinVariable gl_FogFragCoord +syn keyword glslBuiltinVariable gl_FragColor +syn keyword glslBuiltinVariable gl_FragCoord +syn keyword glslBuiltinVariable gl_FragData +syn keyword glslBuiltinVariable gl_FragDepth +syn keyword glslBuiltinVariable gl_FrontColor +syn keyword glslBuiltinVariable gl_FrontFacing +syn keyword glslBuiltinVariable gl_FrontLightModelProduct +syn keyword glslBuiltinVariable gl_FrontLightProduct +syn keyword glslBuiltinVariable gl_FrontMaterial +syn keyword glslBuiltinVariable gl_FrontSecondaryColor +syn keyword glslBuiltinVariable gl_GeometryIndexEXT +syn keyword glslBuiltinVariable gl_GlobalInvocationID +syn keyword glslBuiltinVariable gl_HelperInvocation +syn keyword glslBuiltinVariable gl_HitKindEXT +syn keyword glslBuiltinVariable gl_HitTEXT +syn keyword glslBuiltinVariable gl_IncomingRayFlagsEXT +syn keyword glslBuiltinVariable gl_InstanceCustomIndexEXT +syn keyword glslBuiltinVariable gl_InstanceID +syn keyword glslBuiltinVariable gl_InstanceID +syn keyword glslBuiltinVariable gl_InvocationID +syn keyword glslBuiltinVariable gl_LaunchIDEXT +syn keyword glslBuiltinVariable gl_LaunchSizeEXT +syn keyword glslBuiltinVariable gl_Layer +syn keyword glslBuiltinVariable gl_LightModel +syn keyword glslBuiltinVariable gl_LightSource +syn keyword glslBuiltinVariable gl_LocalInvocationID +syn keyword glslBuiltinVariable gl_LocalInvocationIndex +syn keyword glslBuiltinVariable gl_ModelViewMatrix +syn keyword glslBuiltinVariable gl_ModelViewMatrixInverse +syn keyword glslBuiltinVariable gl_ModelViewMatrixInverseTranspose +syn keyword glslBuiltinVariable gl_ModelViewMatrixTranspose +syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrix +syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrixInverse +syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrixInverseTranspose +syn keyword glslBuiltinVariable gl_ModelViewProjectionMatrixTranspose +syn keyword glslBuiltinVariable gl_MultiTexCoord0 +syn keyword glslBuiltinVariable gl_MultiTexCoord1 +syn keyword glslBuiltinVariable gl_MultiTexCoord2 +syn keyword glslBuiltinVariable gl_MultiTexCoord3 +syn keyword glslBuiltinVariable gl_MultiTexCoord4 +syn keyword glslBuiltinVariable gl_MultiTexCoord5 +syn keyword glslBuiltinVariable gl_MultiTexCoord6 +syn keyword glslBuiltinVariable gl_MultiTexCoord7 +syn keyword glslBuiltinVariable gl_Normal +syn keyword glslBuiltinVariable gl_NormalMatrix +syn keyword glslBuiltinVariable gl_NormalScale +syn keyword glslBuiltinVariable gl_NumSamples +syn keyword glslBuiltinVariable gl_NumWorkGroups +syn keyword glslBuiltinVariable gl_ObjectPlaneQ +syn keyword glslBuiltinVariable gl_ObjectPlaneR +syn keyword glslBuiltinVariable gl_ObjectPlaneS +syn keyword glslBuiltinVariable gl_ObjectPlaneT +syn keyword glslBuiltinVariable gl_ObjectRayDirectionEXT +syn keyword glslBuiltinVariable gl_ObjectRayOriginEXT +syn keyword glslBuiltinVariable gl_ObjectToWorld3x4EXT +syn keyword glslBuiltinVariable gl_ObjectToWorldEXT +syn keyword glslBuiltinVariable gl_PatchVerticesIn +syn keyword glslBuiltinVariable gl_Point +syn keyword glslBuiltinVariable gl_PointCoord +syn keyword glslBuiltinVariable gl_PointSize +syn keyword glslBuiltinVariable gl_Position +syn keyword glslBuiltinVariable gl_PrimitiveID +syn keyword glslBuiltinVariable gl_PrimitiveID +syn keyword glslBuiltinVariable gl_PrimitiveIDIn +syn keyword glslBuiltinVariable gl_ProjectionMatrix +syn keyword glslBuiltinVariable gl_ProjectionMatrixInverse +syn keyword glslBuiltinVariable gl_ProjectionMatrixInverseTranspose +syn keyword glslBuiltinVariable gl_ProjectionMatrixTranspose +syn keyword glslBuiltinVariable gl_RayTmaxEXT +syn keyword glslBuiltinVariable gl_RayTminEXT +syn keyword glslBuiltinVariable gl_SampleID +syn keyword glslBuiltinVariable gl_SampleMask +syn keyword glslBuiltinVariable gl_SampleMaskIn +syn keyword glslBuiltinVariable gl_SamplePosition +syn keyword glslBuiltinVariable gl_SecondaryColor +syn keyword glslBuiltinVariable gl_TessCoord +syn keyword glslBuiltinVariable gl_TessLevelInner +syn keyword glslBuiltinVariable gl_TessLevelOuter +syn keyword glslBuiltinVariable gl_TexCoord +syn keyword glslBuiltinVariable gl_TextureEnvColor +syn keyword glslBuiltinVariable gl_TextureMatrix +syn keyword glslBuiltinVariable gl_TextureMatrixInverse +syn keyword glslBuiltinVariable gl_TextureMatrixInverseTranspose +syn keyword glslBuiltinVariable gl_TextureMatrixTranspose +syn keyword glslBuiltinVariable gl_Vertex +syn keyword glslBuiltinVariable gl_VertexID +syn keyword glslBuiltinVariable gl_VertexIndex +syn keyword glslBuiltinVariable gl_ViewportIndex +syn keyword glslBuiltinVariable gl_WorkGroupID +syn keyword glslBuiltinVariable gl_WorkGroupSize +syn keyword glslBuiltinVariable gl_WorldRayDirectionEXT +syn keyword glslBuiltinVariable gl_WorldRayOriginEXT +syn keyword glslBuiltinVariable gl_WorldToObject3x4EXT +syn keyword glslBuiltinVariable gl_WorldToObjectEXT +syn keyword glslBuiltinVariable gl_in +syn keyword glslBuiltinVariable gl_out + +" Built-in Functions +syn keyword glslBuiltinFunction EmitStreamVertex +syn keyword glslBuiltinFunction EmitVertex +syn keyword glslBuiltinFunction EndPrimitive +syn keyword glslBuiltinFunction EndStreamPrimitive +syn keyword glslBuiltinFunction abs +syn keyword glslBuiltinFunction acos +syn keyword glslBuiltinFunction acosh +syn keyword glslBuiltinFunction all +syn keyword glslBuiltinFunction any +syn keyword glslBuiltinFunction asin +syn keyword glslBuiltinFunction asinh +syn keyword glslBuiltinFunction atan +syn keyword glslBuiltinFunction atanh +syn keyword glslBuiltinFunction atomicAdd +syn keyword glslBuiltinFunction atomicAnd +syn keyword glslBuiltinFunction atomicCompSwap +syn keyword glslBuiltinFunction atomicCounter +syn keyword glslBuiltinFunction atomicCounterDecrement +syn keyword glslBuiltinFunction atomicCounterIncrement +syn keyword glslBuiltinFunction atomicExchange +syn keyword glslBuiltinFunction atomicMax +syn keyword glslBuiltinFunction atomicMin +syn keyword glslBuiltinFunction atomicOr +syn keyword glslBuiltinFunction atomicXor +syn keyword glslBuiltinFunction barrier +syn keyword glslBuiltinFunction bitCount +syn keyword glslBuiltinFunction bitfieldExtract +syn keyword glslBuiltinFunction bitfieldInsert +syn keyword glslBuiltinFunction bitfieldReverse +syn keyword glslBuiltinFunction ceil +syn keyword glslBuiltinFunction clamp +syn keyword glslBuiltinFunction cos +syn keyword glslBuiltinFunction cosh +syn keyword glslBuiltinFunction cross +syn keyword glslBuiltinFunction dFdx +syn keyword glslBuiltinFunction dFdxCoarse +syn keyword glslBuiltinFunction dFdxFine +syn keyword glslBuiltinFunction dFdy +syn keyword glslBuiltinFunction dFdyCoarse +syn keyword glslBuiltinFunction dFdyFine +syn keyword glslBuiltinFunction degrees +syn keyword glslBuiltinFunction determinant +syn keyword glslBuiltinFunction distance +syn keyword glslBuiltinFunction dot +syn keyword glslBuiltinFunction equal +syn keyword glslBuiltinFunction executeCallableEXT +syn keyword glslBuiltinFunction exp +syn keyword glslBuiltinFunction exp2 +syn keyword glslBuiltinFunction faceforward +syn keyword glslBuiltinFunction findLSB +syn keyword glslBuiltinFunction findMSB +syn keyword glslBuiltinFunction floatBitsToInt +syn keyword glslBuiltinFunction floatBitsToUint +syn keyword glslBuiltinFunction floor +syn keyword glslBuiltinFunction fma +syn keyword glslBuiltinFunction fract +syn keyword glslBuiltinFunction frexp +syn keyword glslBuiltinFunction ftransform +syn keyword glslBuiltinFunction fwidth +syn keyword glslBuiltinFunction fwidthCoarse +syn keyword glslBuiltinFunction fwidthFine +syn keyword glslBuiltinFunction greaterThan +syn keyword glslBuiltinFunction greaterThanEqual +syn keyword glslBuiltinFunction groupMemoryBarrier +syn keyword glslBuiltinFunction ignoreIntersectionEXT +syn keyword glslBuiltinFunction imageAtomicAdd +syn keyword glslBuiltinFunction imageAtomicAnd +syn keyword glslBuiltinFunction imageAtomicCompSwap +syn keyword glslBuiltinFunction imageAtomicExchange +syn keyword glslBuiltinFunction imageAtomicMax +syn keyword glslBuiltinFunction imageAtomicMin +syn keyword glslBuiltinFunction imageAtomicOr +syn keyword glslBuiltinFunction imageAtomicXor +syn keyword glslBuiltinFunction imageLoad +syn keyword glslBuiltinFunction imageSize +syn keyword glslBuiltinFunction imageStore +syn keyword glslBuiltinFunction imulExtended +syn keyword glslBuiltinFunction intBitsToFloat +syn keyword glslBuiltinFunction interpolateAtCentroid +syn keyword glslBuiltinFunction interpolateAtOffset +syn keyword glslBuiltinFunction interpolateAtSample +syn keyword glslBuiltinFunction inverse +syn keyword glslBuiltinFunction inversesqrt +syn keyword glslBuiltinFunction isinf +syn keyword glslBuiltinFunction isnan +syn keyword glslBuiltinFunction ldexp +syn keyword glslBuiltinFunction length +syn keyword glslBuiltinFunction lessThan +syn keyword glslBuiltinFunction lessThanEqual +syn keyword glslBuiltinFunction log +syn keyword glslBuiltinFunction log2 +syn keyword glslBuiltinFunction matrixCompMult +syn keyword glslBuiltinFunction max +syn keyword glslBuiltinFunction memoryBarrier +syn keyword glslBuiltinFunction memoryBarrierAtomicCounter +syn keyword glslBuiltinFunction memoryBarrierBuffer +syn keyword glslBuiltinFunction memoryBarrierImage +syn keyword glslBuiltinFunction memoryBarrierShared +syn keyword glslBuiltinFunction min +syn keyword glslBuiltinFunction mix +syn keyword glslBuiltinFunction mod +syn keyword glslBuiltinFunction modf +syn keyword glslBuiltinFunction noise1 +syn keyword glslBuiltinFunction noise2 +syn keyword glslBuiltinFunction noise3 +syn keyword glslBuiltinFunction noise4 +syn keyword glslBuiltinFunction normalize +syn keyword glslBuiltinFunction not +syn keyword glslBuiltinFunction notEqual +syn keyword glslBuiltinFunction outerProduct +syn keyword glslBuiltinFunction packDouble2x32 +syn keyword glslBuiltinFunction packHalf2x16 +syn keyword glslBuiltinFunction packSnorm2x16 +syn keyword glslBuiltinFunction packSnorm4x8 +syn keyword glslBuiltinFunction packUnorm2x16 +syn keyword glslBuiltinFunction packUnorm4x8 +syn keyword glslBuiltinFunction pow +syn keyword glslBuiltinFunction radians +syn keyword glslBuiltinFunction rayQueryConfirmIntersectionEXT +syn keyword glslBuiltinFunction rayQueryGenerateIntersectionEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionBarycentricsEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionCandidateAABBOpaqueEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionFrontFaceEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionGeometryIndexEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionInstanceCustomIndexEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionInstanceIdEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionObjectRayDirectionEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionObjectRayOriginEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionObjectToWorldEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionPrimitiveIndexEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionTEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionTypeEXT +syn keyword glslBuiltinFunction rayQueryGetIntersectionWorldToObjectEXT +syn keyword glslBuiltinFunction rayQueryGetRayFlagsEXT +syn keyword glslBuiltinFunction rayQueryGetRayTMinEXT +syn keyword glslBuiltinFunction rayQueryGetWorldRayDirectionEXT +syn keyword glslBuiltinFunction rayQueryGetWorldRayOriginEXT +syn keyword glslBuiltinFunction rayQueryInitializeEXT +syn keyword glslBuiltinFunction rayQueryProceedEXT +syn keyword glslBuiltinFunction rayQueryTerminateEXT +syn keyword glslBuiltinFunction reflect +syn keyword glslBuiltinFunction refract +syn keyword glslBuiltinFunction reportIntersectionEXT +syn keyword glslBuiltinFunction round +syn keyword glslBuiltinFunction roundEven +syn keyword glslBuiltinFunction shadow1D +syn keyword glslBuiltinFunction shadow1DLod +syn keyword glslBuiltinFunction shadow1DProj +syn keyword glslBuiltinFunction shadow1DProjLod +syn keyword glslBuiltinFunction shadow2D +syn keyword glslBuiltinFunction shadow2DLod +syn keyword glslBuiltinFunction shadow2DProj +syn keyword glslBuiltinFunction shadow2DProjLod +syn keyword glslBuiltinFunction sign +syn keyword glslBuiltinFunction sin +syn keyword glslBuiltinFunction sinh +syn keyword glslBuiltinFunction smoothstep +syn keyword glslBuiltinFunction sqrt +syn keyword glslBuiltinFunction step +syn keyword glslBuiltinFunction tan +syn keyword glslBuiltinFunction tanh +syn keyword glslBuiltinFunction terminateRayEXT +syn keyword glslBuiltinFunction texelFetch +syn keyword glslBuiltinFunction texelFetchOffset +syn keyword glslBuiltinFunction texture +syn keyword glslBuiltinFunction texture1D +syn keyword glslBuiltinFunction texture1DLod +syn keyword glslBuiltinFunction texture1DProj +syn keyword glslBuiltinFunction texture1DProjLod +syn keyword glslBuiltinFunction texture2D +syn keyword glslBuiltinFunction texture2DLod +syn keyword glslBuiltinFunction texture2DProj +syn keyword glslBuiltinFunction texture2DProjLod +syn keyword glslBuiltinFunction texture3D +syn keyword glslBuiltinFunction texture3DLod +syn keyword glslBuiltinFunction texture3DProj +syn keyword glslBuiltinFunction texture3DProjLod +syn keyword glslBuiltinFunction textureCube +syn keyword glslBuiltinFunction textureCubeLod +syn keyword glslBuiltinFunction textureGather +syn keyword glslBuiltinFunction textureGatherOffset +syn keyword glslBuiltinFunction textureGatherOffsets +syn keyword glslBuiltinFunction textureGrad +syn keyword glslBuiltinFunction textureGradOffset +syn keyword glslBuiltinFunction textureLod +syn keyword glslBuiltinFunction textureLodOffset +syn keyword glslBuiltinFunction textureOffset +syn keyword glslBuiltinFunction textureProj +syn keyword glslBuiltinFunction textureProjGrad +syn keyword glslBuiltinFunction textureProjGradOffset +syn keyword glslBuiltinFunction textureProjLod +syn keyword glslBuiltinFunction textureProjLodOffset +syn keyword glslBuiltinFunction textureProjOffset +syn keyword glslBuiltinFunction textureQueryLevels +syn keyword glslBuiltinFunction textureQueryLod +syn keyword glslBuiltinFunction textureSize +syn keyword glslBuiltinFunction traceRayEXT +syn keyword glslBuiltinFunction transpose +syn keyword glslBuiltinFunction trunc +syn keyword glslBuiltinFunction uaddCarry +syn keyword glslBuiltinFunction uintBitsToFloat +syn keyword glslBuiltinFunction umulExtended +syn keyword glslBuiltinFunction unpackDouble2x32 +syn keyword glslBuiltinFunction unpackHalf2x16 +syn keyword glslBuiltinFunction unpackSnorm2x16 +syn keyword glslBuiltinFunction unpackSnorm4x8 +syn keyword glslBuiltinFunction unpackUnorm2x16 +syn keyword glslBuiltinFunction unpackUnorm4x8 +syn keyword glslBuiltinFunction usubBorrow + +hi def link glslConditional Conditional +hi def link glslRepeat Repeat +hi def link glslStatement Statement +hi def link glslTodo Todo +hi def link glslCommentL glslComment +hi def link glslCommentStart glslComment +hi def link glslComment Comment +hi def link glslPreCondit PreCondit +hi def link glslDefine Define +hi def link glslTokenConcat glslPreProc +hi def link glslPredefinedMacro Macro +hi def link glslPreProc PreProc +hi def link glslInclude Include +hi def link glslBoolean Boolean +hi def link glslDecimalInt glslInteger +hi def link glslOctalInt glslInteger +hi def link glslHexInt glslInteger +hi def link glslInteger Number +hi def link glslFloat Float +hi def link glslIdentifierPrime glslIdentifier +hi def link glslIdentifier Identifier +hi def link glslStructure Structure +hi def link glslType Type +hi def link glslQualifier StorageClass +hi def link glslBuiltinConstant Constant +hi def link glslBuiltinFunction Function +hi def link glslBuiltinVariable Identifier +hi def link glslSwizzle Identifier + +let b:current_syntax = 'glsl' diff --git a/runtime/syntax/goaccess.vim b/runtime/syntax/goaccess.vim new file mode 100644 index 0000000..4ca8f6d --- /dev/null +++ b/runtime/syntax/goaccess.vim @@ -0,0 +1,34 @@ +" Vim syntax file +" Language: GoAccess configuration +" Maintainer: Adam Monsen +" Last Change: 2024 Aug 1 +" Remark: see https://goaccess.io/man#configuration +" +" The GoAccess configuration file syntax is line-separated settings. Settings +" are space-separated key value pairs. Comments are any line starting with a +" hash mark. +" Example: https://github.com/allinurl/goaccess/blob/master/config/goaccess.conf +" +" This syntax definition supports todo/fixme highlighting in comments, and +" special (Keyword) highlighting if a setting's value is 'true' or 'false'. +" +" TODO: a value is required, so use extreme highlighting (e.g. bright red +" background) if a setting is missing a value. + +if exists("b:current_syntax") + finish +endif + +syn match goaccessSettingName '^[a-z-]\+' nextgroup=goaccessSettingValue +syn match goaccessSettingValue '\s\+.\+$' contains=goaccessKeyword +syn match goaccessComment "^#.*$" contains=goaccessTodo,@Spell +syn keyword goaccessTodo TODO FIXME contained +syn keyword goaccessKeyword true false contained + +hi def link goaccessSettingName Type +hi def link goaccessSettingValue String +hi def link goaccessComment Comment +hi def link goaccessTodo Todo +hi def link goaccessKeyword Keyword + +let b:current_syntax = "goaccess" diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim index d067dde..ca7c7f1 100644 --- a/runtime/syntax/html.vim +++ b/runtime/syntax/html.vim @@ -4,6 +4,7 @@ " Previous Maintainers: Jorge Maldonado Ventura " Claudio Fleiner " Last Change: 2023 Nov 28 +" 2024 Jul 30 by Vim Project: increase syn-sync-minlines to 250 " See :help html.vim for some comments and a description of the options @@ -320,7 +321,7 @@ if main_syntax == "html" syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" syn sync match htmlHighlight groupthere javaScript " +" Last Change: 2024 Aug 22 + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +if !exists("main_syntax") + let main_syntax = 'html' +endif + +runtime! syntax/html.vim +unlet b:current_syntax + +let b:current_syntax = "htmlangular" diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim index 6f64bdc..51ef839 100644 --- a/runtime/syntax/java.vim +++ b/runtime/syntax/java.vim @@ -3,17 +3,17 @@ " Maintainer: Aliaksei Budavei <0x000c70 AT gmail DOT com> " Former Maintainer: Claudio Fleiner " Repository: https://github.com/zzzyxwvut/java-vim.git -" Last Change: 2024 Jun 15 +" Last Change: 2024 Aug 22 " Please check :help java.vim for comments on some of the options available. " quit when a syntax file was already loaded -if !exists("main_syntax") +if !exists("g:main_syntax") if exists("b:current_syntax") finish endif " we define it here so that included files can test for it - let main_syntax='java' + let g:main_syntax = 'java' endif let s:cpo_save = &cpo @@ -39,17 +39,27 @@ else endfunction endif -function! JavaSyntaxFoldTextExpr() abort - return getline(v:foldstart) !~ '/\*\+\s*$' - \ ? foldtext() - \ : printf('+-%s%3d lines: ', - \ v:folddashes, - \ (v:foldend - v:foldstart + 1)) . - \ getline(v:foldstart + 1) -endfunction +if exists("g:java_foldtext_show_first_or_second_line") + function! s:LazyPrefix(prefix, dashes, count) abort + return empty(a:prefix) + \ ? printf('+-%s%3d lines: ', a:dashes, a:count) + \ : a:prefix + endfunction -" E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900. -setlocal foldtext=JavaSyntaxFoldTextExpr() + function! JavaSyntaxFoldTextExpr() abort + " Piggyback on NGETTEXT. + let summary = foldtext() + return getline(v:foldstart) !~ '/\*\+\s*$' + \ ? summary + \ : s:LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'), + \ v:folddashes, + \ (v:foldend - v:foldstart + 1)) . + \ getline(v:foldstart + 1) + endfunction + + " E120 for "fdt=s:JavaSyntaxFoldTextExpr()" before v8.2.3900. + setlocal foldtext=JavaSyntaxFoldTextExpr() +endif " Admit the ASCII dollar sign to keyword characters (JLS-17, §3.8): try @@ -65,7 +75,6 @@ syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/" " use separate name so that it can be deleted in javacc.vim syn match javaError2 "#\|=<" -hi def link javaError2 javaError " Keywords (JLS-17, §3.9): syn keyword javaExternal native package @@ -87,18 +96,18 @@ syn match javaOperator "\\%(\s*(\)\@!" " if necessary, on the line before that (h: \@<=), trying to match " neither a method reference nor a qualified method invocation. try - syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@80" + syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@80" let s:ff.Peek = s:ff.LeftConstant catch /\" + syn match javaOperator "\%(\%(::\|\.\)[[:space:]\n]*\)\@" let s:ff.Peek = s:ff.RightConstant endtry syn keyword javaType boolean char byte short int long float double syn keyword javaType void syn keyword javaStatement return -syn keyword javaStorageClass static synchronized transient volatile strictfp serializable +syn keyword javaStorageClass static synchronized transient volatile strictfp syn keyword javaExceptions throw try catch finally syn keyword javaAssert assert syn keyword javaMethodDecl throws @@ -113,7 +122,7 @@ syn match javaAnnotation "@\%(\K\k*\.\)*\K\k*\>" syn region javaAnnotation transparent matchgroup=javaAnnotationStart start=/@\%(\K\k*\.\)*\K\k*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=javaAnnotation,javaParenT,javaBlock,javaString,javaBoolean,javaNumber,javaTypedef,javaComment,javaLineComment syn match javaClassDecl "@interface\>" syn keyword javaBranch break continue nextgroup=javaUserLabelRef skipwhite -syn match javaUserLabelRef "\k\+" contained +syn match javaUserLabelRef contained "\k\+" syn match javaVarArg "\.\.\." syn keyword javaScopeDecl public protected private syn keyword javaConceptKind abstract final @@ -121,15 +130,6 @@ syn match javaConceptKind "\" syn match javaConceptKind "\\%(\s*(\)\@!" syn match javaConceptKind "\\%(\s*\%(:\|->\)\)\@!" -" Note that a "module-info" file will be recognised with an arbitrary -" file extension (or no extension at all) so that more than one such -" declaration for the same Java module can be maintained for modular -" testing in a project without attendant confusion for IDEs, with the -" ".java\=" extension used for a production version and an arbitrary -" extension used for a testing version. -let s:module_info_cur_buf = fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!' -lockvar s:module_info_cur_buf - if !(v:version < 704) " Request the new regexp engine for [:upper:] and [:lower:]. let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.LeftConstant], 3) @@ -139,17 +139,57 @@ else let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.RightConstant], 3) endif -" Java modules (since Java 9, for "module-info.java" file). -if s:module_info_cur_buf +if exists("g:java_highlight_signature") + let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.LeftConstant], 3) +else + let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.RightConstant], 3) +endif + +" Java module declarations (JLS-17, §7.7). +" +" Note that a "module-info" file will be recognised with an arbitrary +" file extension (or no extension at all) so that more than one such +" declaration for the same Java module can be maintained for modular +" testing in a project without attendant confusion for IDEs, with the +" ".java\=" extension used for a production version and an arbitrary +" extension used for a testing version. +if fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!' syn keyword javaModuleStorageClass module transitive syn keyword javaModuleStmt open requires exports opens uses provides syn keyword javaModuleExternal to with + hi def link javaModuleStorageClass StorageClass + hi def link javaModuleStmt Statement + hi def link javaModuleExternal Include +endif + +" Fancy parameterised types (JLS-17, §4.5). +" +" Note that false positives may elsewhere occur whenever an identifier +" is butted against a less-than operator. Cf. (X\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\)\%(\[\]\)*"' + + for s:ctx in [{'dsg': 'javaDimExpr', 'gsg': 'javaGenerics', 'ghg': 'javaGenericsC1', 'csg': 'javaGenericsX', 'c': ''}, + \ {'dsg': 'javaDimExprX', 'gsg': 'javaGenericsX', 'ghg': 'javaGenericsC2', 'csg': 'javaGenerics', 'c': ' contained'}] + " Consider array creation expressions of reifiable types. + exec 'syn region ' . s:ctx.dsg . ' contained transparent matchgroup=' . s:ctx.ghg . ' start="\[" end="\]" nextgroup=' . s:ctx.dsg . ' skipwhite skipnl' + exec 'syn region ' . s:ctx.gsg . s:ctx.c . ' transparent matchgroup=' . s:ctx.ghg . ' start=/' . s:ff.Engine('\%#=2', '') . '\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\><\%([[:space:]\n]*\%([?@]\|\<\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\)\[\]\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\)\)\@=/ end=/>/ contains=' . s:ctx.csg . ',javaAnnotation,javaTypeArgument,javaWildcardBound,javaType,@javaClasses nextgroup=' . s:ctx.dsg . ' skipwhite skipnl' + endfor + + unlet s:ctx + hi def link javaWildcardBound Question + hi def link javaGenericsC1 Function + hi def link javaGenericsC2 Type endif -if exists("java_highlight_java_lang_ids") - let java_highlight_all=1 +if exists("g:java_highlight_java_lang_ids") + let g:java_highlight_all = 1 endif -if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang") +if exists("g:java_highlight_all") || exists("g:java_highlight_java") || exists("g:java_highlight_java_lang") " java.lang.* " " The keywords of javaR_JavaLang, javaC_JavaLang, javaE_JavaLang, @@ -175,9 +215,15 @@ if exists("java_highlight_all") || exists("java_highlight_java") || exists("ja exec 'syn match javaC_JavaLang "\%(\"' exec 'syn match javaC_JavaLang "\%(\"' exec 'syn match javaC_JavaLang "\%(\"' - exec 'syn match javaC_JavaLang "\%(\"' - syn keyword javaC_JavaLang Boolean Character Class ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void InheritableThreadLocal Package RuntimePermission ThreadLocal StrictMath StackTraceElement Enum ProcessBuilder StringBuilder ClassValue Module ModuleLayer StackWalker Record + syn keyword javaC_JavaLang Boolean Character ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void Package RuntimePermission StrictMath StackTraceElement ProcessBuilder StringBuilder Module ModuleLayer StackWalker Record syn match javaC_JavaLang "\" " See javaDebug. + + if !exists("g:java_highlight_generics") + " The non-interface parameterised names of java.lang members. + exec 'syn match javaC_JavaLang "\%(\"' + syn keyword javaC_JavaLang Class InheritableThreadLocal ThreadLocal Enum ClassValue + endif + " As of JDK 21, java.lang.Compiler is no more (deprecated in JDK 9). syn keyword javaLangDeprecated Compiler syn cluster javaClasses add=javaC_JavaLang @@ -193,31 +239,40 @@ if exists("java_highlight_all") || exists("java_highlight_java") || exists("ja hi def link javaC_Java javaC_ hi def link javaE_Java javaE_ hi def link javaX_Java javaX_ - hi def link javaX_ javaExceptions - hi def link javaR_ javaExceptions - hi def link javaE_ javaExceptions - hi def link javaC_ javaConstant - - syn keyword javaLangObject clone equals finalize getClass hashCode - syn keyword javaLangObject notify notifyAll toString wait - hi def link javaLangObject javaConstant + hi def link javaX_ javaExceptions + hi def link javaR_ javaExceptions + hi def link javaE_ javaExceptions + hi def link javaC_ javaConstant + + syn keyword javaLangObject getClass notify notifyAll wait + + " Lower the syntax priority of overridable java.lang.Object method + " names for zero-width matching (define g:java_highlight_signature + " and see their base declarations for java.lang.Object): + syn match javaLangObject "\" + syn match javaLangObject "\" + syn match javaLangObject "\" + syn match javaLangObject "\" + syn match javaLangObject "\" + hi def link javaLangObject javaConstant endif if filereadable(expand(":p:h") . "/javaid.vim") source :p:h/javaid.vim endif -if exists("java_space_errors") - if !exists("java_no_trail_space_error") - syn match javaSpaceError "\s\+$" +if exists("g:java_space_errors") + if !exists("g:java_no_trail_space_error") + syn match javaSpaceError "\s\+$" endif - if !exists("java_no_tab_space_error") - syn match javaSpaceError " \+\t"me=e-1 + if !exists("g:java_no_tab_space_error") + syn match javaSpaceError " \+\t"me=e-1 endif + hi def link javaSpaceError Error endif -exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\\)\@' . s:ff.Peek('7', '') . '" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaLabelDefault,javaLabelVarType,javaLabelWhenClause +exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\\)\@' . s:ff.Peek('7', '') . '" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause syn region javaLabelRegion transparent matchgroup=javaLabel start="\\%(\s*\%(:\|->\)\)\@=" matchgroup=NONE end=":\|->" oneline " Consider grouped _default_ _case_ labels, i.e. " case null, default -> @@ -230,18 +285,14 @@ syn keyword javaLabelCastType contained char byte short int syn region javaLabelWhenClause contained transparent matchgroup=javaLabel start="\" matchgroup=NONE end=":"me=e-1 end="->"me=e-2 contains=TOP,javaExternal,javaLambdaDef syn match javaLabelNumber contained "\<0\>[lL]\@!" syn match javaLabelNumber contained "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)\>[lL]\@!" -hi def link javaLabelDefault javaLabel -hi def link javaLabelVarType javaOperator -hi def link javaLabelNumber javaNumber -hi def link javaLabelCastType javaType " Comments -syn keyword javaTodo contained TODO FIXME XXX +syn keyword javaTodo contained TODO FIXME XXX -if exists("java_comment_strings") - syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell - syn region javaCommentString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell,javaSpecialError,javaTextBlockError - syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell +if exists("g:java_comment_strings") + syn region javaCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell + syn region javaCommentString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecial,javaCommentStar,javaSpecialChar,@Spell,javaSpecialError,javaTextBlockError + syn region javaComment2String contained start=+"+ end=+$\|"+ contains=javaSpecial,javaSpecialChar,@Spell syn match javaCommentCharacter contained "'\\[^']\{1,6\}'" contains=javaSpecialChar syn match javaCommentCharacter contained "'\\''" contains=javaSpecialChar syn match javaCommentCharacter contained "'[^\\]'" @@ -249,22 +300,22 @@ if exists("java_comment_strings") syn cluster javaCommentSpecial2 add=javaComment2String,javaCommentCharacter,javaNumber,javaStrTempl endif -syn region javaComment matchgroup=javaCommentStart start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,javaCommentError,javaSpaceError,@Spell fold -syn match javaCommentStar contained "^\s*\*[^/]"me=e-1 -syn match javaCommentStar contained "^\s*\*$" +syn region javaComment matchgroup=javaCommentStart start="/\*" end="\*/" contains=@javaCommentSpecial,javaTodo,javaCommentError,javaSpaceError,@Spell fold +syn match javaCommentStar contained "^\s*\*[^/]"me=e-1 +syn match javaCommentStar contained "^\s*\*$" syn match javaLineComment "//.*" contains=@javaCommentSpecial2,javaTodo,javaCommentMarkupTag,javaSpaceError,@Spell syn match javaCommentMarkupTag contained "@\%(end\|highlight\|link\|replace\|start\)\>" nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite syn match javaCommentMarkupTagAttr contained "\" nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite -exec 'syn region javaCommentMarkupTagAttr contained transparent matchgroup=htmlArg start=/\<\%(re\%(gex\|gion\|placement\)\|substring\|t\%(arget\|ype\)\)\%(\s*=\)\@=/ matchgroup=htmlString end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.-]\|\k\)\+\)/ nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite oneline' -hi def link javaCommentMarkupTagAttr htmlArg -hi def link javaCommentString javaString -hi def link javaComment2String javaString -hi def link javaCommentCharacter javaCharacter +exec 'syn region javaCommentMarkupTagAttr contained transparent matchgroup=javaHtmlArg start=/\<\%(re\%(gex\|gion\|placement\)\|substring\|t\%(arget\|ype\)\)\%(\s*=\)\@=/ matchgroup=javaHtmlString end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.-]\|\k\)\+\)/ nextgroup=javaCommentMarkupTagAttr,javaSpaceError skipwhite oneline' syn match javaCommentError contained "/\*"me=e-1 display -hi def link javaCommentError javaError -hi def link javaCommentStart javaComment -if !exists("java_ignore_javadoc") && main_syntax != 'jsp' +if !exists("g:java_ignore_javadoc") && g:main_syntax != 'jsp' + " The overridable "html*" default links must be defined _before_ the + " inclusion of the same default links from "html.vim". + hi def link htmlComment Special + hi def link htmlCommentPart Special + hi def link htmlArg Type + hi def link htmlString String syntax case ignore " Include HTML syntax coloring for Javadoc comments. @@ -291,80 +342,104 @@ if !exists("java_ignore_javadoc") && main_syntax != 'jsp' syn match javaDocSeeTagParam contained @"\_[^"]\+"\|\|\%(\k\|\.\)*\%(#\k\+\%((\_[^)]*)\)\=\)\=@ contains=@javaHtml extend syn region javaCodeSkipBlock contained transparent start="{\%(@code\>\)\@!" end="}" contains=javaCodeSkipBlock,javaDocCodeTag syn region javaDocCodeTag contained start="{@code\>" end="}" contains=javaDocCodeTag,javaCodeSkipBlock - exec 'syn region javaDocSnippetTagAttr contained transparent matchgroup=htmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ matchgroup=htmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.\\/-]\|\k\)\+\)/ nextgroup=javaDocSnippetTagAttr skipwhite skipnl' + exec 'syn region javaDocSnippetTagAttr contained transparent matchgroup=javaHtmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ matchgroup=javaHtmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . '<=\%("[^"]\+"\|' . "\x27[^\x27]\\+\x27" . '\|\%([.\\/-]\|\k\)\+\)/ nextgroup=javaDocSnippetTagAttr skipwhite skipnl' syn region javaSnippetSkipBlock contained transparent start="{\%(@snippet\>\)\@!" end="}" contains=javaSnippetSkipBlock,javaDocSnippetTag,javaCommentMarkupTag syn region javaDocSnippetTag contained start="{@snippet\>" end="}" contains=javaDocSnippetTag,javaSnippetSkipBlock,javaDocSnippetTagAttr,javaCommentMarkupTag syntax case match + hi def link javaDocComment Comment + hi def link javaCommentTitle SpecialComment + hi def link javaDocTags Special + hi def link javaDocCodeTag Special + hi def link javaDocSnippetTag Special + hi def link javaDocSeeTagParam Function + hi def link javaDocParam Function endif " match the special comment /**/ -syn match javaComment "/\*\*/" +syn match javaComment "/\*\*/" " Strings and constants -syn match javaSpecialError contained "\\." +syn match javaSpecialError contained "\\." syn match javaSpecialCharError contained "[^']" " Escape Sequences (JLS-17, §3.10.7): -syn match javaSpecialChar contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)" +syn match javaSpecialChar contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)" syn region javaString start=+"+ end=+"+ end=+$+ contains=javaSpecialChar,javaSpecialError,@Spell syn region javaString start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell syn match javaTextBlockError +"""\s*"""+ -syn region javaStrTemplEmbExp contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP +syn region javaStrTemplEmbExp contained matchgroup=javaStrTempl start="\\{" end="}" contains=TOP exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="+ end=+"+ contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,@Spell' exec 'syn region javaStrTempl start=+\%(\.[[:space:]\n]*\)\@' . s:ff.Peek('80', '') . '<="""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaStrTemplEmbExp,javaSpecialChar,javaSpecialError,javaTextBlockError,@Spell' -syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError -syn match javaCharacter "'\\''" contains=javaSpecialChar -syn match javaCharacter "'[^\\]'" +syn match javaCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError +syn match javaCharacter "'\\''" contains=javaSpecialChar +syn match javaCharacter "'[^\\]'" " Integer literals (JLS-17, §3.10.1): -syn keyword javaNumber 0 0l 0L -syn match javaNumber "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>" +syn keyword javaNumber 0 0l 0L +syn match javaNumber "\<\%(0\%([xX]\x\%(_*\x\)*\|_*\o\%(_*\o\)*\|[bB][01]\%(_*[01]\)*\)\|[1-9]\%(_*\d\)*\)[lL]\=\>" " Decimal floating-point literals (JLS-17, §3.10.2): " Against "\<\d\+\>\.": -syn match javaNumber "\<\d\%(_*\d\)*\." -syn match javaNumber "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>" -syn match javaNumber "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>" -syn match javaNumber "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>" +syn match javaNumber "\<\d\%(_*\d\)*\." +syn match javaNumber "\%(\<\d\%(_*\d\)*\.\%(\d\%(_*\d\)*\)\=\|\.\d\%(_*\d\)*\)\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\=\>" +syn match javaNumber "\<\d\%(_*\d\)*[eE][-+]\=\d\%(_*\d\)*[fFdD]\=\>" +syn match javaNumber "\<\d\%(_*\d\)*\%([eE][-+]\=\d\%(_*\d\)*\)\=[fFdD]\>" " Hexadecimal floating-point literals (JLS-17, §3.10.2): -syn match javaNumber "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>" +syn match javaNumber "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>" " Unicode characters syn match javaSpecial "\\u\x\x\x\x" " Method declarations (JLS-17, §8.4.3, §8.4.4, §9.4). -if exists("java_highlight_functions") - syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaType,javaVarArg,javaComment,javaLineComment +if exists("g:java_highlight_functions") + syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaGenerics,javaType,javaVarArg,javaComment,javaLineComment - if java_highlight_functions =~# '^indent[1-8]\=$' - let s:last = java_highlight_functions[-1 :] - let s:indent = s:last != 't' ? repeat("\x20", s:last) : "\t" + if exists("g:java_highlight_signature") + syn cluster javaFuncParams add=javaParamModifier + hi def link javaFuncDefStart javaFuncDef + else syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal + endif + + if g:java_highlight_functions =~# '^indent[1-8]\=$' + let s:last = g:java_highlight_functions[-1 :] + let s:indent = s:last != 't' ? repeat("\x20", s:last) : "\t" " Try to not match other type members, initialiser blocks, enum " constants (JLS-17, §8.9.1), and constructors (JLS-17, §8.1.7): " at any _conventional_ indentation, skip over all fields with " "[^=]*", all records with "\]\+>\+\s\+\|\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)\+\)\=\%(\<\K\k*\>\.\)*\K\k*\>[^=]*\%(\]\+>\+\s\+\|\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)\+\)\=\%(\<\K\k*\>\.\)*\K\k*\>[^={]*\%(\\)\s\+\)*p\%(ublic\|rotected\|rivate\)\s\+\%(<[^>]\+>\+\s\+\)\=\K\k*\s*\ze(+ contains=javaAnnotation,javaScopeDecl' - exec 'syn match javaEnumSkipArgumentativeConstant transparent +^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\K\k*\s*\ze(+ contains=javaAnnotation' + exec 'syn match javaConstructorSkipDeclarator transparent /^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*p\%(ublic\|rotected\|rivate\)\s\+\%(<[^>]\+>\+\s\+\)\=\K\k*\s*\ze(/ contains=javaAnnotation,javaScopeDecl,javaClassDecl,javaTypedef,javaGenerics' + " With a zero-width span for signature applicable on demand to + " javaFuncDef, make related adjustments: + " (1) Claim all enum constants of a line as a unit. + exec 'syn match javaEnumSkipConstant contained transparent /^' . s:indent . '\%(\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\K\k*\s*\%((.*)\)\=\s*[,;({]\s*\)\+/ contains=@javaEnumConstants' + " (2) Define a syntax group for top level enumerations and tell + " apart their constants from method declarations. + exec 'syn region javaTopEnumDeclaration transparent start=/\%(^\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(strictfp\s\+\)\=\] Τʬ[<γ>][[][]] μʭʭ(/* ... */); - exec 'syn region javaFuncDef start=/' . s:ff.Engine('\%#=2', '') . '^\s\+\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(\%(abstract\|default\)\s\+\|\%(\%(final\|\%(native\|strictfp\)\|s\%(tatic\|ynchronized\)\)\s\+\)*\)\=\%(<.*[[:space:]-]\@' . s:ff.Peek('1', '') . '\s\+\)\=\%(void\|\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '\)\=\)\%(\[\]\)*\)\s\+\<' . s:ff.LowerCase('[$_[:lower:]]', '[^A-Z0-9]') . '\k*\>\s*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=@javaFuncParams' + exec 'syn region javaFuncDef ' . s:ff.GroupArgs('transparent matchgroup=javaFuncDefStart', '') . ' start=/' . s:ff.Engine('\%#=2', '') . s:ff.PeekTo('\%(', '') . '^\s\+\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(\%(abstract\|default\)\s\+\|\%(\%(final\|\%(native\|strictfp\)\|s\%(tatic\|ynchronized\)\)\s\+\)*\)\=\%(<.*[[:space:]-]\@' . s:ff.Peek('1', '') . '\s\+\)\=\%(void\|\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '\)\=\)\%(\[\]\)*\)\s\+' . s:ff.PeekFrom('\)\@' . s:ff.Peek('80', '') . '<=', '') . '\<' . s:ff.LowerCase('[$_[:lower:]]', '[^A-Z0-9]') . '\k*\>\s*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=@javaFuncParams' endif endif -if exists("java_highlight_debug") +if exists("g:java_highlight_debug") " Strings and constants syn match javaDebugSpecial contained "\\\%(u\x\x\x\x\|[0-3]\o\o\|\o\o\=\|[bstnfr"'\\]\)" - syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial + syn region javaDebugString contained start=+"+ end=+"+ contains=javaDebugSpecial syn region javaDebugString contained start=+"""[ \t\x0c\r]*$+hs=e+1 end=+"""+he=s-1 contains=javaDebugSpecial,javaDebugTextBlockError " The highlight groups of java{StrTempl,Debug{,Paren,StrTempl}}\, " share one colour by default. Do not conflate unrelated parens. @@ -384,7 +459,7 @@ if exists("java_highlight_debug") syn match javaDebugNumber contained "\<0[xX]\%(\x\%(_*\x\)*\.\=\|\%(\x\%(_*\x\)*\)\=\.\x\%(_*\x\)*\)[pP][-+]\=\d\%(_*\d\)*[fFdD]\=\>" syn keyword javaDebugBoolean contained true false syn keyword javaDebugType contained null this super - syn region javaDebugParen start=+(+ end=+)+ contained contains=javaDebug.*,javaDebugParen + syn region javaDebugParen contained start=+(+ end=+)+ contains=javaDebug.*,javaDebugParen " To make this work, define the highlighting for these groups. syn match javaDebug "\ " | ([@A [@B ...] final] T[<α>][[][]] a[, T b, ...]) -> " There is no recognition of expressions interspersed with comments " or of expressions whose parameterised parameter types are written " across multiple lines. - exec 'syn match javaLambdaDef "\k\@' . s:ff.Peek('4', '') . '\%((\_.\{-1,})\)\{-,1}[[:space:]\n]\+\)*\%(final[[:space:]\n]\+\)\=\%(\<\K\k*\>\.\)*\<\K\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '\)\=\%(\%(\%(\[\]\)\+\|\.\.\.\)\)\=[[:space:]\n]\+\<\K\k*\>\%(\[\]\)*\%(,[[:space:]\n]*\)\=\)\+)[[:space:]\n]*->" contains=javaAnnotation,javaParamModifier,javaLambdaVarType,javaType,@javaClasses,javaVarArg' + exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent matchgroup=javaLambdaDefStart start=/', 'match javaLambdaDef "') . '\k\@' . s:ff.Peek('4', '') . '\%((\_.\{-1,})\)\{-,1}[[:space:]\n]\+\)*\%(final[[:space:]\n]\+\)\=\%(\<\K\k*\>\.\)*\<\K\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '\)\=\%(\%(\%(\[\]\)\+\|\.\.\.\)\)\=[[:space:]\n]\+\<\K\k*\>\%(\[\]\)*\%(,[[:space:]\n]*\)\=\)\+)[[:space:]\n]*' . s:ff.LambdaDef('\z(->\)\)\@=/ end=/)[[:space:]\n]*\z1/', '->"') . ' contains=javaAnnotation,javaParamModifier,javaLambdaVarType,javaType,@javaClasses,javaGenerics,javaVarArg' " Match: () -> " | (a[, b, ...]) -> - exec 'syn match javaLambdaDef "\k\@' . s:ff.Peek('4', '') . '\%(,[[:space:]\n]*\)\=\)*)[[:space:]\n]*->"' + exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent matchgroup=javaLambdaDefStart start=/', 'match javaLambdaDef "') . '\k\@' . s:ff.Peek('4', '') . '\%(,[[:space:]\n]*\)\=\)*)[[:space:]\n]*' . s:ff.LambdaDef('\z(->\)\)\@=/ end=/)[[:space:]\n]*\z1/', '->"') " Match: a -> - exec 'syn match javaLambdaDef "\<\K\k*\>\%(\\)\@' . s:ff.Peek('7', '') . '"' + exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent start=/', 'match javaLambdaDef "') . '\<\K\k*\>\%(\\)\@' . s:ff.Peek('7', '') . '\)\)\@=/ matchgroup=javaLambdaDefStart end=/\z1/', '[[:space:]\n]*->"') syn keyword javaParamModifier contained final - hi def link javaParamModifier javaConceptKind syn keyword javaLambdaVarType contained var - hi def link javaLambdaVarType javaOperator + hi def link javaParamModifier javaConceptKind + hi def link javaLambdaVarType javaOperator + hi def link javaLambdaDef javaFuncDef + hi def link javaLambdaDefStart javaFuncDef + hi def link javaMethodRef javaFuncDef + hi def link javaFuncDef Function endif " The @javaTop cluster comprises non-contained Java syntax groups. " Note that the syntax file "aidl.vim" relies on its availability. -syn cluster javaTop contains=TOP,javaDocComment,javaBlock,javaParenError,javaParenT +syn cluster javaTop contains=TOP,javaTopEnumDeclaration -if !exists("java_minlines") - let java_minlines = 10 +if !exists("g:java_minlines") + let g:java_minlines = 10 endif " Note that variations of a /*/ balanced comment, e.g., /*/*/, /*//*/, @@ -470,16 +560,11 @@ endif " to make synchronisation start further towards file's beginning by " bumping up g:java_minlines or issuing ':syntax sync fromstart' or " preferring &foldmethod set to 'syntax'. -exec "syn sync ccomment javaComment minlines=" . java_minlines +exec "syn sync ccomment javaComment minlines=" . g:java_minlines " The default highlighting. -hi def link javaLambdaDef Function -hi def link javaFuncDef Function hi def link javaVarArg Function hi def link javaBranch Conditional -hi def link javaUserLabelRef javaUserLabel -hi def link javaLabel Label -hi def link javaUserLabel Label hi def link javaConditional Conditional hi def link javaRepeat Repeat hi def link javaExceptions Exception @@ -490,8 +575,8 @@ hi def link javaClassDecl javaStorageClass hi def link javaScopeDecl javaStorageClass hi def link javaConceptKind NonText -hi def link javaBoolean Boolean -hi def link javaSpecial Special +hi def link javaBoolean Boolean +hi def link javaSpecial Special hi def link javaSpecialError Error hi def link javaSpecialCharError Error hi def link javaString String @@ -500,65 +585,74 @@ hi def link javaCharacter Character hi def link javaSpecialChar SpecialChar hi def link javaNumber Number hi def link javaError Error +hi def link javaError2 javaError hi def link javaTextBlockError Error +hi def link javaParenError javaError hi def link javaStatement Statement hi def link javaOperator Operator -hi def link javaComment Comment -hi def link javaDocComment Comment -hi def link javaLineComment Comment hi def link javaConstant Constant -hi def link javaTypedef Typedef +hi def link javaTypedef Typedef hi def link javaTodo Todo hi def link javaAnnotation PreProc hi def link javaAnnotationStart javaAnnotation - -hi def link javaCommentTitle SpecialComment -hi def link javaDocTags Special -hi def link javaDocCodeTag Special -hi def link javaDocSnippetTag Special -hi def link javaDocParam Function -hi def link javaDocSeeTagParam Function -hi def link javaCommentStar javaComment - hi def link javaType Type hi def link javaExternal Include -hi def link htmlComment Special -hi def link htmlCommentPart Special -hi def link htmlArg Type -hi def link htmlString String -hi def link javaSpaceError Error +hi def link javaUserLabel Label +hi def link javaUserLabelRef javaUserLabel +hi def link javaLabel Label +hi def link javaLabelDefault javaLabel +hi def link javaLabelVarType javaOperator +hi def link javaLabelNumber javaNumber +hi def link javaLabelCastType javaType + +hi def link javaComment Comment +hi def link javaCommentStar javaComment +hi def link javaLineComment Comment +hi def link javaCommentMarkupTagAttr javaHtmlArg +hi def link javaCommentString javaString +hi def link javaComment2String javaString +hi def link javaCommentCharacter javaCharacter +hi def link javaCommentError javaError +hi def link javaCommentStart javaComment -if s:module_info_cur_buf - hi def link javaModuleStorageClass StorageClass - hi def link javaModuleStmt Statement - hi def link javaModuleExternal Include -endif +hi def link javaHtmlArg Type +hi def link javaHtmlString String let b:current_syntax = "java" -if main_syntax == 'java' - unlet main_syntax +if g:main_syntax == 'java' + unlet g:main_syntax endif let b:spell_options = "contained" let &cpo = s:cpo_save -unlet s:module_info_cur_buf s:ff s:cpo_save +unlet s:ff s:cpo_save " See ":help vim9-mix". if !has("vim9script") finish endif -def! s:JavaSyntaxFoldTextExpr(): string - return getline(v:foldstart) !~ '/\*\+\s*$' - ? foldtext() - : printf('+-%s%3d lines: ', - v:folddashes, - (v:foldend - v:foldstart + 1)) .. - getline(v:foldstart + 1) -enddef - -setlocal foldtext=s:JavaSyntaxFoldTextExpr() -delfunction! g:JavaSyntaxFoldTextExpr +if exists("g:java_foldtext_show_first_or_second_line") + def! s:LazyPrefix(prefix: string, dashes: string, count: number): string + return empty(prefix) + ? printf('+-%s%3d lines: ', dashes, count) + : prefix + enddef + + def! s:JavaSyntaxFoldTextExpr(): string + # Piggyback on NGETTEXT. + const summary: string = foldtext() + return getline(v:foldstart) !~ '/\*\+\s*$' + ? summary + : LazyPrefix(matchstr(summary, '^+-\+\s*\d\+\s.\{-1,}:\s'), + v:folddashes, + (v:foldend - v:foldstart + 1)) .. + getline(v:foldstart + 1) + enddef + + setlocal foldtext=s:JavaSyntaxFoldTextExpr() + delfunction! g:JavaSyntaxFoldTextExpr +endif " vim: sw=2 ts=8 noet sta diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim index e3b4cdf..c73f5d7 100644 --- a/runtime/syntax/javascript.vim +++ b/runtime/syntax/javascript.vim @@ -10,6 +10,7 @@ " Last Change: 2022 Jun 09 " 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke) " 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder) +" 2024 Aug 14: fix a few stylistic issues (#15480) " tuning parameters: " unlet javaScript_fold @@ -59,14 +60,15 @@ syn keyword javaScriptType Array Boolean Date Function Number Object String Reg syn keyword javaScriptStatement return with await yield syn keyword javaScriptBoolean true false syn keyword javaScriptNull null undefined -syn keyword javaScriptIdentifier arguments this var let +syn keyword javaScriptIdentifier arguments this syn keyword javaScriptLabel case default syn keyword javaScriptException try catch finally throw syn keyword javaScriptMessage alert confirm prompt status syn keyword javaScriptGlobal self window top parent syn keyword javaScriptMember document event location syn keyword javaScriptDeprecated escape unescape -syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile async +syn keyword javaScriptReserved abstract boolean byte char class const debugger double enum export extends final float from goto implements import int interface let long native package private protected public short super synchronized throws transient var volatile async +syn keyword javaScriptModifier static syn cluster javaScriptEmbededExpr contains=javaScriptBoolean,javaScriptNull,javaScriptIdentifier,javaScriptStringD,javaScriptStringS,javaScriptStringT @@ -110,7 +112,7 @@ hi def link javaScriptBranch Conditional hi def link javaScriptOperator Operator hi def link javaScriptType Type hi def link javaScriptStatement Statement -hi def link javaScriptFunction Function +hi def link javaScriptFunction Keyword hi def link javaScriptBraces Function hi def link javaScriptError Error hi def link javaScrParenError javaScriptError @@ -126,6 +128,7 @@ hi def link javaScriptGlobal Keyword hi def link javaScriptMember Keyword hi def link javaScriptDeprecated Exception hi def link javaScriptReserved Keyword +hi def link javaScriptModifier StorageClass hi def link javaScriptDebug Debug hi def link javaScriptConstant Label hi def link javaScriptEmbed Special diff --git a/runtime/syntax/kconfig.vim b/runtime/syntax/kconfig.vim index c7a305b..0aecc00 100644 --- a/runtime/syntax/kconfig.vim +++ b/runtime/syntax/kconfig.vim @@ -1,7 +1,7 @@ " Vim syntax file " Maintainer: Christian Brabandt " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2015-05-29 +" Latest Revision: 2024-07-19 " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-kconfig @@ -715,8 +715,6 @@ syn region kconfigHelpText \ skip='^$' \ end='^\z1\@!' -syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---' - hi def link kconfigTodo Todo hi def link kconfigComment Comment hi def link kconfigKeyword Keyword diff --git a/runtime/syntax/kivy.vim b/runtime/syntax/kivy.vim index b145503..d4bccfc 100644 --- a/runtime/syntax/kivy.vim +++ b/runtime/syntax/kivy.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: Kivy -" Maintainer: Corey Prophitt -" Last Change: May 29th, 2014 +" Maintainer: Corey Prophitt +" Last Change: Jul 31st, 2024 " Version: 1 -" URL: http://kivy.org/ +" URL: https://kivy.org/ if exists("b:current_syntax") finish @@ -13,11 +13,11 @@ endif syn include @pyth $VIMRUNTIME/syntax/python.vim " Kivy language rules can be found here -" http://kivy.org/docs/guide/lang.html +" https://kivy.org/doc/stable/guide/lang.html " Define Kivy syntax syn match kivyPreProc /#:.*/ -syn match kivyComment /#.*/ +syn match kivyComment /#[^:].*/ syn match kivyRule /<\I\i*\(,\s*\I\i*\)*>:/ syn match kivyAttribute /\<\I\i*\>/ nextgroup=kivyValue diff --git a/runtime/syntax/logindefs.vim b/runtime/syntax/logindefs.vim index 8cb4295..51fa199 100644 --- a/runtime/syntax/logindefs.vim +++ b/runtime/syntax/logindefs.vim @@ -1,7 +1,8 @@ -" Vim syntax file +" Vim syntax file for login.defs(5) " Language: login.defs(5) configuration file " Previous Maintainer: Nikolai Weibull " Latest Revision: 2010-11-29 +" 2024 Jul 12 by Vim Project: Update keywords if exists("b:current_syntax") finish @@ -35,6 +36,8 @@ syn keyword logindefsBooleanKeyword contained \ CREATE_HOME \ DEFAULT_HOME \ FAILLOG_ENAB + \ FORCE_SHADOW + \ GRANT_AUX_GROUP_SUBIDS \ LASTLOG_ENAB \ LOG_OK_LOGINS \ LOG_UNKFAIL_ENAB @@ -54,15 +57,20 @@ syn keyword logindefsBoolean contained yes no syn keyword logindefsEncryptKeyword contained \ ENCRYPT_METHOD + \ HMAC_CRYPTO_ALGO \ nextgroup=logindefsEncryptMethod skipwhite syn keyword logindefsEncryptMethod contained + \ BCRYPT \ DES \ MD5 \ SHA256 \ SHA512 + \ YESCRYPT syn keyword logindefsNumberKeyword contained + \ BCRYPT_MAX_ROUNDS + \ BCRYPT_MIN_ROUNDS \ ERASECHAR \ FAIL_DELAY \ GID_MAX @@ -79,6 +87,12 @@ syn keyword logindefsNumberKeyword contained \ PASS_MIN_LEN \ SHA_CRYPT_MAX_ROUNDS \ SHA_CRYPT_MIN_ROUNDS + \ SUB_GID_COUNT + \ SUB_GID_MAX + \ SUB_GID_MIN + \ SUB_UID_COUNT + \ SUB_UID_MAX + \ SUB_UID_MIN \ SYS_GID_MAX \ SYS_GID_MIN \ SYS_UID_MAX @@ -86,9 +100,15 @@ syn keyword logindefsNumberKeyword contained \ UID_MAX \ UID_MIN \ ULIMIT - \ UMASK + \ YESCRYPT_COST_FACTOR \ nextgroup=@logindefsNumber skipwhite +syn keyword logindefsNumberKeyword contained + \ HOME_MODE + \ TTYPERM + \ UMASK + \ nextgroup=logindefsOctal,logindefsOctalError skipwhite + syn cluster logindefsNumber contains= \ logindefsDecimal, \ logindefsHex, @@ -114,6 +134,7 @@ syn keyword logindefsPathKeyword contained \ MAIL_DIR \ MAIL_FILE \ NOLOGINS_FILE + \ NONEXISTENT \ SULOG_FILE \ TTYTYPE_FILE \ nextgroup=logindefsPath skipwhite @@ -138,9 +159,9 @@ syn keyword logindefsStringKeyword contained \ ENV_HZ \ ENV_TZ \ LOGIN_STRING + \ PREVENT_NO_AUTH \ SU_NAME \ TTYGROUP - \ TTYPERM \ USERDEL_CMD \ nextgroup=logindefsString skipwhite diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim index b457304..d3ddf78 100644 --- a/runtime/syntax/make.vim +++ b/runtime/syntax/make.vim @@ -28,8 +28,13 @@ syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\ syn case match " identifiers -syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent -syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent +if exists("b:make_microsoft") || exists("make_microsoft") + syn region makeIdent start="\$(" end=")" contains=makeStatement,makeIdent + syn region makeIdent start="\${" end="}" contains=makeStatement,makeIdent +else + syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent + syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent +endif syn match makeIdent "\$\$\w*" syn match makeIdent "\$[^({]" syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2 @@ -78,11 +83,13 @@ syn match makeOverride "^ *override\>" syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1 " Comment -if exists("make_microsoft") - syn match makeComment "#.*" contains=@Spell,makeTodo -elseif !exists("make_no_comments") - syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo - syn match makeComment "#$" contains=@Spell +if !exists("make_no_comments") + if exists("b:make_microsoft") || exists("make_microsoft") + syn match makeComment "#.*" contains=@Spell,makeTodo + else + syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo + syn match makeComment "#$" contains=@Spell + endif endif syn keyword makeTodo TODO FIXME XXX contained diff --git a/runtime/syntax/mediawiki.vim b/runtime/syntax/mediawiki.vim new file mode 100644 index 0000000..8ac30b9 --- /dev/null +++ b/runtime/syntax/mediawiki.vim @@ -0,0 +1,292 @@ +" mediawiki.vim (formerly named Wikipedia.vim) +" +" Vim syntax file +" Language: MediaWiki +" Maintainer: Avid Seeker +" Home: http://en.wikipedia.org/wiki/Wikipedia:Text_editor_support#Vim +" Last Change: 2024 Jul 14 +" Credits: [[User:Unforgettableid]] [[User:Aepd87]], [[User:Danny373]], [[User:Ingo Karkat]], et al. +" +" Published on Wikipedia in 2003-04 and declared authorless. +" +" Based on the HTML syntax file. Probably too closely based, in fact. +" There may well be name collisions everywhere, but ignorance is bliss, +" so they say. +" + +if exists("b:current_syntax") + finish +endif + +syntax case ignore +syntax spell toplevel + +" Mark illegal characters +sy match htmlError "[<>&]" + +" Tags +sy region htmlString contained start=+"+ end=+"+ contains=htmlSpecialChar,@htmlPreproc +sy region htmlString contained start=+'+ end=+'+ contains=htmlSpecialChar,@htmlPreproc +sy match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=@htmlPreproc +sy region htmlEndTag start=++ contains=htmlTagN,htmlTagError +sy region htmlTag start=+<[^/]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster +sy match htmlTagN contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster +sy match htmlTagN contained +]<"ms=s+1 + +" Allowed HTML tag names +sy keyword htmlTagName contained big blockquote br caption center cite code +sy keyword htmlTagName contained dd del div dl dt font hr ins li +sy keyword htmlTagName contained ol p pre rb rp rt ruby s small span strike sub +sy keyword htmlTagName contained sup table td th tr tt ul var +sy match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\)\>" +" Allowed Wiki tag names +sy keyword htmlTagName contained math nowiki references source syntaxhighlight + +" Allowed arg names +sy keyword htmlArg contained align lang dir width height nowrap bgcolor clear +sy keyword htmlArg contained noshade cite datetime size face color type start +sy keyword htmlArg contained value compact summary border frame rules +sy keyword htmlArg contained cellspacing cellpadding valign char charoff +sy keyword htmlArg contained colgroup col span abbr axis headers scope rowspan +sy keyword htmlArg contained colspan id class name style title + +" Special characters +sy match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};" + +" Comments +sy region htmlComment start=++ contains=htmlCommentPart,htmlCommentError +sy match htmlCommentError contained "[^>+ + +if !exists("html_no_rendering") + sy cluster htmlTop contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,@htmlPreproc + + sy region htmlBold start="" end=""me=e-4 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic + sy region htmlBold start="" end=""me=e-9 contains=@htmlTop,htmlBoldUnderline,htmlBoldItalic + sy region htmlBoldUnderline contained start="" end=""me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic + sy region htmlBoldItalic contained start="" end=""me=e-4 contains=@htmlTop,htmlBoldItalicUnderline + sy region htmlBoldItalic contained start="" end=""me=e-5 contains=@htmlTop,htmlBoldItalicUnderline + sy region htmlBoldUnderlineItalic contained start="" end=""me=e-4 contains=@htmlTop + sy region htmlBoldUnderlineItalic contained start="" end=""me=e-5 contains=@htmlTop + sy region htmlBoldItalicUnderline contained start="" end=""me=e-4 contains=@htmlTop,htmlBoldUnderlineItalic + + sy region htmlUnderline start="" end=""me=e-4 contains=@htmlTop,htmlUnderlineBold,htmlUnderlineItalic + sy region htmlUnderlineBold contained start="" end=""me=e-4 contains=@htmlTop,htmlUnderlineBoldItalic + sy region htmlUnderlineBold contained start="" end=""me=e-9 contains=@htmlTop,htmlUnderlineBoldItalic + sy region htmlUnderlineItalic contained start="" end=""me=e-4 contains=@htmlTop,htmlUnderlineItalicBold + sy region htmlUnderlineItalic contained start="" end=""me=e-5 contains=@htmlTop,htmlUnderlineItalicBold + sy region htmlUnderlineItalicBold contained start="" end=""me=e-4 contains=@htmlTop + sy region htmlUnderlineItalicBold contained start="" end=""me=e-9 contains=@htmlTop + sy region htmlUnderlineBoldItalic contained start="" end=""me=e-4 contains=@htmlTop + sy region htmlUnderlineBoldItalic contained start="" end=""me=e-5 contains=@htmlTop + + sy region htmlItalic start="" end=""me=e-4 contains=@htmlTop,htmlItalicBold,htmlItalicUnderline + sy region htmlItalic start="" end=""me=e-5 contains=@htmlTop + sy region htmlItalicBold contained start="" end=""me=e-4 contains=@htmlTop,htmlItalicBoldUnderline + sy region htmlItalicBold contained start="" end=""me=e-9 contains=@htmlTop,htmlItalicBoldUnderline + sy region htmlItalicBoldUnderline contained start="" end=""me=e-4 contains=@htmlTop + sy region htmlItalicUnderline contained start="" end=""me=e-4 contains=@htmlTop,htmlItalicUnderlineBold + sy region htmlItalicUnderlineBold contained start="" end=""me=e-4 contains=@htmlTop + sy region htmlItalicUnderlineBold contained start="" end=""me=e-9 contains=@htmlTop + + sy region htmlH1 start="" end=""me=e-5 contains=@htmlTop + sy region htmlH2 start="" end=""me=e-5 contains=@htmlTop + sy region htmlH3 start="" end=""me=e-5 contains=@htmlTop + sy region htmlH4 start="" end=""me=e-5 contains=@htmlTop + sy region htmlH5 start="" end=""me=e-5 contains=@htmlTop + sy region htmlH6 start="" end=""me=e-5 contains=@htmlTop +endif + + +" No htmlTop and wikiPre inside HTML preformatted areas, because +" MediaWiki renders everything in there literally (HTML tags and +" entities, too):
 tags work as the combination of  and
+" the standard HTML 
 tag: the content will preformatted, and it
+" will not be parsed, but shown as in the wikitext source.
+"
+" With wikiPre, indented lines would be rendered differently from
+" unindented lines.
+sy match htmlPreTag       /[^>]*>/         contains=htmlTag
+sy match htmlPreEndTag    /<\/pre>/       contains=htmlEndTag
+sy match wikiNowikiTag    //      contains=htmlTag
+sy match wikiNowikiEndTag /<\/nowiki>/    contains=htmlEndTag
+sy match wikiSourceTag    /]\+>/ contains=htmlTag
+sy match wikiSourceEndTag /<\/source>/    contains=htmlEndTag
+sy match wikiSyntaxHLTag    /]\+>/ contains=htmlTag
+sy match wikiSyntaxHLEndTag /<\/syntaxhighlight>/    contains=htmlEndTag
+
+" Note: Cannot use 'start="
"rs=e', so still have the 
 tag
+" highlighted correctly via separate sy-match. Unfortunately, this will
+" also highlight 
 tags inside the preformatted region.
+sy region htmlPre    start="[^>]*>"                 end="<\/pre>"me=e-6    contains=htmlPreTag
+sy region wikiNowiki start=""              end="<\/nowiki>"me=e-9 contains=wikiNowikiTag
+sy region wikiSource start="]\+>"         keepend end="<\/source>"me=e-9 contains=wikiSourceTag
+sy region wikiSyntaxHL start="]\+>" keepend end="<\/syntaxhighlight>"me=e-18 contains=wikiSyntaxHLTag
+
+sy include @TeX syntax/tex.vim
+unlet b:current_syntax
+sy region wikiTeX matchgroup=htmlTag start="" end="<\/math>"  contains=@texMathZoneGroup,wikiNowiki,wikiNowikiEndTag
+sy region wikiRef matchgroup=htmlTag start=""  end="<\/ref>"   contains=wikiNowiki,wikiNowikiEndTag
+
+sy cluster wikiText contains=wikiLink,wikiTemplate,wikiNowiki,wikiNowikiEndTag,wikiItalic,wikiBold,wikiBoldAndItalic
+
+" Tables
+sy cluster wikiTableFormat contains=wikiTemplate,htmlString,htmlArg,htmlValue
+sy region wikiTable matchgroup=wikiTableSeparator start="{|" end="|}" contains=wikiTableHeaderLine,wikiTableCaptionLine,wikiTableNewRow,wikiTableHeadingCell,wikiTableNormalCell,@wikiText
+sy match  wikiTableSeparator /^!/ contained
+sy match  wikiTableSeparator /^|/ contained
+sy match  wikiTableSeparator /^|[+-]/ contained
+sy match  wikiTableSeparator /||/ contained
+sy match  wikiTableSeparator /!!/ contained
+sy match  wikiTableFormatEnd /[!|]/ contained
+sy match  wikiTableHeadingCell /\(^!\|!!\)\([^!|]*|\)\?.*/ contains=wikiTableSeparator,@wikiText,wikiTableHeadingFormat
+" Require at least one '=' in the format, to avoid spurious matches (e.g.
+" the | in [[foo|bar]] might be taken as the final |, indicating the beginning
+" of the cell). The same is done for wikiTableNormalFormat below.
+sy match  wikiTableHeadingFormat /\%(^!\|!!\)[^!|]\+=[^!|]\+\([!|]\)\(\1\)\@!/me=e-1 contains=@wikiTableFormat,wikiTableSeparator nextgroup=wikiTableFormatEnd
+sy match  wikiTableNormalCell /\(^|\|||\)\([^|]*|\)\?.*/ contains=wikiTableSeparator,@wikiText,wikiTableNormalFormat
+sy match  wikiTableNormalFormat /\(^|\|||\)[^|]\+=[^|]\+||\@!/me=e-1 contains=@wikiTableFormat,wikiTableSeparator nextgroup=wikiTableFormatEnd
+sy match  wikiTableHeaderLine /\(^{|\)\@<=.*$/ contained contains=@wikiTableFormat
+sy match  wikiTableCaptionLine /^|+.*$/ contained contains=wikiTableSeparator,@wikiText
+sy match  wikiTableNewRow /^|-.*$/ contained contains=wikiTableSeparator,@wikiTableFormat
+
+sy cluster wikiTop contains=@Spell,wikiLink,wikiNowiki,wikiNowikiEndTag
+
+sy region wikiItalic        start=+'\@\[\]]\+/hs=s+2 contained
+sy region wikiTemplate start="{{" end="}}" keepend extend contains=wikiNowiki,wikiNowikiEndTag,wikiTemplateName,wikiTemplateParam,wikiTemplate,wikiLink
+sy region wikiTemplateParam start="{{{\s*\d" end="}}}" extend contains=wikiTemplateName
+
+sy match wikiParaFormatChar /^[\:|\*|;|#]\+/
+sy match wikiParaFormatChar /^-----*/
+sy match wikiPre            /^\ .*$/         contains=wikiNowiki,wikiNowikiEndTag
+
+" HTML highlighting
+
+hi def link htmlTag            Function
+hi def link htmlEndTag         Identifier
+hi def link htmlArg            Type
+hi def link htmlTagName        htmlStatement
+hi def link htmlSpecialTagName Exception
+hi def link htmlValue          String
+hi def link htmlSpecialChar    Special
+
+if !exists("html_no_rendering")
+  hi def link htmlTitle Title
+  hi def link htmlH1    htmlTitle
+  hi def link htmlH2    htmlTitle
+  hi def link htmlH3    htmlTitle
+  hi def link htmlH4    htmlTitle
+  hi def link htmlH5    htmlTitle
+  hi def link htmlH6    htmlTitle
+
+  hi def link htmlPreProc          PreProc
+  hi def link htmlHead             htmlPreProc
+  hi def link htmlPreProcAttrName  htmlPreProc
+  hi def link htmlPreStmt          htmlPreProc
+
+  hi def link htmlSpecial          Special
+  hi def link htmlCssDefinition    htmlSpecial
+  hi def link htmlEvent            htmlSpecial
+  hi def link htmlSpecialChar      htmlSpecial
+
+  hi def link htmlComment          Comment
+  hi def link htmlCommentPart      htmlComment
+  hi def link htmlCssStyleComment  htmlComment
+
+  hi def link htmlString           String
+  hi def link htmlPreAttr          htmlString
+  hi def link htmlValue            htmlString
+
+  hi def link htmlError            Error
+  hi def link htmlBadArg           htmlError
+  hi def link htmlBadTag           htmlError
+  hi def link htmlCommentError     htmlError
+  hi def link htmlPreError         htmlError
+  hi def link htmlPreProcAttrError htmlError
+  hi def link htmlTagError         htmlError
+
+  hi def link htmlStatement        Statement
+
+  hi def link htmlConstant         Constant
+
+  hi def link htmlBoldItalicUnderline htmlBoldUnderlineItalic
+  hi def link htmlUnderlineItalicBold htmlBoldUnderlineItalic
+  hi def link htmlUnderlineBoldItalic htmlBoldUnderlineItalic
+  hi def link htmlItalicBoldUnderline htmlBoldUnderlineItalic
+  hi def link htmlItalicUnderlineBold htmlBoldUnderlineItalic
+
+  hi def link htmlItalicBold          htmlBoldItalic
+  hi def link htmlItalicUnderline     htmlUnderlineItalic
+  hi def link htmlUnderlineBold       htmlBoldUnderline
+
+  hi def link htmlLink Underlined
+
+  if !exists("html_style_rendering")
+    hi def htmlBold                term=bold                  cterm=bold                  gui=bold
+    hi def htmlBoldUnderline       term=bold,underline        cterm=bold,underline        gui=bold,underline
+    hi def htmlBoldItalic          term=bold,italic           cterm=bold,italic           gui=bold,italic
+    hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
+    hi def htmlUnderline           term=underline             cterm=underline             gui=underline
+    hi def htmlUnderlineItalic     term=italic,underline      cterm=italic,underline      gui=italic,underline
+    hi def htmlItalic              term=italic                cterm=italic                gui=italic
+  endif
+endif
+
+" Wiki highlighting
+
+hi def link wikiItalic        htmlItalic
+hi def link wikiBold          htmlBold
+hi def link wikiBoldItalic    htmlBoldItalic
+hi def link wikiItalicBold    htmlBoldItalic
+hi def link wikiBoldAndItalic htmlBoldItalic
+
+hi def link wikiH1 htmlTitle
+hi def link wikiH2 htmlTitle
+hi def link wikiH3 htmlTitle
+hi def link wikiH4 htmlTitle
+hi def link wikiH5 htmlTitle
+hi def link wikiH6 htmlTitle
+
+hi def link wikiLink           htmlLink
+hi def link wikiTemplate       htmlSpecial
+hi def link wikiTemplateParam  htmlSpecial
+hi def link wikiTemplateName   Type
+hi def link wikiParaFormatChar htmlSpecial
+hi def link wikiPre            htmlConstant
+hi def link wikiRef            htmlComment
+
+hi def link htmlPre            wikiPre
+hi def link wikiSource         wikiPre
+hi def link wikiSyntaxHL       wikiPre
+
+hi def link wikiTableSeparator Statement
+hi def link wikiTableFormatEnd wikiTableSeparator
+hi def link wikiTableHeadingCell htmlBold
+
+let b:current_syntax = "mediawiki"
diff --git a/runtime/syntax/mysql.vim b/runtime/syntax/mysql.vim
index 8bd7b64..49b5331 100644
--- a/runtime/syntax/mysql.vim
+++ b/runtime/syntax/mysql.vim
@@ -1,10 +1,13 @@
 " Vim syntax file
 " Language:     mysql
 " Maintainer:   Kenneth J. Pronovici 
-" Last Change:  $LastChangedDate: 2016-04-11 10:31:04 -0500 (Mon, 11 Apr 2016) $
 " Filenames:    *.mysql
-" URL:          ftp://cedar-solutions.com/software/mysql.vim
-" Note:         The definitions below are taken from the mysql user manual as of April 2002, for version 3.23
+" URL:          ftp://cedar-solutions.com/software/mysql.vim (https://github.com/pronovic/vim-syntax/blob/master/mysql.vim)
+" Note:         The definitions below are taken from the mysql user manual as of April 2002, for version 3.23 and have been updated
+"               in July 2024 with the docs for version 8.4
+" Last Change:  2016 Apr 11
+"  2024-07-21:  update MySQL functions as of MySQL 8.4 (by Vim Project)
+" 
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -92,23 +95,23 @@ syn keyword mysqlType            tinytext mediumtext longtext text
 syn keyword mysqlType            tinyblob mediumblob longblob blob
 syn region mysqlType             start="float\W" end="."me=s-1
 syn region mysqlType             start="float$" end="."me=s-1
-syn region mysqlType             start="float(" end=")" contains=mysqlNumber,mysqlVariable
+syn region mysqlType             start="\
 " URL:          https://github.com/ocaml/vim-ocaml
 " Last Change:
+"               2019 Nov 05 - Accurate type highlighting (Maëlan)
 "               2018 Nov 08 - Improved highlighting of operators (Maëlan)
 "               2018 Apr 22 - Improved support for PPX (Andrey Popp)
 "               2018 Mar 16 - Remove raise, lnot and not from keywords (Étienne Millon, "copy")
@@ -38,25 +39,18 @@ syn case match
 " Access to the method of an object
 syn match    ocamlMethod       "#"
 
-" Script headers highlighted like comments
-syn match    ocamlComment   "^#!.*" contains=@Spell
-
 " Scripting directives
 syn match    ocamlScript "^#\<\(quit\|labels\|warnings\|warn_error\|directory\|remove_directory\|cd\|load\|load_rec\|use\|mod_use\|install_printer\|remove_printer\|require\|list\|ppx\|principal\|predicates\|rectypes\|thread\|trace\|untrace\|untrace_all\|print_depth\|print_length\|camlp4o\|camlp4r\|topfind_log\|topfind_verbose\)\>"
 
 " lowercase identifier - the standard way to match
 syn match    ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
 
-syn match    ocamlKeyChar    "|"
-
 " Errors
 syn match    ocamlBraceErr   "}"
 syn match    ocamlBrackErr   "\]"
 syn match    ocamlParenErr   ")"
 syn match    ocamlArrErr     "|]"
 
-syn match    ocamlCommentErr "\*)"
-
 syn match    ocamlCountErr   "\"
 syn match    ocamlCountErr   "\"
 
@@ -75,19 +69,22 @@ else
   syn match    ocamlEndErr     "\"
 endif
 
-" Some convenient clusters
-syn cluster  ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+" These keywords are only expected nested in constructions that are handled by
+" the type linter, so outside of type contexts we highlight them as errors:
+syn match    ocamlKwErr  "\<\(mutable\|nonrec\|of\|private\)\>"
 
-syn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+" Some convenient clusters
+syn cluster  ocamlAllErrs contains=@ocamlAENoParen,ocamlParenErr
+syn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr,ocamlKwErr
 
-syn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod,ocamlVal
+syn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlModTypePre,ocamlModRHS,ocamlFuncWith,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlFullMod,ocamlVal
 
 
 " Enclosing delimiters
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}"  contains=ALLBUT,@ocamlContained,ocamlBraceErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
+syn region   ocamlNone transparent matchgroup=ocamlEncl start="(" matchgroup=ocamlEncl end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region   ocamlNone transparent matchgroup=ocamlEncl start="{" matchgroup=ocamlEncl end="}"  contains=ALLBUT,@ocamlContained,ocamlBraceErr
+syn region   ocamlNone transparent matchgroup=ocamlEncl start="\[" matchgroup=ocamlEncl end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region   ocamlNone transparent matchgroup=ocamlEncl start="\[|" matchgroup=ocamlEncl end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
 
 
 " Comments
@@ -124,10 +121,6 @@ syn region ocamlPpx matchgroup=ocamlPpxEncl start="\[@\{1,3\}" contains=TOP end=
 
 "" Modules
 
-" "sig"
-syn region   ocamlSig matchgroup=ocamlSigEncl start="\" matchgroup=ocamlSigEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
-syn region   ocamlModSpec matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr
-
 " "open"
 syn match   ocamlKeyword "\" skipwhite skipempty nextgroup=ocamlFullMod
 
@@ -135,51 +128,66 @@ syn match   ocamlKeyword "\" skipwhite skipempty nextgroup=ocamlFullMod
 syn match    ocamlKeyword "\" skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
 
 " "module" - somewhat complicated stuff ;-)
-syn region   ocamlModule matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef
-syn region   ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|=\|)"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS
-syn region   ocamlModParam start="([^*]" end=")" contained contains=ocamlGenMod,ocamlModParam1,ocamlSig,ocamlVal
+" 2022-10: please document it?
+syn region   ocamlModule matchgroup=ocamlKeyword start="\" matchgroup=ocamlModule end="\<_\|\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef
+syn region   ocamlPreDef start="."me=e-1 end="[a-z:=)]\@=" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod,ocamlModTypeRestr nextgroup=ocamlModTypePre,ocamlModPreRHS
+syn region   ocamlModParam start="(\*\@!" end=")" contained contains=ocamlGenMod,ocamlModParam,ocamlModParam1,ocamlSig,ocamlVal
 syn match    ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty
 syn match    ocamlGenMod "()" contained skipwhite skipempty
 
-syn region   ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3
-syn region   ocamlMPRestr1 matchgroup=ocamlSigEncl start="\ssig\s\=" matchgroup=ocamlSigEncl end="\" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
-syn region   ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2
-syn match    ocamlMPRestr3 "\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*" contained
+syn match    ocamlModTypePre ":" contained skipwhite skipempty nextgroup=ocamlModTRWith,ocamlSig,ocamlFunctor,ocamlModTypeRestr,ocamlModTypeOf
+syn match    ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained
+
 syn match    ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
 syn keyword  ocamlKeyword val
-syn region   ocamlVal matchgroup=ocamlKeyword start="\" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlMPRestr
+syn region   ocamlVal matchgroup=ocamlKeyword start="\" matchgroup=ocamlLCIdentifier end="\<\l\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment,ocamlFullMod skipwhite skipempty nextgroup=ocamlModTypePre
 syn region   ocamlModRHS start="." end=". *\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
 syn match    ocamlFullMod "\<\u\(\w\|'\)*\( *\. *\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith
 
-syn region   ocamlFuncWith start="([^*)]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith
-syn region   ocamlFuncStruct matchgroup=ocamlStructEncl start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlStructEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr
+syn region   ocamlFuncWith start="([*)]\@!" end=")" contained contains=ocamlComment,ocamlWith,ocamlStruct skipwhite skipempty nextgroup=ocamlFuncWith
 
-syn match    ocamlModTypeRestr "\<\w\(\w\|'\)*\( *\. *\w\(\w\|'\)*\)*\>" contained
-syn region   ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith
+syn region   ocamlModTRWith start="(\*\@!" end=")" contained contains=@ocamlAENoParen,ocamlWith
 syn match    ocamlWith "\<\(\u\(\w\|'\)* *\. *\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest
 syn region   ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained
 
 " "struct"
 syn region   ocamlStruct matchgroup=ocamlStructEncl start="\<\(module\s\+\)\=struct\>" matchgroup=ocamlStructEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr
 
+" "sig"
+syn region   ocamlSig matchgroup=ocamlSigEncl start="\" matchgroup=ocamlSigEncl end="\" contains=ALLBUT,@ocamlContained,ocamlEndErr
+
+" "functor"
+syn region   ocamlFunctor start="\" matchgroup=ocamlKeyword end="->" contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlGenMod skipwhite skipempty nextgroup=ocamlStruct,ocamlSig,ocamlFuncWith,ocamlFunctor
+
 " "module type"
-syn region   ocamlKeyword start="\\s*\\(\s*\\)\=" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
+syn region   ocamlModTypeOf start="\" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
 syn match    ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s+1 skipwhite skipempty nextgroup=ocamlFullMod
 
 " Quoted strings
 syn region ocamlString matchgroup=ocamlQuotedStringDelim start="{\z\([a-z_]*\)|" end="|\z1}" contains=@Spell
+syn region ocamlString matchgroup=ocamlQuotedStringDelim start="{%[a-z_]\+\(\.[a-z_]\+\)\?\( \z\([a-z_]\+\)\)\?|" end="|\z1}" contains=@Spell
 
 syn keyword  ocamlKeyword  and as assert class
-syn keyword  ocamlKeyword  constraint else
-syn keyword  ocamlKeyword  exception external fun
-
+syn keyword  ocamlKeyword  else
+syn keyword  ocamlKeyword  external
 syn keyword  ocamlKeyword  in inherit initializer
 syn keyword  ocamlKeyword  lazy let match
-syn keyword  ocamlKeyword  method mutable new nonrec of
-syn keyword  ocamlKeyword  parser private rec
-syn keyword  ocamlKeyword  try type
+syn keyword  ocamlKeyword  method new
+syn keyword  ocamlKeyword  parser rec
+syn keyword  ocamlKeyword  try
 syn keyword  ocamlKeyword  virtual when while with
 
+" Keywords which are handled by the type linter:
+"     as (within a type equation)
+"     constraint exception mutable nonrec of private type
+
+" The `fun` keyword has special treatment because of the syntax `fun … : t -> e`
+" where `->` ends the type context rather than being part of it; to handle that,
+" we blacklist the ocamlTypeAnnot matchgroup, and we plug ocamlFunTypeAnnot
+" instead (later in this file, by using containedin=ocamlFun):
+syn region ocamlFun matchgroup=ocamlKeyword start='\' matchgroup=ocamlArrow end='->'
+\ contains=ALLBUT,@ocamlContained,ocamlArrow,ocamlInfixOp,ocamlTypeAnnot
+
 if exists("ocaml_revised")
   syn keyword  ocamlKeyword  do value
   syn keyword  ocamlBoolean  True False
@@ -188,14 +196,10 @@ else
   syn keyword  ocamlBoolean  true false
 endif
 
-syn keyword  ocamlType     array bool char exn float format format4
-syn keyword  ocamlType     int int32 int64 lazy_t list nativeint option
-syn keyword  ocamlType     bytes string unit
-
-syn match    ocamlConstructor  "(\s*)"
-syn match    ocamlConstructor  "\[\s*\]"
-syn match    ocamlConstructor  "\[|\s*>|]"
-syn match    ocamlConstructor  "\[<\s*>\]"
+syn match    ocamlEmptyConstructor  "(\s*)"
+syn match    ocamlEmptyConstructor  "\[\s*\]"
+syn match    ocamlEmptyConstructor  "\[|\s*>|]"
+syn match    ocamlEmptyConstructor  "\[<\s*>\]"
 syn match    ocamlConstructor  "\u\(\w\|'\)*\>"
 
 " Polymorphic variants
@@ -210,26 +214,24 @@ syn match    ocamlCharErr      "'\\\d\d'\|'\\\d'"
 syn match    ocamlCharErr      "'\\[^\'ntbr]'"
 syn region   ocamlString       start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
 
-syn match    ocamlTopStop      ";;"
-
 syn match    ocamlAnyVar       "\<_\>"
-syn match    ocamlKeyChar      "|[^\]]"me=e-1
+syn match    ocamlKeyChar      "|]\@!"
 syn match    ocamlKeyChar      ";"
 syn match    ocamlKeyChar      "\~"
 syn match    ocamlKeyChar      "?"
 
+" NOTE: for correct precedence, the rule for ";;" must come after that for ";"
+syn match    ocamlTopStop      ";;"
+
 "" Operators
 
 " The grammar of operators is found there:
 "     https://caml.inria.fr/pub/docs/manual-ocaml/names.html#operator-name
 "     https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s:ext-ops
 "     https://caml.inria.fr/pub/docs/manual-ocaml/extn.html#s:index-operators
-" =, *, < and > are both operator names and keywords, we let the user choose how
-" to display them (has to be declared before regular infix operators):
+" = is both an operator name and a keyword, we let the user choose how
+" to display it (has to be declared before regular infix operators):
 syn match    ocamlEqual        "="
-syn match    ocamlStar         "*"
-syn match    ocamlAngle        "<"
-syn match    ocamlAngle        ">"
 " Custom indexing operators:
 syn region   ocamlIndexing matchgroup=ocamlIndexingOp
   \ start="\.[~?!:|&$%=>@^/*+-][~?!.:|&$%<=>@^*/+-]*\_s*("
@@ -248,8 +250,8 @@ syn match    ocamlExtensionOp          "#[#~?!.:|&$%<=>@^*/+-]\+"
 " Infix and prefix operators:
 syn match    ocamlPrefixOp              "![~?!.:|&$%<=>@^*/+-]*"
 syn match    ocamlPrefixOp           "[~?][~?!.:|&$%<=>@^*/+-]\+"
-syn match    ocamlInfixOp      "[&$%@^/+-][~?!.:|&$%<=>@^*/+-]*"
-syn match    ocamlInfixOp         "[|<=>*][~?!.:|&$%<=>@^*/+-]\+"
+syn match    ocamlInfixOp   "[&$%<>@^*/+-][~?!.:|&$%<=>@^*/+-]*"
+syn match    ocamlInfixOp            "[|=][~?!.:|&$%<=>@^*/+-]\+"
 syn match    ocamlInfixOp               "#[~?!.:|&$%<=>@^*/+-]\+#\@!"
 syn match    ocamlInfixOp              "!=[~?!.:|&$%<=>@^*/+-]\@!"
 syn keyword  ocamlInfixOpKeyword      asr land lor lsl lsr lxor mod or
@@ -266,6 +268,9 @@ else
   syn match    ocamlKeyChar    "<-[~?!.:|&$%<=>@^*/+-]\@!"
 endif
 
+" Script shebang (has to be declared after operators)
+syn match    ocamlShebang       "\%1l^#!.*$"
+
 syn match    ocamlNumber        "-\=\<\d\(_\|\d\)*[l|L|n]\?\>"
 syn match    ocamlNumber        "-\=\<0[x|X]\(\x\|_\)\+[l|L|n]\?\>"
 syn match    ocamlNumber        "-\=\<0[o|O]\(\o\|_\)\+[l|L|n]\?\>"
@@ -273,10 +278,264 @@ syn match    ocamlNumber        "-\=\<0[b|B]\([01]\|_\)\+[l|L|n]\?\>"
 syn match    ocamlFloat         "-\=\<\d\(_\|\d\)*\.\?\(_\|\d\)*\([eE][-+]\=\d\(_\|\d\)*\)\=\>"
 
 " Labels
-syn match    ocamlLabel        "\~\(\l\|_\)\(\w\|'\)*"lc=1
-syn match    ocamlLabel        "?\(\l\|_\)\(\w\|'\)*"lc=1
+syn match    ocamlLabel        "[~?]\(\l\|_\)\(\w\|'\)*:\?"
 syn region   ocamlLabel transparent matchgroup=ocamlLabel start="[~?](\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr
 
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+"" Type contexts
+
+" How we recognize type contexts is explained in `type-linter-notes.md`
+" and a test suite is found in `type-linter-test.ml`.
+"
+" ocamlTypeExpr is the cluster of things that can make up a type expression
+" (in a loose sense, e.g. the “as” keyword and universal quantification are
+" included). Regions containing a type expression use it like this:
+"
+"     contains=@ocamlTypeExpr,...
+"
+" ocamlTypeContained is the cluster of things that can be found in a type
+" expression or a type definition. It is not expected to be used in any region,
+" it exists solely for throwing things in it that should not pollute the main
+" linter.
+"
+" Both clusters are filled in incrementally. Every match group that is not to be
+" found at the main level must be declared as “contained” and added to either
+" ocamlTypeExpr or ocamlTypeContained.
+"
+" In these clusters we don’t put generic things that can also be found elswhere,
+" i.e. ocamlComment and ocamlPpx, because everything that is in these clusters
+" is also put in ocamlContained and thus ignored by the main linter.
+
+"syn cluster ocamlTypeExpr contains=
+syn cluster ocamlTypeContained contains=@ocamlTypeExpr
+syn cluster ocamlContained add=@ocamlTypeContained
+
+" We’ll use a “catch-all” highlighting group to show as error anything that is
+" not matched more specifically; we don’t want spaces to be reported as errors
+" (different background color), so we just catch them here:
+syn cluster ocamlTypeExpr add=ocamlTypeBlank
+syn match    ocamlTypeBlank    contained  "\_s\+"
+hi link ocamlTypeBlank NONE
+
+" NOTE: Carefully avoid catching "(*" here.
+syn cluster ocamlTypeExpr add=ocamlTypeParen
+syn region ocamlTypeParen contained transparent
+\ matchgroup=ocamlEncl start="(\*\@!"
+\ matchgroup=ocamlEncl end=")"
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+
+syn cluster ocamlTypeExpr add=ocamlTypeKeyChar,ocamlTypeAs
+syn match    ocamlTypeKeyChar  contained  "->"
+syn match    ocamlTypeKeyChar  contained  "\*"
+syn match    ocamlTypeKeyChar  contained  "#"
+syn match    ocamlTypeKeyChar  contained  ","
+syn match    ocamlTypeKeyChar  contained  "\."
+syn keyword  ocamlTypeAs       contained  as
+hi link ocamlTypeAs ocamlKeyword
+
+syn cluster ocamlTypeExpr add=ocamlTypeVariance
+syn match ocamlTypeVariance contained "[-+!]\ze *\('\|\<_\>\)"
+syn match ocamlTypeVariance contained "[-+] *!\+\ze *\('\|\<_\>\)"
+syn match ocamlTypeVariance contained "! *[-+]\+\ze *\('\|\<_\>\)"
+
+syn cluster ocamlTypeContained add=ocamlTypeEq
+syn match    ocamlTypeEq       contained  "[+:]\?="
+hi link ocamlTypeEq ocamlKeyChar
+
+syn cluster ocamlTypeExpr add=ocamlTypeVar,ocamlTypeConstr,ocamlTypeAnyVar,ocamlTypeBuiltin
+syn match    ocamlTypeVar      contained   "'\(\l\|_\)\(\w\|'\)*\>"
+syn match    ocamlTypeConstr   contained  "\<\(\l\|_\)\(\w\|'\)*\>"
+" NOTE: for correct precedence, the rule for the wildcard (ocamlTypeAnyVar)
+" must come after the rule for type constructors (ocamlTypeConstr).
+syn match    ocamlTypeAnyVar   contained  "\<_\>"
+" NOTE: For correct precedence, these builtin names must occur after the rule
+" for type constructors (ocamlTypeConstr) but before the rule for non-optional
+" labeled arguments (ocamlTypeLabel). For the latter to take precedence over
+" these builtin names, we use “syn match” here instead of “syn keyword”.
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+syn match    ocamlTypeBuiltin  contained  "\"
+
+syn cluster ocamlTypeExpr add=ocamlTypeLabel
+syn match    ocamlTypeLabel    contained  "?\?\(\l\|_\)\(\w\|'\)*\_s*:[>=]\@!"
+hi link ocamlTypeLabel ocamlLabel
+
+" Object type
+syn cluster ocamlTypeExpr add=ocamlTypeObject
+syn region ocamlTypeObject contained
+\ matchgroup=ocamlEncl start="<"
+\ matchgroup=ocamlEncl end=">"
+\ contains=ocamlTypeObjectDots,ocamlLCIdentifier,ocamlTypeObjectAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeObject ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeObjectDots
+syn match ocamlTypeObjectDots contained "\.\."
+hi link ocamlTypeObjectDots ocamlKeyChar
+syn cluster ocamlTypeContained add=ocamlTypeObjectAnnot
+syn region ocamlTypeObjectAnnot contained
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=ocamlKeyChar end=";\|>\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlTypeObjectAnnot ocamlTypeCatchAll
+
+" Record type definition
+syn cluster ocamlTypeContained add=ocamlTypeRecordDecl
+syn region ocamlTypeRecordDecl contained
+\ matchgroup=ocamlEncl start="{"
+\ matchgroup=ocamlEncl end="}"
+\ contains=ocamlTypeMutable,ocamlLCIdentifier,ocamlTypeRecordAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeRecordDecl ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeMutable
+syn keyword ocamlTypeMutable contained mutable
+hi link ocamlTypeMutable ocamlKeyword
+syn cluster ocamlTypeContained add=ocamlTypeRecordAnnot
+syn region ocamlTypeRecordAnnot contained
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=ocamlKeyChar end=";\|}\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlTypeRecordAnnot ocamlTypeCatchAll
+
+" Polymorphic variant types
+" NOTE: Carefully avoid catching "[@" here.
+syn cluster ocamlTypeExpr add=ocamlTypeVariant
+syn region ocamlTypeVariant contained
+\ matchgroup=ocamlEncl start="\[>" start="\[<" start="\[@\@!"
+\ matchgroup=ocamlEncl end="\]"
+\ contains=ocamlTypeVariantKeyChar,ocamlTypeVariantConstr,ocamlTypeVariantAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeVariant ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeVariantKeyChar
+syn match ocamlTypeVariantKeyChar contained "|"
+syn match ocamlTypeVariantKeyChar contained ">"
+hi link ocamlTypeVariantKeyChar ocamlKeyChar
+syn cluster ocamlTypeContained add=ocamlTypeVariantConstr
+syn match ocamlTypeVariantConstr contained "`\w\(\w\|'\)*\>"
+hi link ocamlTypeVariantConstr ocamlConstructor
+syn cluster ocamlTypeContained add=ocamlTypeVariantAnnot
+syn region ocamlTypeVariantAnnot contained
+\ matchgroup=ocamlKeyword start="\"
+\ matchgroup=ocamlKeyChar end="|\|>\|\]\@="
+\ contains=@ocamlTypeExpr,ocamlTypeAmp,ocamlComment,ocamlPpx
+hi link ocamlTypeVariantAnnot ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeAmp
+syn match ocamlTypeAmp contained "&"
+hi link ocamlTypeAmp ocamlTypeKeyChar
+
+" Sum type definition
+syn cluster ocamlTypeContained add=ocamlTypeSumDecl
+syn region ocamlTypeSumDecl contained
+\ matchgroup=ocamlTypeSumBar    start="|"
+\ matchgroup=ocamlTypeSumConstr start="\<\u\(\w\|'\)*\>"
+\ matchgroup=ocamlTypeSumConstr start="\" start="\"
+\ matchgroup=ocamlTypeSumConstr start="(\_s*)" start="\[\_s*]" start="(\_s*::\_s*)"
+\ matchgroup=NONE end="\(\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|)\|]\|}\|;\|;;\|=\)\@="
+\ matchgroup=NONE end="\(\\)\@="
+\ contains=ocamlTypeSumBar,ocamlTypeSumConstr,ocamlTypeSumAnnot,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeSumDecl ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypeSumBar
+syn match ocamlTypeSumBar contained "|"
+hi link ocamlTypeSumBar ocamlKeyChar
+syn cluster ocamlTypeContained add=ocamlTypeSumConstr
+syn match ocamlTypeSumConstr contained "\<\u\(\w\|'\)*\>"
+syn match ocamlTypeSumConstr contained "\"
+syn match ocamlTypeSumConstr contained "\"
+syn match ocamlTypeSumConstr contained "(\_s*)"
+syn match ocamlTypeSumConstr contained "\[\_s*]"
+syn match ocamlTypeSumConstr contained "(\_s*::\_s*)"
+hi link ocamlTypeSumConstr ocamlConstructor
+syn cluster ocamlTypeContained add=ocamlTypeSumAnnot
+syn region ocamlTypeSumAnnot contained
+\ matchgroup=ocamlKeyword start="\"
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=NONE end="|\@="
+\ matchgroup=NONE end="\(\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|)\|]\|}\|;\|;;\)\@="
+\ matchgroup=NONE end="\(\\)\@="
+\ contains=@ocamlTypeExpr,ocamlTypeRecordDecl,ocamlComment,ocamlPpx
+hi link ocamlTypeSumAnnot ocamlTypeCatchAll
+
+" Type context opened by “type” (type definition), “constraint” (type
+" constraint) and “exception” (exception definition)
+syn region ocamlTypeDef
+\ matchgroup=ocamlKeyword start="\\(\_s\+\\)\?\|\\|\"
+\ matchgroup=NONE end="\(\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|)\|]\|}\|;\|;;\)\@="
+\ contains=@ocamlTypeExpr,ocamlTypeEq,ocamlTypePrivate,ocamlTypeDefDots,ocamlTypeRecordDecl,ocamlTypeSumDecl,ocamlTypeDefAnd,ocamlComment,ocamlPpx
+hi link ocamlTypeDef ocamlTypeCatchAll
+syn cluster ocamlTypeContained add=ocamlTypePrivate
+syn keyword ocamlTypePrivate contained private
+hi link ocamlTypePrivate ocamlKeyword
+syn cluster ocamlTypeContained add=ocamlTypeDefAnd
+syn keyword ocamlTypeDefAnd contained and
+hi link ocamlTypeDefAnd ocamlKeyword
+syn cluster ocamlTypeContained add=ocamlTypeDefDots
+syn match ocamlTypeDefDots contained "\.\."
+hi link ocamlTypeDefDots ocamlKeyChar
+
+" When "exception" is preceded by "with", "|" or "(", that’s not an exception
+" definition but an exception pattern; we simply highlight the keyword without
+" starting a type context.
+" NOTE: These rules must occur after that for "exception".
+syn match ocamlKeyword "\"lc=4
+syn match ocamlKeyword "|\_s*exception\>"lc=1
+syn match ocamlKeyword "(\_s*exception\>"lc=1
+
+" Type context opened by “:” (countless kinds of type annotations) and “:>”
+" (type coercions)
+syn region ocamlTypeAnnot matchgroup=ocamlKeyChar start=":\(>\|\_s*type\>\|[>:=]\@!\)"
+\ matchgroup=NONE end="\(\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|\\|)\|]\|}\|;\|;;\)\@="
+\ matchgroup=NONE end="\(;\|}\)\@="
+\ matchgroup=NONE end="\(=\|:>\)\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlTypeAnnot ocamlTypeCatchAll
+
+" Type annotation that gives the return type of a `fun` keyword
+" (the type context is ended by `->`)
+syn cluster ocamlTypeContained add=ocamlFunTypeAnnot
+syn region ocamlFunTypeAnnot contained containedin=ocamlFun
+\ matchgroup=ocamlKeyChar start=":"
+\ matchgroup=NONE end="\(->\)\@="
+\ contains=@ocamlTypeExpr,ocamlComment,ocamlPpx
+hi link ocamlFunTypeAnnot ocamlTypeCatchAll
+
+" Module paths (including functors) in types.
+" NOTE: This rule must occur after the rule for ocamlTypeSumDecl as it must take
+" precedence over it (otherwise the module name would be mistakenly highlighted
+" as a constructor).
+" NOTE: Carefully avoid catching "(*" here.
+syn cluster ocamlTypeExpr add=ocamlTypeModPath
+syn match ocamlTypeModPath contained "\<\u\(\w\|'\)*\_s*\."
+syn region ocamlTypeModPath contained transparent
+\ matchgroup=ocamlModPath start="\<\u\(\w\|'\)*\_s*(\*\@!"
+\ matchgroup=ocamlModPath end=")\_s*\."
+\ contains=ocamlTypeDotlessModPath,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeModPath ocamlModPath
+syn cluster ocamlTypeContained add=ocamlTypeDotlessModPath
+syn match ocamlTypeDotlessModPath contained "\<\u\(\w\|'\)*\_s*\.\?"
+syn region ocamlTypeDotlessModPath contained transparent
+\ matchgroup=ocamlModPath start="\<\u\(\w\|'\)*\_s*(\*\@!"
+\ matchgroup=ocamlModPath end=")\_s*\.\?"
+\ contains=ocamlTypeDotlessModPath,ocamlTypeBlank,ocamlComment,ocamlPpx
+hi link ocamlTypeDotlessModPath ocamlTypeModPath
+
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
 " Synchronization
 syn sync minlines=50
@@ -306,27 +565,25 @@ hi def link ocamlBrackErr	   Error
 hi def link ocamlParenErr	   Error
 hi def link ocamlArrErr	   Error
 
-hi def link ocamlCommentErr   Error
-
 hi def link ocamlCountErr	   Error
 hi def link ocamlDoErr	   Error
 hi def link ocamlDoneErr	   Error
 hi def link ocamlEndErr	   Error
 hi def link ocamlThenErr	   Error
+hi def link ocamlKwErr	   Error
 
 hi def link ocamlCharErr	   Error
 
 hi def link ocamlErr	   Error
 
 hi def link ocamlComment	   Comment
+hi def link ocamlShebang    ocamlComment
 
 hi def link ocamlModPath	   Include
 hi def link ocamlObject	   Include
 hi def link ocamlModule	   Include
 hi def link ocamlModParam1    Include
 hi def link ocamlGenMod       Include
-hi def link ocamlModType	   Include
-hi def link ocamlMPRestr3	   Include
 hi def link ocamlFullMod	   Include
 hi def link ocamlFuncWith	   Include
 hi def link ocamlModParam     Include
@@ -339,10 +596,13 @@ hi def link ocamlStructEncl	   ocamlModule
 hi def link ocamlScript	   Include
 
 hi def link ocamlConstructor  Constant
+hi def link ocamlEmptyConstructor  ocamlConstructor
 
 hi def link ocamlVal          Keyword
+hi def link ocamlModTypePre   Keyword
 hi def link ocamlModPreRHS    Keyword
-hi def link ocamlMPRestr2	   Keyword
+hi def link ocamlFunctor	   Keyword
+hi def link ocamlModTypeOf  Keyword
 hi def link ocamlKeyword	   Keyword
 hi def link ocamlMethod	   Include
 hi def link ocamlArrow	   Keyword
@@ -352,8 +612,6 @@ hi def link ocamlTopStop	   Keyword
 
 hi def link ocamlRefAssign    ocamlKeyChar
 hi def link ocamlEqual        ocamlKeyChar
-hi def link ocamlStar         ocamlInfixOp
-hi def link ocamlAngle        ocamlInfixOp
 hi def link ocamlCons         ocamlInfixOp
 
 hi def link ocamlPrefixOp       ocamlOperator
@@ -377,7 +635,24 @@ hi def link ocamlQuotedStringDelim Identifier
 
 hi def link ocamlLabel	   Identifier
 
-hi def link ocamlType	   Type
+" Type linting groups that the user can customize:
+" - ocamlTypeCatchAll: anything in a type context that is not caught by more
+"   specific rules (in principle, this should only match syntax errors)
+" - ocamlTypeConstr: type constructors
+" - ocamlTypeBuiltin: builtin type constructors (like int or list)
+" - ocamlTypeVar: type variables ('a)
+" - ocamlTypeAnyVar: wildcard (_)
+" - ocamlTypeVariance: variance and injectivity indications (+'a, !'a)
+" - ocamlTypeKeyChar: symbols such as -> and *
+" Default values below mimick the behavior before the type linter was
+" implemented, but now we can do better. :-)
+hi def link ocamlTypeCatchAll Error
+hi def link ocamlTypeConstr   NONE
+hi def link ocamlTypeBuiltin  Type
+hi def link ocamlTypeVar      NONE
+hi def link ocamlTypeAnyVar   NONE
+hi def link ocamlTypeVariance ocamlKeyChar
+hi def link ocamlTypeKeyChar  ocamlKeyChar
 
 hi def link ocamlTodo	   Todo
 
diff --git a/runtime/syntax/opam.vim b/runtime/syntax/opam.vim
index 9ac1d41..da29662 100644
--- a/runtime/syntax/opam.vim
+++ b/runtime/syntax/opam.vim
@@ -1,5 +1,5 @@
 " Vim syntax file
-" Language:    OPAM - OCaml package manager
+" Language:    opam - OCaml package manager
 " Maintainer:  Markus Mottl        
 " URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
@@ -11,20 +11,55 @@ endif
 
 " need %{vars}%
 " env: [[CAML_LD_LIBRARY_PATH = "%{lib}%/stublibs"]]
-syn keyword opamKeyword1 remove depends pin-depends depopts conflicts env packages patches version maintainer tags license homepage authors doc install author available name depexts substs synopsis description
-syn match opamKeyword2 "\v(bug-reports|post-messages|ocaml-version|opam-version|dev-repo|build-test|build-doc|build)"
+syn iskeyword a-z,A-Z,-
+syn keyword opamKeyword1 author
+syn keyword opamKeyword1 authors
+syn keyword opamKeyword1 available
+syn keyword opamKeyword1 bug-reports
+syn keyword opamKeyword1 build
+syn keyword opamKeyword1 build-env
+syn keyword opamKeyword1 conflict-class
+syn keyword opamKeyword1 conflicts
+syn keyword opamKeyword1 depends
+syn keyword opamKeyword1 depexts
+syn keyword opamKeyword1 depopts
+syn keyword opamKeyword1 description
+syn keyword opamKeyword1 dev-repo
+syn keyword opamKeyword1 doc
+syn keyword opamKeyword1 extra-files
+syn keyword opamKeyword1 features
+syn keyword opamKeyword1 flags
+syn keyword opamKeyword1 homepage
+syn keyword opamKeyword1 install
+syn keyword opamKeyword1 libraries
+syn keyword opamKeyword1 license
+syn keyword opamKeyword1 maintainer
+syn keyword opamKeyword1 messages
+syn keyword opamKeyword1 name
+syn keyword opamKeyword1 opam-version
+syn keyword opamKeyword1 patches
+syn keyword opamKeyword1 pin-depends
+syn keyword opamKeyword1 post-messages
+syn keyword opamKeyword1 remove
+syn keyword opamKeyword1 run-test
+syn keyword opamKeyword1 setenv
+syn keyword opamKeyword1 substs
+syn keyword opamKeyword1 synopsis
+syn keyword opamKeyword1 syntax
+syn keyword opamKeyword1 tags
+syn keyword opamKeyword1 version
 
 syn keyword opamTodo FIXME NOTE NOTES TODO XXX contained
 syn match opamComment "#.*$" contains=opamTodo,@Spell
 syn match opamOperator ">\|<\|=\|<=\|>="
 
-syn region opamInterpolate start=/%{/ end=/}%/ contained
-syn region opamString start=/"/ end=/"/ contains=opamInterpolate
-syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1,opamKeyword2
-syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1,opamKeyword2
+syn match opamUnclosedInterpolate "%{[^ "]*" contained
+syn match opamInterpolate         "%{[^ "]\+}%" contained
+syn region opamString start=/"/ end=/"/ contains=opamInterpolate,OpamUnclosedInterpolate
+syn region opamSeq start=/\[/ end=/\]/ contains=ALLBUT,opamKeyword1
+syn region opamExp start=/{/ end=/}/ contains=ALLBUT,opamKeyword1
 
 hi link opamKeyword1 Keyword
-hi link opamKeyword2 Keyword
 
 hi link opamString String
 hi link opamExp Function
@@ -32,6 +67,7 @@ hi link opamSeq Statement
 hi link opamOperator Operator
 hi link opamComment Comment
 hi link opamInterpolate Identifier
+hi link opamUnclosedInterpolate Error
 
 let b:current_syntax = "opam"
 
diff --git a/runtime/syntax/progress.vim b/runtime/syntax/progress.vim
index 5e7cfef..4b8f612 100644
--- a/runtime/syntax/progress.vim
+++ b/runtime/syntax/progress.vim
@@ -3,13 +3,13 @@
 " Filename extensions:	*.p (collides with Pascal),
 "			*.i (collides with assembler)
 "			*.w (collides with cweb)
-" Maintainer:		Philip Uren		 Remove SPAXY spam block
+" Maintainer:           Daniel Smith 
+" Previous Maintainer:  Philip Uren  Remove SPAXY spam block
 " Contributors:         Matthew Stickney	
 " 			Chris Ruprecht		
 "			Mikhail Kuperblum	
 "			John Florian		
-" Version:              13
-" Last Change:		Nov 11 2012
+" Last Change:		Jul 23 2024
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -116,8 +116,10 @@ syn match ProgressShowTab "\t"
 " If you don't like white space on the end of lines, uncomment this:
 " syn match   ProgressSpaceError "\s\+$"
 
-syn region ProgressComment		start="/\*"  end="\*/" contains=ProgressComment,ProgressTodo,ProgressDebug,@Spell
-syn region ProgressInclude		start="^[ 	]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,ProgressComment
+syn region ProgressBlockComment	start="/\*"  end="\*/" contains=ProgressBlockComment,ProgressTodo,ProgressDebug,@Spell
+syn match  ProgressLineComment		"//.*$" contains=ProgressTodo,ProgressDebug,@Spell
+syn cluster ProgressComment		contains=ProgressBlockComment,ProgressLineComment
+syn region ProgressInclude		start="^[ 	]*[{]" end="[}]" contains=ProgressPreProc,ProgressOperator,ProgressString,@ProgressComment
 syn region ProgressPreProc		start="&" end="\>" contained
 
 " This next line works reasonably well.
@@ -281,6 +283,8 @@ syn sync lines=800
 hi def link ProgressByte		Number
 hi def link ProgressCase		Repeat
 hi def link ProgressComment		Comment
+hi def link ProgressBlockComment	ProgressComment
+hi def link ProgressLineComment	ProgressComment
 hi def link ProgressConditional	Conditional
 hi def link ProgressDebug		Debug
 hi def link ProgressDo		Repeat
diff --git a/runtime/syntax/scheme.vim b/runtime/syntax/scheme.vim
index c4454fc..59b0cc5 100644
--- a/runtime/syntax/scheme.vim
+++ b/runtime/syntax/scheme.vim
@@ -1,12 +1,12 @@
 " Vim syntax file
-" Language: Scheme (R7RS)
-" Last Change: 2021-01-03
-" Author: Evan Hanson 
-" Maintainer: Evan Hanson 
-" Previous Author: Dirk van Deun 
+" Language:            Scheme (R7RS)
+" Last Change:         2024 Jun 21
+" Author:              Evan Hanson 
+" Maintainer:          Evan Hanson 
+" Previous Author:     Dirk van Deun 
 " Previous Maintainer: Sergey Khorev 
-" Repository: https://git.foldling.org/vim-scheme.git
-" URL: https://foldling.org/vim/syntax/scheme.vim
+" Repository:          https://git.foldling.org/vim-scheme.git
+" URL:                 https://foldling.org/vim/syntax/scheme.vim
 
 if exists('b:current_syntax')
   finish
@@ -50,9 +50,11 @@ syn match schemeBoolean /#f\(alse\)\?/
 syn match schemeCharacter /#\\.[^ `'\t\n\[\]()]*/
 syn match schemeCharacter /#\\x[0-9a-fA-F]\+/
 
-syn match schemeComment /;.*$/ contains=@Spell
+syn match schemeComment /;.*$/ contains=schemeTodo,@Spell
 
-syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeMultilineComment,@Spell
+syn region schemeMultilineComment start=/#|/ end=/|#/ contains=schemeTodo,schemeMultilineComment,@Spell
+
+syn match schemeTodo /\c\<\(todo\|xxx\|fixme\|note\):\?\>/ contained
 
 syn region schemeForm matchgroup=schemeParentheses start="(" end=")" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
 syn region schemeForm matchgroup=schemeParentheses start="\[" end="\]" contains=ALLBUT,schemeUnquote,schemeDatumCommentForm,@schemeImportCluster
@@ -427,6 +429,7 @@ syn keyword schemeFunction write-string
 syn keyword schemeFunction write-u8
 syn keyword schemeFunction zero?
 
+hi def link schemeTodo Todo
 hi def link schemeBoolean Boolean
 hi def link schemeCharacter Character
 hi def link schemeComment Comment
diff --git a/runtime/syntax/sdc.vim b/runtime/syntax/sdc.vim
index dbfa35e..ae2aae5 100644
--- a/runtime/syntax/sdc.vim
+++ b/runtime/syntax/sdc.vim
@@ -1,9 +1,10 @@
 " Vim syntax file
 " Language:     SDC - Synopsys Design Constraints
 " Maintainer:   Maurizio Tranchero - maurizio.tranchero@gmail.com
-" Last Change:  Thu Mar  25 17:35:16 CET 2009
 " Credits:      based on TCL Vim syntax file
 " Version:	0.3
+" Last Change:  Thu Mar  25 17:35:16 CET 2009
+" 2024 Jul 17 by Vim Project (update to SDC 2.1)
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -13,16 +14,48 @@ endif
 " Read the TCL syntax to start with
 runtime! syntax/tcl.vim
 
-" SDC-specific keywords
+" TCL extension related to SDC and available from some vendors
+" (not defined in SDC standard!)
 syn keyword sdcCollections	foreach_in_collection
-syn keyword sdcObjectsQuery	get_clocks get_ports
 syn keyword sdcObjectsInfo	get_point_info get_node_info get_path_info
 syn keyword sdcObjectsInfo	get_timing_paths set_attribute
-syn keyword sdcConstraints	set_false_path
+
+" SDC rev. 2.1 specific keywords
+syn keyword sdcObjectsQuery	get_clocks get_ports get_cells
+syn keyword sdcObjectsQuery	get_pins get_nets all_inputs
+syn keyword sdcObjectsQuery	all_outputs all_registers all_clocks
+syn keyword sdcObjectsQuery	get_libs get_lib_cells get_lib_pins
+
+syn keyword sdcConstraints	set_false_path set_clock_groups set_sense
+syn keyword sdcConstraints	set_propagated_clock set_clock_gating_check
+syn keyword sdcConstraints	set_ideal_latency set_ideal_network
+syn keyword sdcConstraints	set_ideal_transistion set_max_time_borrow
+syn keyword sdcConstraints	set_data_check group_path set_max_transition
+syn keyword sdcConstraints	set_max_fanout set_driving_cell
+syn keyword sdcConstraints	set_port_fanout_number set_multi_cycle_path
+syn keyword sdcConstraints	set_disable_timing set_min_pulse_width
+
 syn keyword sdcNonIdealities	set_min_delay set_max_delay
 syn keyword sdcNonIdealities	set_input_delay set_output_delay
 syn keyword sdcNonIdealities	set_load set_min_capacitance set_max_capacitance
+syn keyword sdcNonIdealities	set_clock_latency set_clock_transition set_clock_uncertainty
+syn keyword sdcNonIdealities	set_resistance set_timing_derate set_drive
+syn keyword sdcNonIdealities	set_input_transition set_fanout_load
+
 syn keyword sdcCreateOperations	create_clock create_timing_netlist update_timing_netlist
+syn keyword sdcCreateOperations	create_generated_clock
+
+syn keyword sdcPowerArea	set_max_area create_voltage_area
+syn keyword sdcPowerArea	set_level_shifter_threshold set_max_dynamic_power
+syn keyword sdcPowerArea	set_level_shifter_strategy set_max_leakage_power
+
+syn keyword sdcModeConfig	set_case_analysis set_logic_dc
+syn keyword sdcModeConfig	set_logic_zero set_logic_one
+
+syn keyword sdcMiscCommmands	sdc_version set_wire_load_selection_group
+syn keyword sdcMiscCommmands	set_units set_wire_load_mode set_wire_load_model
+syn keyword sdcMiscCommmands	set_wire_load_min_block_size set_operating_conditions
+syn keyword sdcMiscCommmands	current_design
 
 " command flags highlighting
 syn match sdcFlags		"[[:space:]]-[[:alpha:]_]*\>"
@@ -31,9 +64,12 @@ syn match sdcFlags		"[[:space:]]-[[:alpha:]_]*\>"
 hi def link sdcCollections      Repeat
 hi def link sdcObjectsInfo      Operator
 hi def link sdcCreateOperations	Operator
-hi def link sdcObjectsQuery	Operator
+hi def link sdcObjectsQuery	Function
 hi def link sdcConstraints	Operator
 hi def link sdcNonIdealities	Operator
+hi def link sdcPowerArea	Operator
+hi def link sdcModeConfig	Operator
+hi def link sdcMiscCommmands	Operator
 hi def link sdcFlags		Special
 
 let b:current_syntax = "sdc"
diff --git a/runtime/syntax/testdir/README.txt b/runtime/syntax/testdir/README.txt
index 9c12648..3baa43b 100644
--- a/runtime/syntax/testdir/README.txt
+++ b/runtime/syntax/testdir/README.txt
@@ -6,9 +6,9 @@ highlighting enabled.  Screendumps are generated and compared with the
 expected screendumps in the "dumps" directory.  This will uncover any
 character attributes that differ.
 
-Without any further setup a screendump is made at the top of the file (using
-_00.dump) and another one at the end of the file (using _99.dump).  The dumps
-are normally 20 screen lines tall.
+The dumps are normally 20 screen lines tall.  Without any further setup
+a screendump is made at the top of the file (using _00.dump) and another
+screendump is made if there are more lines (using _01.dump), and so on.
 
 When the screendumps are OK an empty "done/{name}" file is created.  This
 avoids running the test again until "make clean" is used.  Thus you can run
@@ -18,7 +18,7 @@ again to only repeat the failing test.
 When a screendump differs it is stored in the "failed" directory.  This allows
 for comparing it with the expected screendump, using a command like:
 
-	let fname = '{name}_99.dump'
+	let fname = '{name}_00.dump'
 	call term_dumpdiff('failed/' .. fname, 'dumps/' .. fname)
 
 
@@ -27,12 +27,12 @@ Creating a syntax plugin test
 
 Create a source file in the language you want to test in the "input"
 directory.  Use the filetype name as the base and a file name extension
-matching the filetype.  Let's use Java as an example. The file would then be
+matching the filetype.  Let's use Java as an example.  The file would then be
 "input/java.java".
 
 Make sure to include some interesting constructs with plenty of complicated
 highlighting.  Optionally, pre-configure the testing environment by including
-setup commands at the top of the input file. The format for these lines is:
+setup commands at the top of the input file.  The format for these lines is:
 
 	VIM_TEST_SETUP {command}
 
@@ -61,6 +61,8 @@ an "input/setup/java.vim" script file with the following lines:
 Both inline setup commands and setup scripts may be used at the same time, the
 script file will be sourced before any VIM_TEST_SETUP commands are executed.
 
+Every line of a source file must not be longer than 1425 (19 x 75) characters.
+
 If there is no further setup required, you can now run the tests:
 
 	make test
@@ -72,14 +74,12 @@ newly created screendumps will be "failed/java_00.dump",
 	call term_dumpload('failed/java_00.dump')
 	call term_dumpload('failed/java_01.dump')
 	...
-	call term_dumpload('failed/java_99.dump')
 
 If they look OK, move them to the "dumps" directory:
 
 	:!mv failed/java_00.dump dumps
 	:!mv failed/java_01.dump dumps
 	...
-	:!mv failed/java_99.dump dumps
 
 If you now run the test again, it will succeed.
 
@@ -99,7 +99,7 @@ are covered by the test.  You can follow these steps:
    input file, carefully check that the changes in the screendump are
    intentional:
 
-	let fname = '{name}_99.dump'
+	let fname = '{name}_00.dump'
 	call term_dumpdiff('failed/' .. fname, 'dumps/' .. fname)
 
    Fix the syntax plugin until the result is good.
@@ -115,13 +115,95 @@ are covered by the test.  You can follow these steps:
 	- syntax plugin:    syntax/{name}.vim
 	- Vim setup file:   syntax/testdir/input/setup/{name}.vim (if any)
 	- test input file:  syntax/testdir/input/{name}.{ext}
-	- test dump files:  syntax/testdir/dumps/{name}_99.dump
+	- test dump files:  syntax/testdir/dumps/{name}_00.dump
+			    syntax/testdir/dumps/{name}_01.dump (if any)
+			    ...
 
 As an extra check you can temporarily put back the old syntax plugin and
 verify that the tests fail.  Then you know your changes are covered by the
 test.
 
 
+Viewing generated screendumps (local)
+-------------------------------------
+
+You may also wish to look at the whole batch of failed screendumps after
+running "make test".  Source the "viewdumps.vim" script for this task:
+
+	[VIMRUNTIME=../..] \
+	../../src/vim --clean -S testdir/viewdumps.vim \
+				[testdir/dumps/java_*.dump ...]
+
+By default, all screendumps found in the "failed" directory will be added to
+the argument list and then the first one will be loaded.  Loaded screendumps
+that bear filenames of screendumps found in the "dumps" directory will be
+rendering the contents of any such pair of files and the difference between
+them (:help term_dumpdiff()); otherwise, they will be rendering own contents
+(:help term_dumpload()).  Remember to execute :edit when occasionally you see
+raw file contents instead of rendered.
+
+At any time, you can add, list, and abandon other screendumps:
+
+	:$argedit testdir/dumps/java_*.dump
+	:args
+	:qall
+
+The listing of argument commands can be found under :help buffer-list.
+
+
+Viewing generated screendumps (from a CI-uploaded artifact)
+-----------------------------------------------------------
+
+After you have downloaded an artifact archive containing failed screendumps
+and extracted its files in a temporary directory, you need to set up a "dumps"
+directory by creating a symlink:
+
+	cd /path/to/fork
+	ln -s $(pwd)/runtime/syntax/testdir/dumps \
+				/tmp/runtime/syntax/testdir/dumps
+
+You can now examine the extracted screendumps:
+
+	./src/vim --clean -S runtime/syntax/testdir/viewdumps.vim \
+				/tmp/runtime/syntax/testdir/failed/*.dump
+
+
+Viewing generated screendumps (submitted for a pull request)
+------------------------------------------------------------
+
+First, you need to check out the topic branch with the proposed changes and
+write down a difference list between the HEAD commit (index) and its parent
+commit with respect to the changed "dumps" filenames:
+
+	cd /path/to/fork
+	git switch prs/1234
+	git diff-index --relative=runtime/syntax/testdir/dumps/ \
+				--name-only prs/1234~1 > /tmp/filelist
+
+Then, you need to check out the master branch, change the current working
+directory to reconcile relative filepaths written in the filenames list, copy
+in the "failed" directory the old "dumps" files, whose names are on the same
+list, and follow it by checking out the topic branch:
+
+	git switch master
+	cd runtime/syntax/testdir/dumps
+	cp -t ../failed $(cat /tmp/filelist)
+	git switch prs/1234
+
+Make note of any missing new screendumps.  Please remember about the
+introduced INVERTED relation between "dumps" and "failed", i.e. the files to
+be committed are in "dumps" already and their old versions are in "failed".
+Therefore, you need to copy the missing new screendumps from "dumps" to
+"failed":
+
+	cp -t ../failed foo_10.dump foo_11.dump foo_12.dump
+
+After you have changed the current working directory to its parent directory,
+you can now examine the screendumps from the "failed" directory (note that new
+screendumps will be shown with no difference between their versions):
+
+	cd ..
+	../../../src/vim --clean -S viewdumps.vim
 
 
 TODO: run test for one specific filetype
diff --git a/runtime/syntax/testdir/dumps/c_02.dump b/runtime/syntax/testdir/dumps/c_02.dump
index 72ab11f..4fcaaeb 100644
--- a/runtime/syntax/testdir/dumps/c_02.dump
+++ b/runtime/syntax/testdir/dumps/c_02.dump
@@ -1,9 +1,10 @@
-|#+0#e000e06#ffffff0|i|f| |(|d|e|f|i|n|e|d|(|U|N|I|X|)| ||@1| |d|e|f|i|n|e|d|(|V|M|S|)@1| |&@1| |!|d|e|f|i|n|e|d|(|N|O|_|V|I|M|_|M|A|I|N|)| +0#0000000&@14
+| +0&#ffffff0@74
+|#+0#e000e06&|i|f| |(|d|e|f|i|n|e|d|(|U|N|I|X|)| ||@1| |d|e|f|i|n|e|d|(|V|M|S|)@1| |&@1| |!|d|e|f|i|n|e|d|(|N|O|_|V|I|M|_|M|A|I|N|)| +0#0000000&@14
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|f|i|l|e|_|o|w|n|e|d|(|c+0#00e0003&|h|a|r| +0#0000000&|*|f|n|a|m|e|)|;| @39
 |#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|e|r@1|(|i+0#00e0003&|n|t|,+0#0000000&| |c|h|a|r|_|u| |*|)|;| @39
-|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e|a|r|l|y|_|a|r|g|_|s|c|a|n|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @31
->#+0#e000e06&|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| +0#0000000&@55
+>s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e|a|r|l|y|_|a|r|g|_|s|c|a|n|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @31
+|#+0#e000e06&|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| +0#0000000&@55
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|u|s|a|g|e|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @50
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|p|a|r|s|e|_|c|o|m@1|a|n|d|_|n|a|m|e|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @27
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|c|o|m@1|a|n|d|_|l|i|n|e|_|s|c|a|n|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @28
@@ -16,5 +17,4 @@
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|s|o|u|r|c|e|_|s|t|a|r|t|u|p|_|s|c|r|i|p|t|s|(|m|p|a|r|m|_|T| |*|p|a|r|m|p|)|;| @23
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|_|s|t|a|r|t|_|g|u|i|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @41
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|c|h|e|c|k|_|s|w|a|p|_|e|x|i|s|t|s|_|a|c|t|i|o|n|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @31
-|#+0#e000e06&| |i|f|d|e|f| |F|E|A|T|_|E|V|A|L| +0#0000000&@57
-@57|3|7|,|1| @9|2|9|%| 
+@57|3|6|,|1| @9|2|8|%| 
diff --git a/runtime/syntax/testdir/dumps/c_03.dump b/runtime/syntax/testdir/dumps/c_03.dump
index 17c6f3b..07350a7 100644
--- a/runtime/syntax/testdir/dumps/c_03.dump
+++ b/runtime/syntax/testdir/dumps/c_03.dump
@@ -1,9 +1,10 @@
-|#+0#e000e06#ffffff0| |i|f|d|e|f| |F|E|A|T|_|E|V|A|L| +0#0000000&@57
+|s+0#00e0003#ffffff0|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|c|h|e|c|k|_|s|w|a|p|_|e|x|i|s|t|s|_|a|c|t|i|o|n|(|v+0#00e0003&|o|i|d|)+0#0000000&|;| @31
+|#+0#e000e06&| |i|f|d|e|f| |F|E|A|T|_|E|V|A|L| +0#0000000&@57
 |s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|s|e|t|_|p|r|o|g|p|a|t|h|(|c|h|a|r|_|u| |*|a|r|g|v|0|)|;| @34
 |#+0#e000e06&| |e|n|d|i|f| +0#0000000&@67
 |#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
-@75
 > @74
+@75
 |/+0#0000e05&|*| +0#0000000&@72
 | +0#0000e05&|*| |D|i|f@1|e|r|e|n|t| |t|y|p|e|s| |o|f| |e|r@1|o|r| |m|e|s@1|a|g|e|s|.| +0#0000000&@37
 | +0#0000e05&|*|/| +0#0000000&@71
@@ -16,5 +17,4 @@
 @4|N|_|(|"+0#e000002&|A|r|g|u|m|e|n|t| |m|i|s@1|i|n|g| |a|f|t|e|r|"|)+0#0000000&|,| @41
 |#+0#e000e06&|d|e|f|i|n|e| |M|E|_|A|R|G|_|M|I|S@1|I|N|G| @9|2+0#e000002&| +0#0000000&@41
 @4|N|_|(|"+0#e000002&|G|a|r|b|a|g|e| |a|f|t|e|r| |o|p|t|i|o|n| |a|r|g|u|m|e|n|t|"|)+0#0000000&|,| @34
-|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|G|A|R|B|A|G|E| @13|3+0#e000002&| +0#0000000&@41
-@57|5@1|,|0|-|1| @7|4|7|%| 
+@57|5|4|,|0|-|1| @7|4|6|%| 
diff --git a/runtime/syntax/testdir/dumps/c_04.dump b/runtime/syntax/testdir/dumps/c_04.dump
index 03804a5..1d2d511 100644
--- a/runtime/syntax/testdir/dumps/c_04.dump
+++ b/runtime/syntax/testdir/dumps/c_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@3|N|_|(|"+0#e000002&|T|o@1| |m|a|n|y| |\+0#e000e06&|"|++0#e000002&|c|o|m@1|a|n|d|\+0#e000e06&|"|,+0#e000002&| |\+0#e000e06&|"|-+0#e000002&|c| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|o|r| |\+0#e000e06&|"|-+0#e000002&@1|c|m|d| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|a|r|g|u|m|e|n|t
+| +0&#ffffff0@3|N|_|(|"+0#e000002&|G|a|r|b|a|g|e| |a|f|t|e|r| |o|p|t|i|o|n| |a|r|g|u|m|e|n|t|"|)+0#0000000&|,| @34
+|#+0#e000e06&|d|e|f|i|n|e| |M|E|_|G|A|R|B|A|G|E| @13|3+0#e000002&| +0#0000000&@41
+@4|N|_|(|"+0#e000002&|T|o@1| |m|a|n|y| |\+0#e000e06&|"|++0#e000002&|c|o|m@1|a|n|d|\+0#e000e06&|"|,+0#e000002&| |\+0#e000e06&|"|-+0#e000002&|c| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|o|r| |\+0#e000e06&|"|-+0#e000002&@1|c|m|d| |c|o|m@1|a|n|d|\+0#e000e06&|"| +0#e000002&|a|r|g|u|m|e|n|t
 |s|"|)+0#0000000&|,| @70
 |#+0#e000e06&|d|e|f|i|n|e| |M|E|_|E|X|T|R|A|_|C|M|D| @11|4+0#e000002&| +0#0000000&@41
-@4|N|_|(|"+0#e000002&|I|n|v|a|l|i|d| |a|r|g|u|m|e|n|t| |f|o|r|"|)+0#0000000&|,| @43
+@4>N|_|(|"+0#e000002&|I|n|v|a|l|i|d| |a|r|g|u|m|e|n|t| |f|o|r|"|)+0#0000000&|,| @43
 |#+0#e000e06&|d|e|f|i|n|e| |M|E|_|I|N|V|A|L|I|D|_|A|R|G| @9|5+0#e000002&| +0#0000000&@41
->}|;| @72
+|}|;| @72
 @75
 |#+0#e000e06&|i|f|n|d|e|f| |P|R|O|T|O| @10|/+0#0000e05&@1| |d|o|n|'|t| |w|a|n|t| |a| |p|r|o|t|o|t|y|p|e| |f|o|r| |m|a|i|n|(|)| +0#0000000&@14
 @75
@@ -15,6 +17,4 @@
 |#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
 @75
 |#+0#e000e06&|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| @4|/+0#0000e05&@1| |s|k|i|p| |t|h|i|s| |f|o|r| |u|n|i|t@1|e|s|t|s| +0#0000000&@24
-@75
-|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c|h|a|r|_|u| |*|s|t|a|r|t|_|d|i|r| |=| |N+0#e000002&|U|L@1|;+0#0000000&| @7|/+0#0000e05&@1| |c|u|r@1|e|n|t| |w|o|r|k|i|n|g| |d|i|r| |o|n| |s|t|a|r|t|u|p| +0#0000000&@1
-@57|7|3|,|1| @9|6|4|%| 
+@57|7|1|,|5| @9|6|2|%| 
diff --git a/runtime/syntax/testdir/dumps/c_05.dump b/runtime/syntax/testdir/dumps/c_05.dump
index 6871cd0..4d26c2e 100644
--- a/runtime/syntax/testdir/dumps/c_05.dump
+++ b/runtime/syntax/testdir/dumps/c_05.dump
@@ -1,9 +1,11 @@
-|s+0#00e0003#ffffff0|t|a|t|i|c| +0#0000000&|c|h|a|r|_|u| |*|s|t|a|r|t|_|d|i|r| |=| |N+0#e000002&|U|L@1|;+0#0000000&| @7|/+0#0000e05&@1| |c|u|r@1|e|n|t| |w|o|r|k|i|n|g| |d|i|r| |o|n| |s|t|a|r|t|u|p| +0#0000000&@1
+|#+0#e000e06#ffffff0|i|f|n|d|e|f| |N|O|_|V|I|M|_|M|A|I|N| @4|/+0#0000e05&@1| |s|k|i|p| |t|h|i|s| |f|o|r| |u|n|i|t@1|e|s|t|s| +0#0000000&@24
 @75
-|s+0#00e0003&|t|a|t|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|h|a|s|_|d|a|s|h|_|c|_|a|r|g| |=| |F|A|L|S|E|;| @40
+|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c|h|a|r|_|u| |*|s|t|a|r|t|_|d|i|r| |=| |N+0#e000002&|U|L@1|;+0#0000000&| @7|/+0#0000e05&@1| |c|u|r@1|e|n|t| |w|o|r|k|i|n|g| |d|i|r| |o|n| |s|t|a|r|t|u|p| +0#0000000&@1
 @75
+|s+0#00e0003&|t|a|t|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|h|a|s|_|d|a|s|h|_|c|_|a|r|g| |=| |F|A|L|S|E|;| @40
+> @74
 |#+0#e000e06&| |i|f|d|e|f| |V|I|M|D|L@1| +0#0000000&@60
->_@1|d|e|c|l|s|p|e|c|(|d|l@1|e|x|p|o|r|t|)| @53
+|_@1|d|e|c|l|s|p|e|c|(|d|l@1|e|x|p|o|r|t|)| @53
 |#+0#e000e06&| |e|n|d|i|f| +0#0000000&@67
 @4|i+0#00e0003&|n|t| +0#0000000&@67
 |#+0#e000e06&| |i|f|d|e|f| |M|S|W|I|N| +0#0000000&@61
@@ -15,6 +17,4 @@
 |{| @73
 |#+0#e000e06&|i|f| |d|e|f|i|n|e|d|(|S|T|A|R|T|U|P|T|I|M|E|)| ||@1| |d|e|f|i|n|e|d|(|C|L|E|A|N|_|R|U|N|T|I|M|E|P|A|T|H|)| +0#0000000&@20
 @4|i+0#00e0003&|n|t| +0#0000000&@8|i|;| @56
-|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
-@75
-@57|9|1|,|1| @9|8|1|%| 
+@57|8|9|,|0|-|1| @7|7|9|%| 
diff --git a/runtime/syntax/testdir/dumps/c_06.dump b/runtime/syntax/testdir/dumps/c_06.dump
index 55b9f38..389d6e4 100644
--- a/runtime/syntax/testdir/dumps/c_06.dump
+++ b/runtime/syntax/testdir/dumps/c_06.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@3|i+0#00e0003&|n|t| +0#0000000&@8|i|;| @56
+|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
+@75
 @4|/+0#0000e05&|*| +0#0000000&@68
 | +0#0000e05&@4|*| |D|o| |a|n|y| |s|y|s|t|e|m|-|s|p|e|c|i|f|i|c| |i|n|i|t|i|a|l|i|s|a|t|i|o|n|s|.| @1|T|h|e|s|e| |c|a|n| |N|O|T| |u|s|e| |I|O|b|u|f@1| |o|r
-| @4|*| |N|a|m|e|B|u|f@1|.| @1|T|h|u|s| |e|m|s|g|2|(|)| |c|a|n@1|o|t| |b|e| |c|a|l@1|e|d|!| +0#0000000&@26
+| @4>*| |N|a|m|e|B|u|f@1|.| @1|T|h|u|s| |e|m|s|g|2|(|)| |c|a|n@1|o|t| |b|e| |c|a|l@1|e|d|!| +0#0000000&@26
 | +0#0000e05&@4|*|/| +0#0000000&@67
-@4>m|c|h|_|e|a|r|l|y|_|i|n|i|t|(|)|;| @53
+@4|m|c|h|_|e|a|r|l|y|_|i|n|i|t|(|)|;| @53
 @75
 @4|/+0#0000e05&@1| |S|o|u|r|c|e| |s|t|a|r|t|u|p| |s|c|r|i|p|t|s|.| +0#0000000&@44
 @4|s|o|u|r|c|e|_|s|t|a|r|t|u|p|_|s|c|r|i|p|t|s|(|&|p|a|r|a|m|s|)|;| @38
@@ -15,6 +17,4 @@
 | +0#0000e05&@4|*|/| +0#0000000&@67
 | +0#0000e05&@3|r|e|t|u|r|n| |m|z|s|c|h|e|m|e|_|m|a|i|n|(|)|;| +0#0000000&@47
 |#+0#e000e06&|e|l|s|e| +0#0000000&@69
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v|i|m|_|m|a|i|n|2|(|)|;| @51
-|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
-@57|1|0|9|,|5| @8|9@1|%| 
+@57|1|0|7|,|6| @8|9|7|%| 
diff --git a/runtime/syntax/testdir/dumps/c_07.dump b/runtime/syntax/testdir/dumps/c_07.dump
new file mode 100644
index 0000000..22be2f8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/c_07.dump
@@ -0,0 +1,20 @@
+|#+0#e000e06#ffffff0|e|l|s|e| +0#0000000&@69
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v|i|m|_|m|a|i|n|2|(|)|;| @51
+|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/c_99.dump b/runtime/syntax/testdir/dumps/c_99.dump
deleted file mode 100644
index 1af9a49..0000000
--- a/runtime/syntax/testdir/dumps/c_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|/+0#0000e05&|*| +0#0000000&@68
-| +0#0000e05&@4|*| |D|o| |a|n|y| |s|y|s|t|e|m|-|s|p|e|c|i|f|i|c| |i|n|i|t|i|a|l|i|s|a|t|i|o|n|s|.| @1|T|h|e|s|e| |c|a|n| |N|O|T| |u|s|e| |I|O|b|u|f@1| |o|r
-| @4|*| |N|a|m|e|B|u|f@1|.| @1|T|h|u|s| |e|m|s|g|2|(|)| |c|a|n@1|o|t| |b|e| |c|a|l@1|e|d|!| +0#0000000&@26
-| +0#0000e05&@4|*|/| +0#0000000&@67
-@4|m|c|h|_|e|a|r|l|y|_|i|n|i|t|(|)|;| @53
-@75
-@4|/+0#0000e05&@1| |S|o|u|r|c|e| |s|t|a|r|t|u|p| |s|c|r|i|p|t|s|.| +0#0000000&@44
-@4|s|o|u|r|c|e|_|s|t|a|r|t|u|p|_|s|c|r|i|p|t|s|(|&|p|a|r|a|m|s|)|;| @38
-@75
-|#+0#e000e06&|i|f| |0| +0#0000000&@69
-| +0#0000e05&@3|/|*| +0#0000000&@68
-| +0#0000e05&@4|*| |N|e|w|e|r| |v|e|r|s|i|o|n| |o|f| |M|z|S|c|h|e|m|e| |(|R|a|c|k|e|t|)| |r|e|q|u|i|r|e| |e|a|r|l|i|e|r| |(|t|r|a|m|p|o|l|i|n|e|d|)| +0#0000000&@3
-| +0#0000e05&@4|*| |i|n|i|t|i|a|l|i|s|a|t|i|o|n| |v|i|a| |s|c|h|e|m|e|_|m|a|i|n|_|s|e|t|u|p|.| +0#0000000&@30
-| +0#0000e05&@4|*|/| +0#0000000&@67
-| +0#0000e05&@3|r|e|t|u|r|n| |m|z|s|c|h|e|m|e|_|m|a|i|n|(|)|;| +0#0000000&@47
-|#+0#e000e06&|e|l|s|e| +0#0000000&@69
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v|i|m|_|m|a|i|n|2|(|)|;| @51
-|#+0#e000e06&|e|n|d|i|f| +0#0000000&@68
->}| @73
-@57|1|2|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_01_00.dump b/runtime/syntax/testdir/dumps/dots_01_00.dump
new file mode 100644
index 0000000..c3fe7ba
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_00.dump
@@ -0,0 +1,20 @@
+>.+0&#ffffff0@73|1
+|.@73|2
+|.@73|3
+|.@73|4
+|.@29|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@28|5
+|.@28|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@28|6
+|.@32|r|u|l|e|r|.@35|7
+|.@73|8
+|.@73|9
+|.@72|1|0
+|.@72|1@1
+|.@72|1|2
+|.@72|1|3
+|.@72|1|4
+|.@72|1|5
+|.@72|1|6
+|.@72|1|7
+|.@72|1|8
+|.@72|1|9
+| @56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_01_01.dump b/runtime/syntax/testdir/dumps/dots_01_01.dump
new file mode 100644
index 0000000..dad9942
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_01.dump
@@ -0,0 +1,20 @@
+|.+0&#ffffff0@72|1|4
+|.@72|1|5
+|.@72|1|6
+|.@72|1|7
+|.@72|1|8
+>.@72|1|9
+|.@72|2|0
+|.@72|2|1
+|.@72|2@1
+|.@72|2|3
+|.@72|2|4
+|.@72|2|5
+|.@72|2|6
+|.@72|2|7
+|.@72|2|8
+|.@72|2|9
+|.@72|3|0
+|.@72|3|1
+|.@72|3|2
+| @56|1|9|,|1| @9|3|1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_01_02.dump b/runtime/syntax/testdir/dumps/dots_01_02.dump
new file mode 100644
index 0000000..1710831
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_02.dump
@@ -0,0 +1,20 @@
+|.+0&#ffffff0@72|3|2
+|.@72|3@1
+|.@72|3|4
+|.@72|3|5
+|.@72|3|6
+>.@72|3|7
+|.@72|3|8
+|.@72|3|9
+|.@72|4|0
+|.@72|4|1
+|.@72|4|2
+|.@72|4|3
+|.@72|4@1
+|.@72|4|5
+|.@72|4|6
+|.@72|4|7
+|.@72|4|8
+|.@72|4|9
+|.@72|5|0
+| @56|3|7|,|1| @9|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_01_03.dump b/runtime/syntax/testdir/dumps/dots_01_03.dump
new file mode 100644
index 0000000..e011d4e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_01_03.dump
@@ -0,0 +1,20 @@
+|.+0&#ffffff0@72|5|0
+|.@72|5|1
+|.@72|5|2
+|.@72|5|3
+|.@72|5|4
+>.@72|5@1
+|.@72|5|6
+|.@72|5|7
+|.@72|5|8
+|.@72|5|9
+|.@72|6|0
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_02_00.dump b/runtime/syntax/testdir/dumps/dots_02_00.dump
new file mode 100644
index 0000000..1e9c10f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2| @73
+|3|.@73
+|4| @73
+|5|.@73
+|6| @73
+|7|.@73
+|8| @73
+|9|.@27|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|0| @72
+|1@1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|1|2| @72
+|1|3|.@29|r|u|l|e|r|.@37
+|1|4| @72
+|1|5|.@72
+|1|6| @72
+|1|7|.@72
+|1|8| @72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_02_01.dump b/runtime/syntax/testdir/dumps/dots_02_01.dump
new file mode 100644
index 0000000..336d6be
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|3|.@29|r|u|l|e|r|.@37
+|1|4| @72
+|1|5|.@72
+|1|6| @72
+|1|7|.@72
+|1|8| @72
+>1|9|.@72
+|2|0| @72
+|2|1|.@72
+|2@1| @72
+|2|3|.@72
+|2|4| @72
+|2|5|.@72
+|2|6| @72
+|2|7|.@72
+|2|8| @72
+|2|9|.@72
+|3|0| @72
+|3|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|0|,|1| @9|2|8|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_02_02.dump b/runtime/syntax/testdir/dumps/dots_02_02.dump
new file mode 100644
index 0000000..b43d613
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_02.dump
@@ -0,0 +1,20 @@
+|3+0&#ffffff0|1|.@72
+|3|2| @72
+|3@1|.@72
+|3|4| @72
+|3|5|.@72
+|3|6| @72
+>3|7|.@72
+|3|8| @72
+|3|9|.@72
+|4|0| @72
+|4|1|.@72
+|4|2| @72
+|4|3|.@72
+|4@1| @72
+|4|5|.@72
+|4|6| @72
+|4|7|.@72
+|4|8| @72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|9|,|1| @9|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_02_03.dump b/runtime/syntax/testdir/dumps/dots_02_03.dump
new file mode 100644
index 0000000..3d1d04e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_02_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|9|.@72
+|5|0| @72
+|5|1|.@72
+|5|2| @72
+|5|3|.@72
+|5|4| @72
+>5@1|.@72
+|5|6| @72
+|5|7|.@72
+|5|8| @72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_03_00.dump b/runtime/syntax/testdir/dumps/dots_03_00.dump
new file mode 100644
index 0000000..35e038f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3| @73
+|4|.@73
+|5|.@73
+|6| @73
+|7|.@73
+|8|.@73
+|9| @73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|4|.@72
+|1|5| @72
+|1|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|1|7|.@72
+|1|8| @72
+|1|9|.@29|r|u|l|e|r|.@34|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_03_01.dump b/runtime/syntax/testdir/dumps/dots_03_01.dump
new file mode 100644
index 0000000..d1b4945
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|3|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|4|.@72
+|1|5| @72
+|1|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|1|7|.@72
+|1|8| @72
+>1|9|.@29|r|u|l|e|r|.@37
+|2|0|.@72
+|2|1| @72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@72
+|2|6|.@72
+|2|7| @72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|7|,|1| @10|2|8|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_03_02.dump b/runtime/syntax/testdir/dumps/dots_03_02.dump
new file mode 100644
index 0000000..56b0065
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_02.dump
@@ -0,0 +1,20 @@
+|3+0&#ffffff0|1|.@72
+|3|2|.@72
+|3@1| @72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+>3|7|.@72
+|3|8|.@72
+|3|9| @72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|3|,|1| @9|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_03_03.dump b/runtime/syntax/testdir/dumps/dots_03_03.dump
new file mode 100644
index 0000000..a4a873a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_03_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|9|.@72
+|5|0|.@72
+|5|1| @72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+>5@1|.@72
+|5|6|.@72
+|5|7| @72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_04_00.dump b/runtime/syntax/testdir/dumps/dots_04_00.dump
new file mode 100644
index 0000000..3848d3f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4| @73
+|5|.@73
+|6|.@73
+|7|.@73
+|8| @73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+|1|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_04_01.dump b/runtime/syntax/testdir/dumps/dots_04_01.dump
new file mode 100644
index 0000000..b86ce50
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_01.dump
@@ -0,0 +1,20 @@
+|9+0&#ffffff0|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+>1|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@72
+|2|0| @72
+|2|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@29|r|u|l|e|r|.@37
+|2|6|.@72
+|2|7|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|5|,|1| @10|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_04_02.dump b/runtime/syntax/testdir/dumps/dots_04_02.dump
new file mode 100644
index 0000000..aa50446
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_02.dump
@@ -0,0 +1,20 @@
+|2+0&#ffffff0|5|.@29|r|u|l|e|r|.@37
+|2|6|.@72
+|2|7|.@72
+|2|8| @72
+>2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2| @72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|8|,|1| @10|5|4|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_04_03.dump b/runtime/syntax/testdir/dumps/dots_04_03.dump
new file mode 100644
index 0000000..f90875c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1| @72
+>4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2| @72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|2|,|1| @9|9|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_04_04.dump b/runtime/syntax/testdir/dumps/dots_04_04.dump
new file mode 100644
index 0000000..397d261
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_04_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|5|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_05_00.dump b/runtime/syntax/testdir/dumps/dots_05_00.dump
new file mode 100644
index 0000000..0f36067
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5| @73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0| @72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5| @72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_05_01.dump b/runtime/syntax/testdir/dumps/dots_05_01.dump
new file mode 100644
index 0000000..65aea94
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5| @72
+>1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0| @72
+|2|1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5| @72
+|2|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|2|7|.@72
+|2|8|.@72
+|2|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|2@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_05_02.dump b/runtime/syntax/testdir/dumps/dots_05_02.dump
new file mode 100644
index 0000000..fff0e65
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_02.dump
@@ -0,0 +1,20 @@
+|2+0&#ffffff0|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+>3|1|.@29|r|u|l|e|r|.@37
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5| @72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|7|,|1| @10|5@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_05_03.dump b/runtime/syntax/testdir/dumps/dots_05_03.dump
new file mode 100644
index 0000000..2e7337c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+>4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0| @72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1| @72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|0|,|1| @9|8@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_05_04.dump b/runtime/syntax/testdir/dumps/dots_05_04.dump
new file mode 100644
index 0000000..cfa410c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_05_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_06_00.dump b/runtime/syntax/testdir/dumps/dots_06_00.dump
new file mode 100644
index 0000000..0f57329
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6| @73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_06_01.dump b/runtime/syntax/testdir/dumps/dots_06_01.dump
new file mode 100644
index 0000000..ad5c871
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+>1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|2|8|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_06_02.dump b/runtime/syntax/testdir/dumps/dots_06_02.dump
new file mode 100644
index 0000000..41845be
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_02.dump
@@ -0,0 +1,20 @@
+|3+0&#ffffff0|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+>3|7|.@29|r|u|l|e|r|.@37
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|7|,|1| @10|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_06_03.dump b/runtime/syntax/testdir/dumps/dots_06_03.dump
new file mode 100644
index 0000000..eb9f846
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_06_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+>5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_07_00.dump b/runtime/syntax/testdir/dumps/dots_07_00.dump
new file mode 100644
index 0000000..d0623f4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7| @73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4| @72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_07_01.dump b/runtime/syntax/testdir/dumps/dots_07_01.dump
new file mode 100644
index 0000000..98cd186
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_01.dump
@@ -0,0 +1,20 @@
+|8+0&#ffffff0|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4| @72
+>1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1| @72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|1|4|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_07_02.dump b/runtime/syntax/testdir/dumps/dots_07_02.dump
new file mode 100644
index 0000000..719d589
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8| @72
+|2|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5| @72
+|3|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|4|2|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_07_03.dump b/runtime/syntax/testdir/dumps/dots_07_03.dump
new file mode 100644
index 0000000..d0cdd0d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@29|r|u|l|e|r|.@37
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9| @72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|6|,|1| @10|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_07_04.dump b/runtime/syntax/testdir/dumps/dots_07_04.dump
new file mode 100644
index 0000000..eae929e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_07_04.dump
@@ -0,0 +1,20 @@
+|5+0&#ffffff0|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+>5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_08_00.dump b/runtime/syntax/testdir/dumps/dots_08_00.dump
new file mode 100644
index 0000000..eb079df
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8| @73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_08_01.dump b/runtime/syntax/testdir/dumps/dots_08_01.dump
new file mode 100644
index 0000000..d17eb98
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_01.dump
@@ -0,0 +1,20 @@
+|9+0&#ffffff0|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+>1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|1|6|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_08_02.dump b/runtime/syntax/testdir/dumps/dots_08_02.dump
new file mode 100644
index 0000000..fc959de
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2| @72
+|3@1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_08_03.dump b/runtime/syntax/testdir/dumps/dots_08_03.dump
new file mode 100644
index 0000000..348a883
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|6|,|1| @10|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_08_04.dump b/runtime/syntax/testdir/dumps/dots_08_04.dump
new file mode 100644
index 0000000..864c59c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_08_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_09_00.dump b/runtime/syntax/testdir/dumps/dots_09_00.dump
new file mode 100644
index 0000000..10b63c9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9| @73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_09_01.dump b/runtime/syntax/testdir/dumps/dots_09_01.dump
new file mode 100644
index 0000000..a3792a2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_01.dump
@@ -0,0 +1,20 @@
+|1+0&#ffffff0|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+>1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7| @72
+|2|8|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_09_02.dump b/runtime/syntax/testdir/dumps/dots_09_02.dump
new file mode 100644
index 0000000..3a0f1c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+|4|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|6|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_09_03.dump b/runtime/syntax/testdir/dumps/dots_09_03.dump
new file mode 100644
index 0000000..00202be
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_09_03.dump
@@ -0,0 +1,20 @@
+|4+0&#ffffff0|6|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+>5@1|.@29|r|u|l|e|r|.@37
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3| @72
+|~+0#4040ff13&| @73
+| +0#0000000&@56|7|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_10_00.dump b/runtime/syntax/testdir/dumps/dots_10_00.dump
new file mode 100644
index 0000000..1760049
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0| @72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_10_01.dump b/runtime/syntax/testdir/dumps/dots_10_01.dump
new file mode 100644
index 0000000..d7a64b4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0| @72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_10_02.dump b/runtime/syntax/testdir/dumps/dots_10_02.dump
new file mode 100644
index 0000000..a6eae12
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_10_03.dump b/runtime/syntax/testdir/dumps/dots_10_03.dump
new file mode 100644
index 0000000..a0e58b5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|1|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0| @72
+|4|1|.@25|w|i|h@1|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|6|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_10_04.dump b/runtime/syntax/testdir/dumps/dots_10_04.dump
new file mode 100644
index 0000000..195e243
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_04.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|1|.@25|w|i|h@1|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0| @72
+|5|1|.@29|r|u|l|e|r|.@37
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|5|,|1| @10|8|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_10_05.dump b/runtime/syntax/testdir/dumps/dots_10_05.dump
new file mode 100644
index 0000000..2ed226d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_10_05.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|1|.@29|r|u|l|e|r|.@37
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_11_00.dump b/runtime/syntax/testdir/dumps/dots_11_00.dump
new file mode 100644
index 0000000..c3d7d80
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1| @72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_11_01.dump b/runtime/syntax/testdir/dumps/dots_11_01.dump
new file mode 100644
index 0000000..eb8c9aa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1| @72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_11_02.dump b/runtime/syntax/testdir/dumps/dots_11_02.dump
new file mode 100644
index 0000000..51c79bd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1| @72
+|3|4|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_11_03.dump b/runtime/syntax/testdir/dumps/dots_11_03.dump
new file mode 100644
index 0000000..8d0079f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|4|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1| @72
+|4|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|6|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_11_04.dump b/runtime/syntax/testdir/dumps/dots_11_04.dump
new file mode 100644
index 0000000..b09d07d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_04.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1| @72
+|5|6|.@29|r|u|l|e|r|.@37
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|5|,|1| @10|8|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_11_05.dump b/runtime/syntax/testdir/dumps/dots_11_05.dump
new file mode 100644
index 0000000..005b9c6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_11_05.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|6|.@29|r|u|l|e|r|.@37
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_12_00.dump b/runtime/syntax/testdir/dumps/dots_12_00.dump
new file mode 100644
index 0000000..601363c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2| @72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_12_01.dump b/runtime/syntax/testdir/dumps/dots_12_01.dump
new file mode 100644
index 0000000..223a502
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4| @72
+|2|5|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_12_02.dump b/runtime/syntax/testdir/dumps/dots_12_02.dump
new file mode 100644
index 0000000..39efd9e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|5|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_12_03.dump b/runtime/syntax/testdir/dumps/dots_12_03.dump
new file mode 100644
index 0000000..400a07a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_03.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_12_04.dump b/runtime/syntax/testdir/dumps/dots_12_04.dump
new file mode 100644
index 0000000..8041b65
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_12_04.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_13_00.dump b/runtime/syntax/testdir/dumps/dots_13_00.dump
new file mode 100644
index 0000000..0f11722
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3| @72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_13_01.dump b/runtime/syntax/testdir/dumps/dots_13_01.dump
new file mode 100644
index 0000000..5e5e588
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6| @72
+|2|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_13_02.dump b/runtime/syntax/testdir/dumps/dots_13_02.dump
new file mode 100644
index 0000000..b094b93
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9| @72
+|4|0|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_13_03.dump b/runtime/syntax/testdir/dumps/dots_13_03.dump
new file mode 100644
index 0000000..68db8d9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|0|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2| @72
+|5|3|.@29|r|u|l|e|r|.@37
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_13_04.dump b/runtime/syntax/testdir/dumps/dots_13_04.dump
new file mode 100644
index 0000000..a778894
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_13_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|3|.@29|r|u|l|e|r|.@37
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_14_00.dump b/runtime/syntax/testdir/dumps/dots_14_00.dump
new file mode 100644
index 0000000..0964d57
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4| @72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_14_01.dump b/runtime/syntax/testdir/dumps/dots_14_01.dump
new file mode 100644
index 0000000..8942184
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8| @72
+|2|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|2|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_14_02.dump b/runtime/syntax/testdir/dumps/dots_14_02.dump
new file mode 100644
index 0000000..7a631f8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_02.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2| @72
+|4|3|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_14_03.dump b/runtime/syntax/testdir/dumps/dots_14_03.dump
new file mode 100644
index 0000000..f38ff60
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|3|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6| @72
+|5|7|.@29|r|u|l|e|r|.@37
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|4|,|1| @10|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_14_04.dump b/runtime/syntax/testdir/dumps/dots_14_04.dump
new file mode 100644
index 0000000..7ad0b7f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_14_04.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|7|.@29|r|u|l|e|r|.@37
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8|.@72
+|6|9|.@72
+|7|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_15_00.dump b/runtime/syntax/testdir/dumps/dots_15_00.dump
new file mode 100644
index 0000000..2894a87
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5| @72
+|1|6|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|7|.@72
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_15_01.dump b/runtime/syntax/testdir/dumps/dots_15_01.dump
new file mode 100644
index 0000000..c97e636
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|6|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0| @72
+|3|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_15_02.dump b/runtime/syntax/testdir/dumps/dots_15_02.dump
new file mode 100644
index 0000000..31039f4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5| @72
+|4|6|.@29|r|u|l|e|r|.@37
+|4|7|.@72
+|4|8|.@72
+|4|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_15_03.dump b/runtime/syntax/testdir/dumps/dots_15_03.dump
new file mode 100644
index 0000000..9ffb78e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_15_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|6|.@29|r|u|l|e|r|.@37
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_16_00.dump b/runtime/syntax/testdir/dumps/dots_16_00.dump
new file mode 100644
index 0000000..5e739cb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6| @72
+|1|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_16_01.dump b/runtime/syntax/testdir/dumps/dots_16_01.dump
new file mode 100644
index 0000000..d3a44bb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|7|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|8|.@72
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2| @72
+|3@1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|4|.@72
+|3|5|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_16_02.dump b/runtime/syntax/testdir/dumps/dots_16_02.dump
new file mode 100644
index 0000000..69b5cd9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0@1|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8| @72
+|4|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_16_03.dump b/runtime/syntax/testdir/dumps/dots_16_03.dump
new file mode 100644
index 0000000..f872019
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_16_03.dump
@@ -0,0 +1,20 @@
+>4+0&#ffffff0|9|.@29|r|u|l|e|r|.@37
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_17_00.dump b/runtime/syntax/testdir/dumps/dots_17_00.dump
new file mode 100644
index 0000000..77b956d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7| @72
+|1|8|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|9|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_17_01.dump b/runtime/syntax/testdir/dumps/dots_17_01.dump
new file mode 100644
index 0000000..7f755b9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|8|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|1|9|.@72
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4| @72
+|3|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|6|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_17_02.dump b/runtime/syntax/testdir/dumps/dots_17_02.dump
new file mode 100644
index 0000000..911b019
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|5|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|6|.@72
+|3|7|.@72
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1| @72
+|5|2|.@30|r|u|l|e|r|.@36
+|5|3|.@69|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_17_03.dump b/runtime/syntax/testdir/dumps/dots_17_03.dump
new file mode 100644
index 0000000..3802678
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_17_03.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|2|.@30|r|u|l|e|r|.@36
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8| @72
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_18_00.dump b/runtime/syntax/testdir/dumps/dots_18_00.dump
new file mode 100644
index 0000000..7c9fb22
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8| @72
+|1|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_18_01.dump b/runtime/syntax/testdir/dumps/dots_18_01.dump
new file mode 100644
index 0000000..b134abd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_01.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|9|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|0|.@72
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6| @72
+|3|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@27|@+0#4040ff13&@2
+| +0#0000000&@56|2|,|1| @10|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_18_02.dump b/runtime/syntax/testdir/dumps/dots_18_02.dump
new file mode 100644
index 0000000..10fea3b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|7|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|3|8|.@72
+|3|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4| @72
+|5@1|.@30|r|u|l|e|r|.@33|@+0#4040ff13&@2
+| +0#0000000&@56|3|,|1| @10|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_18_03.dump b/runtime/syntax/testdir/dumps/dots_18_03.dump
new file mode 100644
index 0000000..ea90ef4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_18_03.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0@1|.@30|r|u|l|e|r|.@36
+|5|6|.@72
+|5|7|.@72
+|5|8|.@72
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8|.@72
+|6|9|.@72
+|7|0|.@72
+|7|1|.@72
+|7|2| @72
+|~+0#4040ff13&| @73
+| +0#0000000&@56|4|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_19_00.dump b/runtime/syntax/testdir/dumps/dots_19_00.dump
new file mode 100644
index 0000000..599db81
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@73
+|6|.@73
+|7|.@73
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9| @72
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_19_01.dump b/runtime/syntax/testdir/dumps/dots_19_01.dump
new file mode 100644
index 0000000..59034b9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_01.dump
@@ -0,0 +1,20 @@
+>2+0&#ffffff0|0|.@26|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@30
+|2|1|.@72
+|2@1|.@72
+|2|3|.@72
+|2|4|.@72
+|2|5|.@72
+|2|6|.@72
+|2|7|.@72
+|2|8|.@72
+|2|9|.@72
+|3|0|.@72
+|3|1|.@72
+|3|2|.@72
+|3@1|.@72
+|3|4|.@72
+|3|5|.@72
+|3|6|.@72
+|3|7|.@72
+|3|8| @72
+@57|2|,|1| @10|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_19_02.dump b/runtime/syntax/testdir/dumps/dots_19_02.dump
new file mode 100644
index 0000000..d38c4a9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_02.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|9|.@25|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@30
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7| @72
+@57|3|,|1| @10|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/dots_19_03.dump b/runtime/syntax/testdir/dumps/dots_19_03.dump
new file mode 100644
index 0000000..be794bb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_19_03.dump
@@ -0,0 +1,20 @@
+>5+0&#ffffff0|8|.@30|r|u|l|e|r|.@36
+|5|9|.@72
+|6|0|.@72
+|6|1|.@72
+|6|2|.@72
+|6|3|.@72
+|6|4|.@72
+|6|5|.@72
+|6@1|.@72
+|6|7|.@72
+|6|8|.@72
+|6|9|.@72
+|7|0|.@72
+|7|1|.@72
+|7|2|.@72
+|7|3|.@72
+|7|4|.@72
+|7|5|.@72
+|7|6| @72
+@57|4|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/dots_20_00.dump b/runtime/syntax/testdir/dumps/dots_20_00.dump
new file mode 100644
index 0000000..5103c34
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_20_00.dump
@@ -0,0 +1,20 @@
+>1+0&#ffffff0|.@73
+|2|.@73
+|3|.@73
+|4|.@73
+|5|.@28|w|i|n|w|i|d|t|h|(|0|)|:| |7|5|.@29
+|6|.@27|w|i|n|h|e|i|g|h|t|(|0|)|:| |1|9|.@29
+|7|.@31|r|u|l|e|r|.@36
+|8|.@73
+|9|.@73
+|1|0|.@72
+|1@1|.@72
+|1|2|.@72
+|1|3|.@72
+|1|4|.@72
+|1|5|.@72
+|1|6|.@72
+|1|7|.@72
+|1|8|.@72
+|1|9|.@72
+| @56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/dots_20_01.dump b/runtime/syntax/testdir/dumps/dots_20_01.dump
new file mode 100644
index 0000000..09c1fcc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/dots_20_01.dump
@@ -0,0 +1,20 @@
+>3+0&#ffffff0|9|.@72
+|4|0|.@72
+|4|1|.@72
+|4|2|.@72
+|4|3|.@72
+|4@1|.@72
+|4|5|.@72
+|4|6|.@72
+|4|7|.@72
+|4|8|.@72
+|4|9|.@72
+|5|0|.@72
+|5|1|.@72
+|5|2|.@72
+|5|3|.@72
+|5|4|.@72
+|5@1|.@72
+|5|6|.@72
+|5|7|.@72
+| @56|2|,|1| @10|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/html_01.dump b/runtime/syntax/testdir/dumps/html_01.dump
index 48b11e6..dbc1969 100644
--- a/runtime/syntax/testdir/dumps/html_01.dump
+++ b/runtime/syntax/testdir/dumps/html_01.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|a+0#af5f00255&|b@1|r|>+0#00e0e07&|<|/|a+0#af5f00255&|b@1|r|>+0#00e0e07&| +0#0000000&@61
+|<+0#0000e05#ffffff0|!|-@1| |H|T|M|L| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@52
+|<+0#00e0e07&|a+0#af5f00255&|>+0#00e0e07&|<|/|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|a+0#af5f00255&|b@1|r|>+0#00e0e07&|<|/|a+0#af5f00255&|b@1|r|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|a+0#af5f00255&|d@1|r|e|s@1|>+0#00e0e07&|<|/|a+0#af5f00255&|d@1|r|e|s@1|>+0#00e0e07&| +0#0000000&@55
 |<+0#00e0e07&|a+0#af5f00255&|r|e|a|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&|<|/|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&| +0#0000000&@55
+><+0#00e0e07&|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&|<|/|a+0#af5f00255&|r|t|i|c|l|e|>+0#00e0e07&| +0#0000000&@55
 |<+0#00e0e07&|a+0#af5f00255&|s|i|d|e|>+0#00e0e07&|<|/|a+0#af5f00255&|s|i|d|e|>+0#00e0e07&| +0#0000000&@59
-><+0#00e0e07&|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&|<|/|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07&|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&|<|/|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@59
 |<+0#00e0e07&|b+0#af5f00255&|>+0#00e0e07&|b+0#0000000&|r|i|n|g| |a|t@1|e|n|t|i|o|n| |t|o|<+0#00e0e07&|/|b+0#af5f00255&|>+0#00e0e07&| +0#0000000&@49
 |<+0#00e0e07&|b+0#af5f00255&|a|s|e|>+0#00e0e07&| +0#0000000&@68
 |<+0#00e0e07&|b+0#af5f00255&|d|i|>+0#00e0e07&|<|/|b+0#af5f00255&|d|i|>+0#00e0e07&| +0#0000000&@63
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|c+0#af5f00255&|a|n|v|a|s|>+0#00e0e07&|<|/|c+0#af5f00255&|a|n|v|a|s|>+0#00e0e07&| +0#0000000&@57
 |<+0#00e0e07&|c+0#af5f00255&|a|p|t|i|o|n|>+0#00e0e07&|<|/|c+0#af5f00255&|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@55
 |<+0#00e0e07&|c+0#af5f00255&|i|t|e|>+0#00e0e07&|<|/|c+0#af5f00255&|i|t|e|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&|<|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
-@57|1|9|,|1| @10|9|%| 
+@57|1|7|,|1| @10|8|%| 
diff --git a/runtime/syntax/testdir/dumps/html_02.dump b/runtime/syntax/testdir/dumps/html_02.dump
index bc55823..16f3cf2 100644
--- a/runtime/syntax/testdir/dumps/html_02.dump
+++ b/runtime/syntax/testdir/dumps/html_02.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
+|<+0#00e0e07#ffffff0|c+0#af5f00255&|i|t|e|>+0#00e0e07&|<|/|c+0#af5f00255&|i|t|e|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&|<|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|c+0#af5f00255&|o|l|>+0#00e0e07&| +0#0000000&@69
 |<+0#00e0e07&|c+0#af5f00255&|o|l|g|r|o|u|p|>+0#00e0e07&|<|/|c+0#af5f00255&|o|l|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@53
 |<+0#00e0e07&|d+0#af5f00255&|a|t|a|>+0#00e0e07&|<|/|d+0#af5f00255&|a|t|a|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&|<|/|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&| +0#0000000&@53
+><+0#00e0e07&|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&|<|/|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&| +0#0000000&@53
 |<+0#00e0e07&|d+0#af5f00255&@1|>+0#00e0e07&|<|/|d+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
-><+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|d+0#0000000&|e|l|e|t|e|d| |t|e|x|t|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@51
+|<+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|d+0#0000000&|e|l|e|t|e|d| |t|e|x|t|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@51
 |<+0#00e0e07&|d+0#af5f00255&|e|t|a|i|l|s|>+0#00e0e07&|<|/|d+0#af5f00255&|e|t|a|i|l|s|>+0#00e0e07&| +0#0000000&@55
 |<+0#00e0e07&|d+0#af5f00255&|f|n|>+0#00e0e07&|<|/|d+0#af5f00255&|f|n|>+0#00e0e07&| +0#0000000&@63
 |<+0#00e0e07&|d+0#af5f00255&|i|a|l|o|g|>+0#00e0e07&|<|/|d+0#af5f00255&|i|a|l|o|g|>+0#00e0e07&| +0#0000000&@57
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|f+0#af5f00255&|i|e|l|d|s|e|t|>+0#00e0e07&|<|/|f+0#af5f00255&|i|e|l|d|s|e|t|>+0#00e0e07&| +0#0000000&@53
 |<+0#00e0e07&|f+0#af5f00255&|i|g|c|a|p|t|i|o|n|>+0#00e0e07&|<|/|f+0#af5f00255&|i|g|c|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@49
 |<+0#00e0e07&|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&|<|/|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&| +0#0000000&@57
-|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&|<|/|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@57
-|<+0#00e0e07&|f+0#af5f00255&|o|r|m|>+0#00e0e07&|<|/|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@61
-@57|3|7|,|1| @9|2|3|%| 
+@57|3|5|,|1| @9|2|1|%| 
diff --git a/runtime/syntax/testdir/dumps/html_03.dump b/runtime/syntax/testdir/dumps/html_03.dump
index 4953d71..6883fd4 100644
--- a/runtime/syntax/testdir/dumps/html_03.dump
+++ b/runtime/syntax/testdir/dumps/html_03.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|f+0#af5f00255&|o|r|m|>+0#00e0e07&|<|/|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07#ffffff0|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&|<|/|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&|<|/|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|f+0#af5f00255&|o|r|m|>+0#00e0e07&|<|/|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|h+0#af5f00255&|1|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |1|<+0#00e0e07&|/|h+0#af5f00255&|1|>+0#00e0e07&| +0#0000000&@50
 |<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |3|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@50
-|<+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |4|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@50
+><+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |4|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@50
 |<+0#00e0e07&|h+0#af5f00255&|4|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |4|<+0#00e0e07&|/|h+0#af5f00255&|4|>+0#00e0e07&| +0#0000000&@50
-><+0#00e0e07&|h+0#af5f00255&|5|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |5|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@50
+|<+0#00e0e07&|h+0#af5f00255&|5|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |5|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@50
 |<+0#00e0e07&|h+0#af5f00255&|6|>+0#00e0e07&|H+0#0000000&|e|a|d|i|n|g| |L|e|v|e|l| |6|<+0#00e0e07&|/|h+0#af5f00255&|6|>+0#00e0e07&| +0#0000000&@50
 |<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&|<|/|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&|<|/|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&| +0#0000000&@57
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|i+0#af5f00255&|m|g|>+0#00e0e07&| +0#0000000&@69
 |<+0#00e0e07&|i+0#af5f00255&|n|p|u|t|>+0#00e0e07&| +0#0000000&@67
 |<+0#00e0e07&|i+0#af5f00255&|n|s|>+0#00e0e07&|<|/|i+0#af5f00255&|n|s|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|k+0#af5f00255&|b|d|>+0#00e0e07&|<|/|k+0#af5f00255&|b|d|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&|<|/|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@59
-@57|5@1|,|1| @9|3|6|%| 
+@57|5|3|,|1| @9|3|5|%| 
diff --git a/runtime/syntax/testdir/dumps/html_04.dump b/runtime/syntax/testdir/dumps/html_04.dump
index b2416e8..6e4aa7c 100644
--- a/runtime/syntax/testdir/dumps/html_04.dump
+++ b/runtime/syntax/testdir/dumps/html_04.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&|<|/|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07#ffffff0|i+0#af5f00255&|n|s|>+0#00e0e07&|<|/|i+0#af5f00255&|n|s|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|k+0#af5f00255&|b|d|>+0#00e0e07&|<|/|k+0#af5f00255&|b|d|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&|<|/|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@59
 |<+0#00e0e07&|l+0#af5f00255&|e|g|e|n|d|>+0#00e0e07&|<|/|l+0#af5f00255&|e|g|e|n|d|>+0#00e0e07&| +0#0000000&@57
 |<+0#00e0e07&|l+0#af5f00255&|i|>+0#00e0e07&|<|/|l+0#af5f00255&|i|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|l+0#af5f00255&|i|n|k|>+0#00e0e07&| +0#0000000&@68
+><+0#00e0e07&|l+0#af5f00255&|i|n|k|>+0#00e0e07&| +0#0000000&@68
 |<+0#00e0e07&|m+0#af5f00255&|a|i|n|>+0#00e0e07&|<|/|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@61
-><+0#00e0e07&|m+0#af5f00255&|a|p|>+0#00e0e07&|<|/|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|m+0#af5f00255&|a|p|>+0#00e0e07&|<|/|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@63
 |<+0#00e0e07&|m+0#af5f00255&|a|r|k|>+0#00e0e07&|<|/|m+0#af5f00255&|a|r|k|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|m+0#af5f00255&|e|n|u|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|m+0#af5f00255&|e|t|a|>+0#00e0e07&| +0#0000000&@68
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|o+0#af5f00255&|p|t|g|r|o|u|p|>+0#00e0e07&|<|/|o+0#af5f00255&|p|t|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@53
 |<+0#00e0e07&|o+0#af5f00255&|p|t|i|o|n|>+0#00e0e07&|<|/|o+0#af5f00255&|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@57
 |<+0#00e0e07&|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&|<|/|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&| +0#0000000&@57
-|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|<|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&|<|/|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@55
-@57|7|3|,|1| @9|5|0|%| 
+@57|7|1|,|1| @9|4|8|%| 
diff --git a/runtime/syntax/testdir/dumps/html_05.dump b/runtime/syntax/testdir/dumps/html_05.dump
index 20df53e..c643720 100644
--- a/runtime/syntax/testdir/dumps/html_05.dump
+++ b/runtime/syntax/testdir/dumps/html_05.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&|<|/|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@55
+|<+0#00e0e07#ffffff0|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&|<|/|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|<|/|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&|<|/|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@55
 |<+0#00e0e07&|p+0#af5f00255&|r|e|>+0#00e0e07&|p+0#0000000&|r|e|f|o|r|m|a|t@1|e|d| |t|e|x|t|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@46
 |<+0#00e0e07&|p+0#af5f00255&|r|o|g|r|e|s@1|>+0#00e0e07&|<|/|p+0#af5f00255&|r|o|g|r|e|s@1|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|q+0#af5f00255&|>+0#00e0e07&|<|/|q+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
+><+0#00e0e07&|q+0#af5f00255&|>+0#00e0e07&|<|/|q+0#af5f00255&|>+0#00e0e07&| +0#0000000&@67
 |<+0#00e0e07&|r+0#af5f00255&|p|>+0#00e0e07&|<|/|r+0#af5f00255&|p|>+0#00e0e07&| +0#0000000&@65
-><+0#00e0e07&|r+0#af5f00255&|t|>+0#00e0e07&|<|/|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|r+0#af5f00255&|t|>+0#00e0e07&|<|/|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@65
 |<+0#00e0e07&|r+0#af5f00255&|u|b|y|>+0#00e0e07&|<|/|r+0#af5f00255&|u|b|y|>+0#00e0e07&| +0#0000000&@61
 |<+0#0000e05&|!|-@1| |F|r|e@1|B|S|D| |f|a|i|l|u|r|e| +0#0000000&@54
 |<+0#0000e05&|s|>|s|t|r|i|k|e|t|h|r|o|u|g|h|<|/|s|>| +0#0000000&@54
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|s+0#af5f00255&|e|l|e|c|t|>+0#00e0e07&|<|/|s+0#af5f00255&|e|l|e|c|t|>+0#00e0e07&| +0#0000000&@57
 |<+0#00e0e07&|s+0#af5f00255&|l|o|t|>+0#00e0e07&|<|/|s+0#af5f00255&|l|o|t|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&|<|/|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|s+0#af5f00255&|o|u|r|c|e|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@61
-@57|9|1|,|1| @9|6|3|%| 
+@57|8|9|,|1| @9|6|1|%| 
diff --git a/runtime/syntax/testdir/dumps/html_06.dump b/runtime/syntax/testdir/dumps/html_06.dump
index d24392f..5696b87 100644
--- a/runtime/syntax/testdir/dumps/html_06.dump
+++ b/runtime/syntax/testdir/dumps/html_06.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07#ffffff0|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&|<|/|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07&|s+0#af5f00255&|o|u|r|c|e|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07&|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|s+0#0000000&|t|r|o|n|g| |i|m|p|o|r|t|a|n|c|e|<+0#00e0e07&|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&| +0#0000000&@40
 |<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&|<|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|s+0#af5f00255&|u|b|>+0#00e0e07&|<|/|s+0#af5f00255&|u|b|>+0#00e0e07&| +0#0000000&@63
+><+0#00e0e07&|s+0#af5f00255&|u|b|>+0#00e0e07&|<|/|s+0#af5f00255&|u|b|>+0#00e0e07&| +0#0000000&@63
 |<+0#00e0e07&|s+0#af5f00255&|u|m@1|a|r|y|>+0#00e0e07&|<|/|s+0#af5f00255&|u|m@1|a|r|y|>+0#00e0e07&| +0#0000000&@55
-><+0#00e0e07&|s+0#af5f00255&|u|p|>+0#00e0e07&|<|/|s+0#af5f00255&|u|p|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|s+0#af5f00255&|u|p|>+0#00e0e07&|<|/|s+0#af5f00255&|u|p|>+0#00e0e07&| +0#0000000&@63
 |<+0#00e0e07&|t+0#af5f00255&|a|b|l|e|>+0#00e0e07&|<|/|t+0#af5f00255&|a|b|l|e|>+0#00e0e07&| +0#0000000&@59
 |<+0#00e0e07&|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&|<|/|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&| +0#0000000&@59
 |<+0#00e0e07&|t+0#af5f00255&|d|>+0#00e0e07&|<|/|t+0#af5f00255&|d|>+0#00e0e07&| +0#0000000&@65
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|t+0#af5f00255&|i|m|e|>+0#00e0e07&|<|/|t+0#af5f00255&|i|m|e|>+0#00e0e07&| +0#0000000&@61
 |<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|<|/|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&| +0#0000000&@59
 |<+0#00e0e07&|t+0#af5f00255&|r|>+0#00e0e07&|<|/|t+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|t+0#af5f00255&|r|a|c|k|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|u+0#af5f00255&|>+0#00e0e07&|u+0#0000000&|n|a|r|t|i|c|u|l|a|t|e|d| |a|n@1|o|t|a|t|i|o|n|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@43
-@57|1|0|9|,|1| @8|7|6|%| 
+@57|1|0|7|,|1| @8|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/html_07.dump b/runtime/syntax/testdir/dumps/html_07.dump
index 8a56d4d..5c57ac4 100644
--- a/runtime/syntax/testdir/dumps/html_07.dump
+++ b/runtime/syntax/testdir/dumps/html_07.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|u+0#af5f00255&|>+0#00e0e07&|u+0#0000000&|n|a|r|t|i|c|u|l|a|t|e|d| |a|n@1|o|t|a|t|i|o|n|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@43
+|<+0#00e0e07#ffffff0|t+0#af5f00255&|r|>+0#00e0e07&|<|/|t+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|t+0#af5f00255&|r|a|c|k|>+0#00e0e07&| +0#0000000&@67
+|<+0#00e0e07&|u+0#af5f00255&|>+0#00e0e07&|u+0#0000000&|n|a|r|t|i|c|u|l|a|t|e|d| |a|n@1|o|t|a|t|i|o|n|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@43
 |<+0#00e0e07&|u+0#af5f00255&|l|>+0#00e0e07&|<|/|u+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@65
 |<+0#00e0e07&|v+0#af5f00255&|a|r|>+0#00e0e07&|<|/|v+0#af5f00255&|a|r|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&|<|/|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&| +0#0000000&@59
+><+0#00e0e07&|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&|<|/|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&| +0#0000000&@59
 |<+0#00e0e07&|w+0#af5f00255&|b|r|>+0#00e0e07&| +0#0000000&@69
-><+0#00e0e07&|x+0#af5f00255&|m|p|>+0#00e0e07&|<|/|x+0#af5f00255&|m|p|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|x+0#af5f00255&|m|p|>+0#00e0e07&|<|/|x+0#af5f00255&|m|p|>+0#00e0e07&| +0#0000000&@63
 @75
 |<+0#0000e05&|!|-@1| |D|e|p|r|e|c|a|t|e|d| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@46
 |<+0#00e0e07&|a+0#af5f00255&|c|r|o|n|y|m|>+0#00e0e07&|<|/|a+0#af5f00255&|c|r|o|n|y|m|>+0#00e0e07&| +0#0000000&@55
@@ -15,6 +17,4 @@
 |<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&|<|/|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@53
 |<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&|<|/|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@55
 |<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&|<|/|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
-@57|1|2|7|,|1| @8|9|0|%| 
+@57|1|2|5|,|1| @8|8@1|%| 
diff --git a/runtime/syntax/testdir/dumps/html_08.dump b/runtime/syntax/testdir/dumps/html_08.dump
index 02a68e7..dbae33a 100644
--- a/runtime/syntax/testdir/dumps/html_08.dump
+++ b/runtime/syntax/testdir/dumps/html_08.dump
@@ -1,9 +1,11 @@
-|<+0#00e0e07#ffffff0|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07#ffffff0|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&|<|/|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
 |<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
 |<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&|<|/|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&|<|/|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@63
+><+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&|<|/|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@63
 |<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|s+0#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@44
-><+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&|<|/|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&|<|/|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
 @75
 |<+0#0000e05&|!|-@1| |E|x|p|e|r|i|m|e|n|t|a|l| |-| |n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |-@1|>| +0#0000000&@35
 |<+0#00e0e07&|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&|<|/|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&| +0#0000000&@57
@@ -15,6 +17,4 @@
 |~+0#4040ff13&| @73
 |~| @73
 |~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|4|5|,|1| @8|B|o|t| 
+| +0#0000000&@56|1|4|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/html_99.dump b/runtime/syntax/testdir/dumps/html_99.dump
deleted file mode 100644
index 14866b6..0000000
--- a/runtime/syntax/testdir/dumps/html_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&|<|/|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&|<|/|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&|<|/|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@55
-|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&|<|/|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&|<|/|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@61
-|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&|<|/|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@53
-|<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&|<|/|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&|<|/|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@63
-|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|s+0#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@44
-|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&|<|/|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@65
-@75
-|<+0#0000e05&|!|-@1| |E|x|p|e|r|i|m|e|n|t|a|l| |-| |n|o|t| |h|i|g|h|l|i|g|h|t|e|d| |-@1|>| +0#0000000&@35
-|<+0#00e0e07&|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&|<|/|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&| +0#0000000&@57
-@75
-|<+0#0000e05&|!|-@1| |N|o|t|e|:| |t|h|e|s|e| |d|e|p|r|e|c|a|t|e|d| |e|l|e|m|e|n|t|s| |h|a|v|e| |n|e|v|e|r| |b|e@1|n| |m|a|t|c|h|e|d| |-@1|>| +0#0000000&@10
-|<+0#00e0e07&|i+0#0000000&|m|a|g|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|n+0#0000000&|o|e|m|b|e|d|>+0#00e0e07&| +0#0000000&@65
-><+0#00e0e07&|p+0#0000000&|l|a|i|n|t|e|x|t|>+0#00e0e07&| +0#0000000&@63
-@57|1|5|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_annotations_99.dump b/runtime/syntax/testdir/dumps/java_annotations_99.dump
deleted file mode 100644
index 7d158f2..0000000
--- a/runtime/syntax/testdir/dumps/java_annotations_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#e000002#ffffff0@3|o|\| +0#0000000&@68
-| +0#e000002&@3|O|\| +0#0000000&@68
-| +0#e000002&@3|p|"+0#0000000&@2|)+0#e000e06&| +0#0000000&@65
-@4|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|/+0#0000e05&|*|,| |k|i|n|d| |=| |"|n|a|m|e|"|*|/|)+0#e000e06&@1| +0#0000000&@14
-@4|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|M|e|t|h|o|d|"|,| +0#0000000&@43
-@8|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @36
-@8|r|e|d|u|n|d|a|n|t| |=| |!@2|(|1+0#e000002&| +0#0000000&|!|=| |1+0#e000002&|)+0#0000000&|,| @42
-@8|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @36
-@8|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
-| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|n|o|O|p|(|@+0#e000e06&|L|a|b|e|l| +0#00e0e07&|@+0#e000e06&|L|a|b|e|l|(|)| +0#00e0e07&|@+0#e000e06&|L|a|b|e|l|(|"+0#e000002&|d|u|m@1|y|"|)+0#e000e06&| +0#0000000&@22
-| +0#00e0e07&@7|@+0#e000e06&|L|a|b|e|l|(|h+0#00e0e07&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|/+0#0000e05&|*|v|a|l|u|e| |=| |"|@|L|a|b|e|l|"|,|*|/| +0#00e0e07&|k|i|n|d| |=| |"+0#e000002&|n|a|m|e|"|)+0#e000e06&@1| +0#0000000&@10
-| +0#00e0e07&@7|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|P|a|r|a|m|e|t|e|r|"|,| +0#0000000&@36
-| +0#00e0e07&@11|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#00e0e07&| +0#0000000&@32
-| +0#00e0e07&@11|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#00e0e07&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#00e0e07&| +0#0000000&@32
-| +0#00e0e07&@11|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#00e0e07&| |"+0#e000002&|)|{|"|,+0#00e0e07&| |"+0#e000002&|}|(|"| +0#00e0e07&|}|)+0#e000e06&@1| +0#0000000&@33
-| +0#00e0e07&@7|O|b|j|e|c|t| |d|u|m@1|y|)| +0#0000000&@53
-@4|{| @69
-@4|}| @69
->}| @73
-@57|7|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump
new file mode 100644
index 0000000..9cb2182
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s| @51
+|{| @73
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g| @56
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@8|S|t|r|i|n|g| |k+0#00e0e07&|i|n|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @41
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|e|x|t| @55
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|{|"+0#e000002&@1|}+0#0000000&|;| @36
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump
new file mode 100644
index 0000000..32d606a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|e|x|t| @55
+@4|{| @69
+@8>S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|{|"+0#e000002&@1|}+0#0000000&|;| @36
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&| @61
+@8|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| @47
+@8|E|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|,| @44
+@8|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|,| @49
+@4|}|)+0#e000e06&| +0#0000000&@68
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|L|a|b|e|l|s| @53
+@4|{| @69
+@8|L|a|b|e|l|[|]| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @50
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|{+0#0000000&| @40
+@57|1|9|,|3|-|9| @7|2@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump
new file mode 100644
index 0000000..67c0975
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|{+0#0000000&| @40
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| @26
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|,| @23
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|,| @28
+@4|}|)+0#e000e06&| +0#0000000&@68
+@4>@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|L+0#0000000&|a|b|e|l|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@24
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|L|a|b|e|l| @54
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@8|C|l|a|s@1|<|?|>| |t+0#00e0e07&|y|p|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|L|a|b|e|l|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @30
+@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|r+0#00e0e07&|e|d|u|n|d|a|n|t|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|t+0#e000002&|r|u|e|;+0#0000000&| @33
+@8|T|e|x|t| |t+0#00e0e07&|e|x|t|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|e|x|t|;+0#0000000&| @40
+@8|T|a|g| |h+0#00e0e07&|e|a|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|)|;+0#0000000&| @40
+@8|T|a|g| |t+0#00e0e07&|a|i|l|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&@1|,+0#0000000&| |k|i|n|d| |=| |"+0#e000002&@1|)+0#e000e06&|;+0#0000000&| @19
+@4|}| @69
+@75
+@4|/+0#0000e05&|*| |U|s|e| |i|d|e|n|t|i|t|y| |c|a|s|t| |e|x|p|r|e|s@1|i|o|n|s| |t|o| |n|e|s|t| |T|Y|P|E|_|U|S|E| |a|n@1|o|t|a|t|i|o|n|s|.| |*|/| +0#0000000&@5
+@32|@+0#e000e06&|L|a|b|e|l|(| +0#0000000&@35
+@28|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| @38
+@57|3|7|,|2|-|5| @7|5|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump
new file mode 100644
index 0000000..fcc187f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| @38
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|a|"|,+0#0000000&| |"+0#e000002&|a@1|"|,+0#0000000&| |"+0#e000002&|a@2|"|,+0#0000000&| |"+0#e000002&|a@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|a|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|b|"|,+0#0000000&| |"+0#e000002&|b@1|"|,+0#0000000&| |"+0#e000002&|b@2|"|,+0#0000000&| |"+0#e000002&|b@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|b|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|c|"|,+0#0000000&| |"+0#e000002&|c@1|"|,+0#0000000&| |"+0#e000002&|c@2|"|,+0#0000000&| |"+0#e000002&|c@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|c|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|d|"|,+0#0000000&| |"+0#e000002&|d@1|"|,+0#0000000&| |"+0#e000002&|d@2|"|,+0#0000000&| |"+0#e000002&|d@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|d|s|"|,+0#0000000&| @15
+@28>}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|a|b|c|d|"|)+0#e000e06&| +0#0000000&@28
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|P|r|i|m|e|r| |{| |}| @50
+@75
+@4|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#0000000&@2| @44
+| +0#e000002&@3|n|\| +0#0000000&@68
+| +0#e000002&@3|o|\| +0#0000000&@68
+| +0#e000002&@3|O|\| +0#0000000&@68
+| +0#e000002&@3|p|"+0#0000000&@2|)+0#e000e06&| +0#0000000&@65
+@4|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|/+0#0000e05&|*|,| |k|i|n|d| |=| |"|n|a|m|e|"|*|/|)+0#e000e06&@1| +0#0000000&@14
+@4|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|M|e|t|h|o|d|"|,| +0#0000000&@43
+@8|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @35
+@8|r|e|d|u|n|d|a|n|t| |=| |!@2|(|1+0#e000002&| +0#0000000&|!|=| |1+0#e000002&|)+0#0000000&|,| @42
+@8|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @36
+@8|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@57|5@1|,|8|-|2|9| @6|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump b/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump
new file mode 100644
index 0000000..635080c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|n+0#00e0e07&|o|O|p|(|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#e000002&|d|u|m@1|y|"|)+0#e000e06&| +0#0000000&@22
+@8|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|/+0#0000e05&|*|v|a|l|u|e| |=| |"|@|L|a|b|e|l|"|,|*|/| +0#0000000&|k|i|n|d| |=| |"+0#e000002&|n|a|m|e|"|)+0#e000e06&@1| +0#0000000&@10
+@8|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|P|a|r|a|m|e|t|e|r|"|,| +0#0000000&@36
+@12|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @31
+@12>h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @32
+@12|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|)|{|"|,+0#0000000&| |"+0#e000002&|}|(|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@33
+@8|O|b|j|e|c|t| |d|u|m@1|y|)+0#00e0e07&| +0#0000000&@53
+@4|{| @69
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|3|,|4|-|1|3| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_02.dump b/runtime/syntax/testdir/dumps/java_comments_02.dump
index 008a3e0..25babc7 100644
--- a/runtime/syntax/testdir/dumps/java_comments_02.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_02.dump
@@ -1,7 +1,7 @@
 | +0#0000e05#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| +0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
 @4|V|o|i|d| |n|o|O|p|4|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
 @75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.|<+0#0000e05&|!|-@1| |-@1|>| +0#e000e06&|n|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@33
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.|<|!|-@1| |-@1|>| |n|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@33
 | +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| +0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
 @4>V|o|i|d| |n|o|O|p|5|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
 @75
diff --git a/runtime/syntax/testdir/dumps/java_comments_05.dump b/runtime/syntax/testdir/dumps/java_comments_05.dump
new file mode 100644
index 0000000..53c7850
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_comments_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |t+0#e000002&|o|S|t|r|i|n|g| +0#ffffff16#ff404010| +0#0000000#ffffff0@42
+@4|/+0#0000e05&@1| |@+0#0000000&|r|e|p|l|a|c|e| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|"@1|'| +0#0000e05&|r+0#00e0003&|e|p|l|a|c|e|m|e|n|t| +0#0000e05&|=| |"+0#e000002&|\|u|0@1|2@1|\|u|0@1|2@1|"| +0#0000000&@13
+@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|r+0#00e0003&|e|g|e|x| +0#0000e05&|=| |'+0#e000002&|\|b|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| |j+0#e000002&|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g| +0#0000e05&|t+0#00e0003&|y|p|e| +0#0000e05&|=| |l+0#e000002&|i|n|k|p|l|a|i|n| +0#0000e05&
+|:| +0#0000000&@73
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @21
+@4>/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@62
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|9|,|2|-|5| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_99.dump b/runtime/syntax/testdir/dumps/java_comments_99.dump
deleted file mode 100644
index 1efc20e..0000000
--- a/runtime/syntax/testdir/dumps/java_comments_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#ffffff0@4|*| +0#0000000&@68
-| +0#0000e05&@4|*| |@+0#e000e06&|p|a|r|a|m| +0#00e0e07&|a|r|g|s| +0#0000e05&|o|p|t|i|o|n|a|l| |c+0&#ffd7d7255|o|m@1|a|n|d|e|-+0&#ffffff0|l|i|n|e| |a|r|g|u|m|e|n|t|s| +0#ffffff16#ff404010| +0#0000000#ffffff0@22
-| +0#0000e05&@4|*| |@|j+0&#ffd7d7255|l|s| +0&#ffffff0|1|2|.|1|.|4| |I|n|v|o|k|e| |{+0#e000e06&|@|c|o|d|e| |T|e|s|t|.|m|a|i|n|}| +0#0000e05&|*|/| +0#0000000&@28
-@4|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |m+0#e000002&|a|i|n| +0#ffffff16#ff404010@4| +0#0000000#ffffff0@42
-@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| |'+0#e000002&|j|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g|'| +0#0000e05&|:| +0#0000000&@11
-@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| |{| |}| @28
-@4|/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@62
-@75
-@4|/+0#0000e05&|*@1| |{+0#e000e06&|@|r|e|t|u|r|n| |a|n| |e|m|p|t|y| |s|t|r|i|n|g|}| +0#ffffff16#ff404010@2| +0#0000000#ffffff0@38
-| +0#0000e05&@4|*| +0#e000e06&|@|s|e@1| |<+0#00e0e07&|a+0#af5f00255&| +0#00e0e07&|h+0#00e0003&|r|e|f|=+0#00e0e07&|"+0#e000002&|h|t@1|p|s|:|/@1|d|o|c|s|.|o|r|a|c|l|e|.|c|o|m|/|j|a|v|a|s|e|/|s|p|e|c|s|/|j|l|s|/|s|e|2|1|/|h|t|m|l|/|j|l|s
-|-|3|.|h|t|m|l|#|j|l|s|-|3|.|1|0|.|5|"|>+0#00e0e07&|3+8#e000e06&|.|1|0|.|5| |S|t|r|i|n|g| |L|i|t|e|r|a|l|s|<+0#00e0e07&|/|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@28
-| +0#0000e05&@4|*| +0#e000e06&|@|s|e@1| |O+0#00e0e07&|b|j|e|c|t|#|t|o|S|t|r|i|n|g|(|)| +0#0000000&|*+0#e000e06&|/| +0#0000000&@42
-@4|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |t+0#e000002&|o|S|t|r|i|n|g| +0#ffffff16#ff404010| +0#0000000#ffffff0@42
-@4|/+0#0000e05&@1| |@+0#0000000&|r|e|p|l|a|c|e| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|"@1|'| +0#0000e05&|r+0#00e0003&|e|p|l|a|c|e|m|e|n|t| +0#0000e05&|=| |"+0#e000002&|\|u|0@1|2@1|\|u|0@1|2@1|"| +0#0000000&@13
-@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|r+0#00e0003&|e|g|e|x| +0#0000e05&|=| |'+0#e000002&|\|b|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| |j+0#e000002&|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g| +0#0000e05&|t+0#00e0003&|y|p|e| +0#0000e05&|=| |l+0#e000002&|i|n|k|p|l|a|i|n| +0#0000e05&
-|:| +0#0000000&@73
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @21
-@4|/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@62
->}| @73
-@57|9|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump b/runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump
deleted file mode 100644
index b429c81..0000000
--- a/runtime/syntax/testdir/dumps/java_contextual_keywords_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|1| |p+0#00e0003&|e|r|m|i|t|s| +0#0000000&|C|1|,| |I|3| |{| |}| @32
-@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|2| |p+0#00e0003&|e|r|m|i|t|s| +0#0000000&|C|1|,| |I|3| |{| |}| @32
-@4|n+0#4040ff13&|o|n|-|s|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|3| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I|1|,| |I|2| |{| |}| @28
-@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|4| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I|3| |{| |}| @43
-@75
-@4|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|1| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|1|,| |I|2| |p+0#00e0003&|e|r|m|i|t|s| +0#0000000&|C|2|,| |C|3| |{| |}| @9
-@4|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|n+0#4040ff13&|o|n|-|s|e|a|l|e|d| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|1| |{| |}| @27
-@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|3| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|1| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|3| |{| |}| @27
-@4|c+0#00e0003&|l|a|s@1| +0#0000000&|C|4| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|2| |{| |}| @47
-@75
-@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|R|(|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|3| |{| |}| @42
-@4|e+0#00e0003&|n|u|m| +0#0000000&|E| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|I|3| |{| |I|N|S|T|A|N|C|E| |}| @37
-@75
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|1|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|v+0#af5f00255&|a|r| +0#0000000&|v+0#af5f00255&|a|r|)+0#0000000&| |-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @21
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|2|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|T| |v+0#af5f00255&|a|r|)+0#0000000&| |-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @23
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|3|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|v+0#af5f00255&|a|r|)+0#0000000&| |-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @25
-@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |I|<|T|>| |i|4|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|-|>| |v+0#af5f00255&|a|r|;+0#0000000&| |}| @27
-@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|<|T|>| |{| |T| |i|(|T| |i|)|;| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|I|<|T|>| |s|e|l|f|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|;+0#0000000&| |}| |}| @5
->}| @73
-@57|4|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_00.dump b/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
index 9596869..4cdbf95 100644
--- a/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
@@ -1,5 +1,5 @@
 | +0#0000e05#a8a8a8255@1>/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|o|l|d|e|n|a|b|l|e| |f|o|l|d|c|o|l|u|m|n|=|2| |f|o|l|d|m|e|t|h|o|d|=|s|y|n|t|a|x| +0#0000000&@4
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|m|a|r|k|_|b|r|a|c|e|s|_|i|n|_|p|a|r|e|n|s|_|a|s|_|e|r@1|o|r|s| |=| |1| +0#0000000&@8
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|f|o|l|d|t|e|x|t|_|s|h|o|w|_|f|i|r|s|t|_|o|r|_|s|e|c|o|n|d|_|l|i|n|e| |=| |1| +0#0000000&@5
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 |++0#0000e05#a8a8a8255| |+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
 | @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52
@@ -8,13 +8,13 @@
 | @1| +0#0000000#ffffff0@72
 |++0#0000e05#a8a8a8255| |+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
 | @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{|}|)|;| |}| @28
 |++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
+| @1|/+0&#ffffff0|*|\@2|*|/| +0#0000000&|{| @63
+|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+|+| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+| @1| +0#0000000#ffffff0@3|}| @67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 |++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
 | @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_01.dump b/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
index f6feccc..074ea05 100644
--- a/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
@@ -1,20 +1,20 @@
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |f|o|l|d|e|n|a|b|l|e| |f|o|l|d|c|o|l|u|m|n|=|2| |f|o|l|d|m|e|t|h|o|d|=|s|y|n|t|a|x| +0#0000000&@4
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|m|a|r|k|_|b|r|a|c|e|s|_|i|n|_|p|a|r|e|n|s|_|a|s|_|e|r@1|o|r|s| |=| |1| +0#0000000&@8
+|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+|+| |+|-@1| @1|5| |l|i|n|e|s|:| |(|n|e|w| |j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{|-@6
+| @1| +0#0000000#ffffff0@3|}| @67
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
-| @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|F|o|l|d|e|n|a|b|l|e| @48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
-|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
 |++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
+| @1| +0#0000000#ffffff0@3>v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
 |++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
 | @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-@57|1|9|,|1| @9|T|o|p| 
+|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
+| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
+|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
+| @1|}+0#0000000#ffffff0| @71
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
+|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
+| @1|/+0&#ffffff0@1| +0#0000000&@70
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
+@57|7|0|,|2|-|5| @7|9|3|%| 
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_02.dump b/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
index bff7ffc..4df1e69 100644
--- a/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255| |+|-@1| |1|6| |l|i|n|e|s|:| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{|-@39
-| @1|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|F|o|l|d|i|n|g|T|e|s|t|s| |{| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|F|o|l|d|e|n|a|b|l|e| @48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
-|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| +0#0000000#ffffff0@56|3|7|,|4|-|1| @7|1|4|%| 
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |}| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|++0#0000e05#a8a8a8255| >+|-@1| @1|2| |l|i|n|e|s|:| |1|2@1|||.@54
+|~+0#4040ff13#ffffff0| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_03.dump b/runtime/syntax/testdir/dumps/java_enfoldment_03.dump
deleted file mode 100644
index 6e96876..0000000
--- a/runtime/syntax/testdir/dumps/java_enfoldment_03.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255| |+|-@1| |1|9| |l|i|n|e|s|:| |s|t|a|t|i|c| |{|-@50
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @28
-|++0#0000e05#a8a8a8255| |+|-@1| @1|8| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| @1|}+0#0000000#ffffff0| @71
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
-|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
-| @1|/+0&#ffffff0@1| +0#0000000&@70
-@57|5@1|,|2|-|1| @7|8|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_04.dump b/runtime/syntax/testdir/dumps/java_enfoldment_04.dump
deleted file mode 100644
index 563a92f..0000000
--- a/runtime/syntax/testdir/dumps/java_enfoldment_04.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| @1|}+0#0000000#ffffff0| @71
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
-|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
-| @1|/+0&#ffffff0@1| +0#0000000&@70
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |}| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |1|2@1|||.@54
-|~+0#4040ff13#ffffff0| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|3|,|2|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_99.dump b/runtime/syntax/testdir/dumps/java_enfoldment_99.dump
deleted file mode 100644
index 771ae98..0000000
--- a/runtime/syntax/testdir/dumps/java_enfoldment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|3| |l|i|n|e|s|:| @2|*| |N|o| |o|p|e|r|a|t|i|o|n|.|-@41
-| @1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @52
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @56
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |{|-@57
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|3|(|)| |{|-@44
-| @1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@48
-|++0#0000e05#a8a8a8255| |+|-@1| @1|2| |l|i|n|e|s|:| |v|o|i|d| |n|o|O|p|4|(|)| |{|-@44
-| @1|}+0#0000000#ffffff0| @71
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |S|o|m|e| |n|o|t|e|.|-@45
-|+| |+|-@1| @1|5| |l|i|n|e|s|:| @1|*| |A| |s|u|m@1|a|r|y|.|-@45
-| @1|/+0&#ffffff0@1| +0#0000000&@70
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |{| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |}| +0#0000000&@68
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| >+|-@1| @1|2| |l|i|n|e|s|:| |1|2@1|||.@54
-| +0#0000000#ffffff0@56|8|6|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_07.dump b/runtime/syntax/testdir/dumps/java_escapes_07.dump
new file mode 100644
index 0000000..15e168b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_escapes_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_escapes_99.dump b/runtime/syntax/testdir/dumps/java_escapes_99.dump
deleted file mode 100644
index 617317c..0000000
--- a/runtime/syntax/testdir/dumps/java_escapes_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|"+0#e000002&|\+0#e000e06&|2|0@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|0|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2@1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2@1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|3|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|3|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|4|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|4|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|5|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|5|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|6|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|6|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|2|7|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|2|7@1|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|0@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|0|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|2|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|2|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3@1|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3@1|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|4|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|4|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|5|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|5|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|6|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6@1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|6|7|"+0#e000002&|,+0#0000000&| @7
-@4|"+0#e000002&|\+0#e000e06&|3|7|0|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|1|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|2|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|3|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|4|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|5|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7|6|"+0#e000002&|,+0#0000000&| |"+0#e000002&|\+0#e000e06&|3|7@1|"+0#e000002&|,+0#0000000&| @7
-@8|}|)|;| @63
-@4|}| @69
->}| @73
-@57|1|2|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_00.dump b/runtime/syntax/testdir/dumps/java_generics_00.dump
new file mode 100644
index 0000000..0d7c4f9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|1| |T|o|d|o| +0#0000000&@29
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|2| |E|r@1|o|r| +0#0000000&@28
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|m|a|t|h|.|B|i|g|I|n|t|e|g|e|r|;| @46
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|L|o|n|g|F|u|n|c|t|i|o|n|;| @35
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|G+0#0000001#ffff4012|e|n|e|r|i|c|s|T|e|s|t|s|<|T+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r| |&| |C+0#ffffff16#ff404010|o|m|p|a|r|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|T|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |U|>+0#0000001#ffff4012| +0#0000000#ffffff0@10
+|{| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@59
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|T|e|s|t|s|.|y|0|(|)|;| @31
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @16
+@8|.|a|p@1|l|y|(|f+0#00e0e07&| |-|>| +0#0000000&|x+0#00e0e07&| |-|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12|?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_01.dump b/runtime/syntax/testdir/dumps/java_generics_01.dump
new file mode 100644
index 0000000..b5650c7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|T|e|s|t|s|.|y|0|(|)|;| @31
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @16
+@8|.|a|p@1|l|y|(|f+0#00e0e07&| |-|>| +0#0000000&|x+0#00e0e07&| |-|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12>?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@12|:| |x|.|m|u|l|t|i|p|l|y|(|f|.|a|p@1|l|y|(|x|.|s|u|b|t|r|a|c|t|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)@3|;| @11
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|1|>| |Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|y|0|(|)| +0#0000000&@47
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|1|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|)| |-|>| +0#0000000&|f|.|a|p@1|l|y|(| @27
+@20|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|T|1|>|y|0|(|)| @32
+@24|.|a|p@1|l|y|(|f|)@1|;| @39
+@4|}| @69
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|1|,| |T|2|>| |Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|2|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|y|1|(|)| +0#0000000&@39
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|2|>+0#ffffff16#ff404010|,+0#00e0e07#ffffff0| |F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,+0#00e0e07&| |T+0#0000000&|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|)| |-|>| +0#0000000&@8
+@12|(+0#00e0e07&|T|1| |x|)| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @18
+@57|1|9|,|4|-|1|3| @6|1|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_02.dump b/runtime/syntax/testdir/dumps/java_generics_02.dump
new file mode 100644
index 0000000..af51ce3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|(+0#00e0e07&|T|1| |x|)| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @18
+@24|.|a|p@1|l|y|(|f|)@1| @40
+@16|.|a|p@1|l|y|(|x|)|;| @48
+@4|}| @69
+@75
+@4>s+0#00e0003&|t|a|t|i|c|<+0#0000000&|T|>| |v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|(|T| |d|u|m@1|y|)| |{| |}| @38
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|a|l|p|h|a|<|T|>| |{| |}| @48
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @11
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|,+0#0000000#ffffff0| @6
+@20|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| @36
+@20|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @33
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@28
+@4|{| @69
+| +0#00e0e07&@7|b+0#00e0003&|o@1|l|e|a|n| +0#00e0e07&|i|s|E|m|p|t|y|(|)|;+0#0000000&| @48
+| +0#00e0e07&@7|E| |p|e@1|k|(|)|;+0#0000000&| @57
+@57|3|7|,|2|-|5| @7|2|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_03.dump b/runtime/syntax/testdir/dumps/java_generics_03.dump
new file mode 100644
index 0000000..3e4f6c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_03.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@7|E| |p|e@1|k|(|)|;+0#0000000&| @57
+| +0#00e0e07&@7|E| |p|o|p|(|)|;+0#0000000&| @58
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|o|p|A|l@1|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|)|;+0#0000000&| @15
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|o|p|S|o|m|e|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|,| +0#0000000&@15
+| +0#00e0e07&@19|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|i|l|t|e|r|)|;+0#0000000&| @25
+| +0#00e0e07&@7>S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|u|s|h|(|E| |e|l|e|m|e|n|t|)|;+0#0000000&| @37
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|u|s|h|A|l@1|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|e+0#00e0003&|x|t|e|n|d|s| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|)|;+0#0000000&| @13
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|p|u|s|h|S|o|m|e|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| +0#00e0e07&|e+0#00e0003&|x|t|e|n|d|s| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|e|l|e|m|e|n|t|s|,| +0#0000000&@13
+| +0#00e0e07&@19|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|E+0#0000000&|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|i|l|t|e|r|)|;+0#0000000&| @25
+| +0#00e0e07&@7|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|w|i|n|d|(|C+0#0000001#ffff4012|o|n|s|u|m|e|r|<|?+0#0000000#ffffff0| +0#00e0e07&|s+0#00e0003&|u|p|e|r| +0#00e0e07&|S+0#ffffff16#ff404010|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|a|c|t|i|o|n|)|;+0#0000000&| @9
+@4|}| @69
+@75
+@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0@32
+@4|{| @69
+| +0#00e0e07&@7|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)|;+0#0000000&| @54
+| +0#00e0e07&@7|N| |v|a|l|u|e|(|)|;+0#0000000&| @56
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@57|5@1|,|3|-|9| @7|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_04.dump b/runtime/syntax/testdir/dumps/java_generics_04.dump
new file mode 100644
index 0000000..2e02037
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@75
+@4>r+0#00e0003&|e|c|o|r|d| +0#0000000&|D+0#0000001#ffff4012|e|c|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|0|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|H+0#0000001#ffff4012|e|x|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|6|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|O+0#0000001#ffff4012|c|t|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|8+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@57|7|3|,|2|-|5| @7|5@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_05.dump b/runtime/syntax/testdir/dumps/java_generics_05.dump
new file mode 100644
index 0000000..70b814d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|f|r|o|m|D|e|c|i|m|a|l|(|l+0#00e0003&|o|n|g| +0#00e0e07&|x|,| |i+0#00e0003&|n|t| +0#00e0e07&|r|a|d|i|x|)| +0#0000000&@23
+@4|{| @69
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
+@20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|H|e|x|S|t|r|i|n|g|)|;| @13
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
+@24|y+0#00e0e07&| |-|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
+@8|}|;| @64
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
+@4|}| @69
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|l+0#00e0003&|o|n|g| +0#00e0e07&|t|o|D|e|c|i|m|a|l|(|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#00e0e07#ffffff0|x|)| +0#0000000&@36
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@57|9|1|,|6|-|2|1| @6|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_06.dump b/runtime/syntax/testdir/dumps/java_generics_06.dump
new file mode 100644
index 0000000..de1c46c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|B+0#0000001#ffff4012|i|n|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |b|)| |-|>| |L|o|n|g|.|t|o|B|i|n|a|r|y|S|t|r|i|n|g|(|b|)|;| @16
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|O+0#0000001#ffff4012|c|t|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |o|)| |-|>| |L|o|n|g|.|t|o|O|c|t|a|l|S|t|r|i|n|g|(|o|)|;| @17
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|H+0#0000001#ffff4012|e|x|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |h|)| |-|>| |L|o|n|g|.|t|o|H|e|x|S|t|r|i|n|g|(|h|)|;| @19
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |L|o|n|g|.|t|o|S|t|r|i|n|g|(|x|.|v|a|l|u|e|(|)@1|;| @26
+@8>}|,| |x|.|r|a|d|i|x|(|)@1|;| @52
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(| +0#0000000&@41
+@16|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| @51
+@4|{| @69
+| +0#00e0e07&@7|S|t|r|i|n|g| |v|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@4|}| @69
+@75
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|N| |=| |0+0#e000002&|,+0#0000000&| |X| |=| |1+0#e000002&|,+0#0000000&| |Y| |=| |2+0#e000002&|;+0#0000000&| @42
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|f| |=| |y+0#00e0e07&|-|>|N+0#0000000&|<|y|.|i|n|t|V|a|l|u|e|(|)|;| @31
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y+0#00e0e07&|-|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@57|1|0|9|,|3|-|9| @6|8|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_07.dump b/runtime/syntax/testdir/dumps/java_generics_07.dump
new file mode 100644
index 0000000..fffbf04
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y+0#00e0e07&|-|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@8|b+0#00e0003&|o@1|l|e|a|n|[+0#0000000&|]| |b@1| |=| |{| @50
+@12|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0||@1|N|>+0#0000001#ffff4012|Y+0#0000000#ffffff0|,| |X| |<| |Y|,| |X| |<|Y|,| |X| |<|(|Y|)|,| |X|<|(|Y|)|,| |(|X|)|<|Y|,| @18
+@12|D|o|u|b|l|e|.|i|s|F|i|n|i|t|e|(|X|<@1|Y|)|,| @40
+@12|X|<|=|Y|,| |X|<|(|i+0#00e0003&|n|t|)+0#0000000&|(|b+0#00e0003&|y|t|e|)+0#0000000&|Y|,| |X|<|~|Y|,| |X|<|-|Y|,| |X|<|+|Y|,| @23
+@8>}|;| @64
+@8|C+0#0000001#ffff4012|l|a|s@1|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|k|l|a|s@1| |=| |G|e|n|e|r|i|c|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @29
+@8|C+0#0000001#ffff4012|l|a|s@1|<| +0#0000000#ffffff0|j+0#ffffff16#ff404010|a|v|a|.|l|a|n|g|.|C|l|a|s@1|<|@+0#e000e06#ffffff0|T|a|g@1|a|b|l|e|(|"+0#e000002&|<|>|"|)+0#e000e06&|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|>+0#ffffff16#ff404010| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@12
+@8|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|$| |[| |]| |[| |]|;| @48
+@8|i+0#af5f00255&|f| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&| |{| |n+0#af5f00255&|e|w| +0#0000000&|G|e|n|e|r|i|c|s|T|e|s|t|s|<|>|(|)|;| |}| @29
+@8|a|l|p|h|a|<|?|>| |a|o|;| @54
+@8|a|l|p|h|a|<|U|>| |a|u|;| @54
+@8|a|l|p|h|a|<|a|l|p|h|a|<|U|>@1| |a@1|u|;| @46
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|o|;| @48
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|U+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|u|;| @48
+@8|Y|0|<|a|l|p|h|a|<|?|>@1| |y|0|a|o|;| @48
+@8|Y|0|<|a|l|p|h|a|<|U|>@1| |y|0|a|u|;| @48
+@4|}| @69
+|}| @73
+@57|1|2|7|,|3|-|9| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_00.dump b/runtime/syntax/testdir/dumps/java_generics_signature_00.dump
new file mode 100644
index 0000000..0b09f31
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|1| |T|o|d|o| +0#0000000&@29
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|2| |E|r@1|o|r| +0#0000000&@28
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|m|a|t|h|.|B|i|g|I|n|t|e|g|e|r|;| @46
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|L|o|n|g|F|u|n|c|t|i|o|n|;| @35
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|G+0#0000001#ffff4012|e|n|e|r|i|c|s|$|T|e|s|t|s|<|T+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r| |&| |C+0#ffffff16#ff404010|o|m|p|a|r|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|T|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |U|>+0#0000001#ffff4012| +0#0000000#ffffff0@9
+|{| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@59
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|y|0|(|)|;| @30
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @15
+@8|.|a|p@1|l|y|(|f| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12|?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_01.dump b/runtime/syntax/testdir/dumps/java_generics_signature_01.dump
new file mode 100644
index 0000000..f6c885e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|y|0|(|)|;| @30
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @15
+@8|.|a|p@1|l|y|(|f| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12>?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@12|:| |x|.|m|u|l|t|i|p|l|y|(|f|.|a|p@1|l|y|(|x|.|s|u|b|t|r|a|c|t|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)@3|;| @11
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|1|>| |Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|y+0#00e0e07&|0|(|)| +0#0000000&@47
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(| @27
+@20|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|>|y|0|(|)| @31
+@24|.|a|p@1|l|y|(|f|)@1|;| @39
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|1|,| |T|2|>| |Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|y+0#00e0e07&|1|(|)| +0#0000000&@39
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|)+0#00e0e07&| |-|>| +0#0000000&@8
+@12|(+0#00e0e07&|T+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @17
+@57|1|9|,|4|-|1|3| @6|1|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_02.dump b/runtime/syntax/testdir/dumps/java_generics_signature_02.dump
new file mode 100644
index 0000000..bfa32c1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|(+0#00e0e07&|T+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @17
+@24|.|a|p@1|l|y|(|f|)@1| @40
+@16|.|a|p@1|l|y|(|x|)|;| @48
+@4|}| @69
+@75
+@4>s+0#00e0003&|t|a|t|i|c|<+0#0000000&|T|>| |v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|(|T| |d|u|m@1|y|)| |{| |}| @38
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|a|l|p|h|a|<|T|>| |{| |}| @48
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @11
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|,+0#0000000#ffffff0| @6
+@20|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| @36
+@20|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @33
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@28
+@4|{| @69
+@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|i+0#00e0e07&|s|E|m|p|t|y|(|)|;+0#0000000&| @48
+@8|E| |p+0#00e0e07&|e@1|k|(|)|;+0#0000000&| @57
+@57|3|7|,|2|-|5| @7|2|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_03.dump b/runtime/syntax/testdir/dumps/java_generics_signature_03.dump
new file mode 100644
index 0000000..4ddd510
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|E| |p+0#00e0e07&|e@1|k|(|)|;+0#0000000&| @57
+@8|E| |p+0#00e0e07&|o|p|(|)|;+0#0000000&| @58
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|o|p|A|l@1|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|)+0#00e0e07&|;+0#0000000&| @15
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|o|p|S|o|m|e|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|,| @15
+@20|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|i|l|t|e|r|)+0#00e0e07&|;+0#0000000&| @25
+@8>S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|(|E+0#0000000&| |e|l|e|m|e|n|t|)+0#00e0e07&|;+0#0000000&| @37
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|A|l@1|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|)+0#00e0e07&|;+0#0000000&| @13
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|S|o|m|e|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|,| @13
+@20|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|i|l|t|e|r|)+0#00e0e07&|;+0#0000000&| @25
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|w+0#00e0e07&|i|n|d|(|C+0#0000001#ffff4012|o|n|s|u|m|e|r|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|S+0#ffffff16#ff404010|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|c|t|i|o|n|)+0#00e0e07&|;+0#0000000&| @9
+@4|}| @69
+@75
+@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0@32
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)|;+0#0000000&| @54
+@8|N| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @56
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@57|5@1|,|3|-|9| @7|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_04.dump b/runtime/syntax/testdir/dumps/java_generics_signature_04.dump
new file mode 100644
index 0000000..81606f1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@75
+@4>r+0#00e0003&|e|c|o|r|d| +0#0000000&|D+0#0000001#ffff4012|e|c|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|0|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|H+0#0000001#ffff4012|e|x|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|6|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|O+0#0000001#ffff4012|c|t|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|8+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@57|7|3|,|2|-|5| @7|5@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_05.dump b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
new file mode 100644
index 0000000..8c0fe84
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|f+0#00e0e07&|r|o|m|D|e|c|i|m|a|l|(|l+0#00e0003&|o|n|g| +0#0000000&|x|,| |i+0#00e0003&|n|t| +0#0000000&|r|a|d|i|x|)+0#00e0e07&| +0#0000000&@23
+@4|{| @69
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
+@20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|H|e|x|S|t|r|i|n|g|)|;| @13
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
+@24|y| |-+0#00e0e07&|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
+@8|}|;| @64
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|l+0#00e0003&|o|n|g| +0#0000000&|t+0#00e0e07&|o|D|e|c|i|m|a|l|(|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|x|)+0#00e0e07&| +0#0000000&@36
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@57|9|1|,|6|-|2|1| @6|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_06.dump b/runtime/syntax/testdir/dumps/java_generics_signature_06.dump
new file mode 100644
index 0000000..c98bd54
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|B+0#0000001#ffff4012|i|n|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |b|)| |-|>| |L|o|n|g|.|t|o|B|i|n|a|r|y|S|t|r|i|n|g|(|b|)|;| @16
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|O+0#0000001#ffff4012|c|t|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |o|)| |-|>| |L|o|n|g|.|t|o|O|c|t|a|l|S|t|r|i|n|g|(|o|)|;| @17
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|H+0#0000001#ffff4012|e|x|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |h|)| |-|>| |L|o|n|g|.|t|o|H|e|x|S|t|r|i|n|g|(|h|)|;| @19
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |L|o|n|g|.|t|o|S|t|r|i|n|g|(|x|.|v|a|l|u|e|(|)@1|;| @26
+@8>}|,| |x|.|r|a|d|i|x|(|)@1|;| @52
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(| +0#0000000&@41
+@16|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| @51
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@4|}| @69
+@75
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|N| |=| |0+0#e000002&|,+0#0000000&| |X| |=| |1+0#e000002&|,+0#0000000&| |Y| |=| |2+0#e000002&|;+0#0000000&| @42
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|f| |=| |y|-+0#00e0e07&|>|N+0#0000000&|<|y|.|i|n|t|V|a|l|u|e|(|)|;| @31
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@57|1|0|9|,|3|-|9| @6|8|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_07.dump b/runtime/syntax/testdir/dumps/java_generics_signature_07.dump
new file mode 100644
index 0000000..fe72261
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@8|b+0#00e0003&|o@1|l|e|a|n|[+0#0000000&|]| |b@1| |=| |{| @50
+@12|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0||@1|N|>+0#0000001#ffff4012|Y+0#0000000#ffffff0|,| |X| |<| |Y|,| |X| |<|Y|,| |X| |<|(|Y|)|,| |X|<|(|Y|)|,| |(|X|)|<|Y|,| @18
+@12|D|o|u|b|l|e|.|i|s|F|i|n|i|t|e|(|X|<@1|Y|)|,| @40
+@12|X|<|=|Y|,| |X|<|(|i+0#00e0003&|n|t|)+0#0000000&|(|b+0#00e0003&|y|t|e|)+0#0000000&|Y|,| |X|<|~|Y|,| |X|<|-|Y|,| |X|<|+|Y|,| @23
+@8>}|;| @64
+@8|C+0#0000001#ffff4012|l|a|s@1|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|k|l|a|s@1| |=| |G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @28
+@8|C+0#0000001#ffff4012|l|a|s@1|<| +0#0000000#ffffff0|j+0#ffffff16#ff404010|a|v|a|.|l|a|n|g|.|C|l|a|s@1|<|@+0#e000e06#ffffff0|T|a|g@1|a|b|l|e|(|"+0#e000002&|<|>|"|)+0#e000e06&|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|>+0#ffffff16#ff404010| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@12
+@8|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|$| |[| |]| |[| |]|;| @48
+@8|i+0#af5f00255&|f| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&| |{| |n+0#af5f00255&|e|w| +0#0000000&|G|e|n|e|r|i|c|s|$|T|e|s|t|s|<|>|(|)|;| |}| @28
+@8|a|l|p|h|a|<|?|>| |a|o|;| @54
+@8|a|l|p|h|a|<|U|>| |a|u|;| @54
+@8|a|l|p|h|a|<|a|l|p|h|a|<|U|>@1| |a@1|u|;| @46
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|o|;| @48
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|U+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|u|;| @48
+@8|Y|0|<|a|l|p|h|a|<|?|>@1| |y|0|a|o|;| @48
+@8|Y|0|<|a|l|p|h|a|<|U|>@1| |y|0|a|u|;| @48
+@4|}| @69
+|}| @73
+@57|1|2|7|,|3|-|9| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
index 7749ef2..5d11fe3 100644
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
@@ -15,6 +15,6 @@
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
 @12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
+@8|}| @65
 @75
 @57|1|2|7|,|3|-|9| @6|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump
deleted file mode 100644
index 2a1fe2a..0000000
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
-@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
-@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
-@75
-@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @46
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(| @23
-@28|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @32
-@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@37
-@20|P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t+0#00e0e07&|e|x|t| |-|>| +0#0000000&@25
-@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
-@24|.|t|e|s|t|(|s|t|r|_|)| @39
-@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
-@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @3|-|>| |s|t|r|_|;| @30
-@16|}|)| @5|-|>| |s|t|r|;| @43
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
-@8|}|)|;| @63
-@4|}| @69
->}| @73
-@57|1|5|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump
new file mode 100644
index 0000000..0ff4f9e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|n|a|r|y|O|p|e|r|a|t|o|r|;| @33
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|L|a|m|b|d|a|E|x|p|r|e|s@1|i|o|n|s|$|T|e|s|t|s| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@31
+|{| @73
+@4|<|I|1|,| |C|1|,| |C|2|,| |T|1|,| |T|2|,| |T|3|,| |Z|1|,| |Z|2|,| |Z|3|,| |S|1|,| |S|2|,| |S|3|>| |v+0#00e0003&|o|i|d| +0#0000000&|t+0#00e0e07&|e|s|t|(|)| +0#0000000&@10
+@4|{| @2|/+0#0000e05&@1| |S|c|h|ö|n|f|i|n|k|e|l|'|s| |f|u|n|c|t|i|o|n|s|.| +0#0000000&@39
+@8|I|<|I|1|>| |i| |=| |x| |-+0#00e0e07&|>| +0#0000000&|x|;| @49
+@8|C|<|C|1|,| |C|2|>| |c| |=| |x| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x|;| @40
+@8|T|<|T|1|,| |T|2|,| |T|3|>| |t| |=| |f| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)|.|a|p@1|l|y|(|y|)|;| @13
+@8|Z|<|Z|1|,| |Z|2|,| |Z|3|>| |z| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @13
+@8|S|<|S|1|,| |S|2|,| |S|3|>| |s| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)| @23
+@24|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @31
+@75
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump
new file mode 100644
index 0000000..b5bdac9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|C|<|C|1|,| |C|2|>| |c| |=| |x| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x|;| @40
+@8|T|<|T|1|,| |T|2|,| |T|3|>| |t| |=| |f| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)|.|a|p@1|l|y|(|y|)|;| @13
+@8|Z|<|Z|1|,| |Z|2|,| |Z|3|>| |z| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @13
+@8|S|<|S|1|,| |S|2|,| |S|3|>| |s| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)| @23
+@24|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @31
+> @74
+@8|I|<|I|1|>| |i|0|1| |=| |(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @41
+@8|I|<|I|1|>| |i|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @31
+@8|I|<|I|1|>| |i|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@8|I|<|I|1|>| |i|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @35
+@8|I|<|I|1|>| |i|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @25
+@8|I|<|I|1|>| |i|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @15
+@8|I|<|I|1|>| |i|0|7| |=| |(+0#00e0e07&|I+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @42
+@8|I|<|I|1|>| |i|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @32
+@8|I|<|I|1|>| |i|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @22
+@8|I|<|I|1|>| |i|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|>| |i|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|>| |i|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @16
+@75
+@57|1|9|,|0|-|1| @8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump
new file mode 100644
index 0000000..a597c2f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|I|<|I|1|[|]|>| |i@1|0|1| |=| |(+0#00e0e07&|I+0#0000000&|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|[|]|>| |i@1|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|[|]|>| |i@1|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @16
+@8|I|<|I|1|[|]|>| |i@1|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @30
+@8>I|<|I|1|[|]|>| |i@1|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @20
+@8|I|<|I|1|[|]|>| |i@1|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @10
+@75
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|1| |=| |(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|,| |v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @13
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @16
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @32
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&@9
+@20|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @19
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @20
+@20|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+@20|v+0#af5f00255&|a|r| +0#0000000&|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @19
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@23
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @32
+@57|3|7|,|3|-|9| @7|2@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump
new file mode 100644
index 0000000..d3750b0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @32
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|7| |=| |(+0#00e0e07&|I+0#0000000&|1| |x|,| |I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @15
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|,| @17
+@20>@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @33
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| @10
+@20|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @20
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|,| @21
+@20|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @37
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+@20|I|1| |x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@23
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|,| @33
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @27
+@75
+@8|R|u|n@1|a|b|l|e| |n|o|O|p| |=| |(+0#00e0e07&|)| |-|>| +0#0000000&|{|}|;| @41
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t| |=| |(+0#00e0e07&|x+0#0000000&|,| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @23
+@57|5@1|,|6|-|2|1| @6|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump
new file mode 100644
index 0000000..c027118
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t| |=| |(+0#00e0e07&|x+0#0000000&|,| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @23
+@8|I|<|I|1|>| |i|d|1| |=| |(+0#00e0e07&|x+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(|x|)|;| @43
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|u|n|c|h|e|c|k|e|d|"|)+0#e000e06&| +0#0000000&|I|<|I|1|>| |i|d|2| |=| @24
+@16|(@1|I|<|I|<|I|1|>@1|)| |(|I|<|?|>|)| |(|F|u|n|c|t|i|o|n|<|I|1|,| @26
+@20|I|1|>| |x|)| |-|>| |x|)|.|a|p@1|l|y|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|0+0#e000002&|)+0#0000000&| |{| @23
+@16>c+0#af5f00255&|a|s|e| +0#0000000&|(@1|i+0#00e0003&|n|t|)+0#0000000&| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(+0#00e0e07&|I+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@16|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| |}|)|;| @21
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|1| |=| |(+0#00e0e07&|x+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(+0#00e0e07&|y+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(|x|)|;| @29
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|2| |=| |s+0#af5f00255&|w|i|t|c|h|(+0#0000000&|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|"+0#e000002&@1|)+0#0000000&| |{| @27
+@24|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|-|>|"|-+0#0000000&|>|"+0#e000002&|(|s|)|-|>|(|s|)|"|;+0#0000000&| @28
+@24|d+0#af5f00255&|e|f|a|u|l|t|-+0#0000000&|>|"+0#e000002&|d|e|f|a|u|l|t|"|;+0#0000000&| |}|)| |{| @26
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|(|"+0#e000002&|-|>|"|)+0#0000000&|-|>|(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&|-|>|(|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&|-|>|(+0#0000000&|x|)|;| @27
+@12|d+0#af5f00255&|e|f|a|u|l|t|-+0#0000000&|>|(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&|-|>|(|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| +0#0000000&@17
+| +0#00e0e07&@15|-|>|(+0#0000000&|x|)|;| @52
+@8|}|;| @64
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|)+0#e000e06&| +0#0000000&@19
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|a|g@1|a|b|l|e|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@57|7|3|,|5|-|1|7| @6|4|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump
new file mode 100644
index 0000000..98ab331
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|a|g@1|a|b|l|e|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| |{| |S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @18
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|)+0#e000e06&| +0#0000000&@19
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e|s| |{| |T|a|g@1|a|b|l|e|[|]| |v|a|l|u|e|(|)|;| |}| @26
+> @74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|<|A|1|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|A|1|,| |A|1|>| |{| |}| @26
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|C|<|A|1|,| |A|2|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|1|>@1| |{| |}| @8
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|T|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&@39
+@16|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>@1|,| @18
+@20|F|u|n|c|t|i|o|n|<|A|2|,| @42
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Z|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>|,| @12
+@20|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |A|2|>|,| @28
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&@39
+@16|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>@1|,| @18
+@20|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |A|2|>|,| @28
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@57|9|1|,|0|-|1| @7|6|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump
new file mode 100644
index 0000000..5d936ef
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e+0#00e0e07&|c|h|o|(|O+0#0000000&|b|j|e|c|t| |o|)+0#00e0e07&| +0#0000000&|{| |S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|o|)|;| |}| @17
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
+@75
+@8|L|e|t@1|e|r|s| |o|t|h|e|r| |=| |L|e|t@1|e|r|s|.|O|T|H|E|R|;| @36
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|t|h|e|r|)| |{| @50
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a|:| @19
+@24|{| |e|c|h|o|(|a|l|p|h|a|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |b|e|t|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|B|E|T|A| |=@1| |b|e|t|a|:| @22
+@24|{| |e|c|h|o|(|b|e|t|a|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
+@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @11|{| |e|c|h|o|(|o|t|h|e|r|)|;| |}| @30
+@8|}| @65
+@75
+@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|t|h|e|r|)| |{| @45
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a| @16
+@57|1|0|9|,|3|-|9| @6|7|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
new file mode 100644
index 0000000..0658867
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a| @16
+@24|-|>| |a|l|p|h|a|;| @41
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |b|e|t|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|B|E|T|A| |=@1| |b|e|t|a| @19
+@24|-|>| |b|e|t|a|;| @42
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |o|t|h|e|r|;| @37
+@8>}|)|;| @63
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @51
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @13
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@41
+@20|P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
+@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
+@24|.|t|e|s|t|(|s|t|r|_|)| @39
+@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
+@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
+@8|}| @65
+@75
+@57|1|2|7|,|3|-|9| @6|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump
new file mode 100644
index 0000000..9c40830
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @46
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(| @23
+@28|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @32
+@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@37
+@20>P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
+@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
+@24|.|t|e|s|t|(|s|t|r|_|)| @39
+@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
+@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @3|-|>| |s|t|r|_|;| @30
+@16|}|)| @5|-|>| |s|t|r|;| @43
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
+@8|}|)|;| @63
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4|5|,|6|-|2|1| @5|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_00.dump b/runtime/syntax/testdir/dumps/java_method_references_00.dump
new file mode 100644
index 0000000..72ea3ca
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_01.dump b/runtime/syntax/testdir/dumps/java_method_references_01.dump
new file mode 100644
index 0000000..a1c0395
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| |n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| @25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| |0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|2| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|3| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|4| |=| |"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|5| |=| |i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;| @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| |:+0#00e0e07&@1| +0#0000000&@13
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_02.dump b/runtime/syntax/testdir/dumps/java_method_references_02.dump
new file mode 100644
index 0000000..790c0e2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;| @15
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| +0#0000000&@13
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| +0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|9| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s|a| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| |(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_03.dump b/runtime/syntax/testdir/dumps/java_method_references_03.dump
new file mode 100644
index 0000000..0a3d817
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| |I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s+0#00e0e07&| |-|>| +0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| |S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|2| |=| |i+0#00e0e07&@1| |-|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| |0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| @24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| @22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|t|i|f|1| |=| |s+0#00e0e07&| |-|>| +0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| +0#0000000&|f|3| |=| |C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| +0#0000000&|f|4| |=| |p+0#00e0e07&|c|i| |-|>| +0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| |/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| |C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| |C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&| +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_04.dump b/runtime/syntax/testdir/dumps/java_method_references_04.dump
new file mode 100644
index 0000000..25211f0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| |=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| @43
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @12
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @13
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_05.dump b/runtime/syntax/testdir/dumps/java_method_references_05.dump
new file mode 100644
index 0000000..3ebf3fb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,| @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@57|9|1|,|2|-|5| @7|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_06.dump b/runtime/syntax/testdir/dumps/java_method_references_06.dump
new file mode 100644
index 0000000..f1bd812
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m+0#00e0e07&|h| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @19
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |e|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t+0#00e0e07&|h|a|t| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| +0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| +0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_07.dump b/runtime/syntax/testdir/dumps/java_method_references_07.dump
new file mode 100644
index 0000000..6f5549e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| +0#00e0e07&|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| |T| |o|)| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| |m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| |E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_08.dump b/runtime/syntax/testdir/dumps/java_method_references_08.dump
new file mode 100644
index 0000000..537c5d5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| |j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| @14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(| @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| @32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| |{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_09.dump b/runtime/syntax/testdir/dumps/java_method_references_09.dump
new file mode 100644
index 0000000..d5110b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| @55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| @3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_10.dump b/runtime/syntax/testdir/dumps/java_method_references_10.dump
new file mode 100644
index 0000000..19280b0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @29
+@12|}| @61
+@8|}| @65
+@75
+| +0#00e0e07&@7>s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T| |e|x|t|e|n|d|s| |O|b|j|e|c|t|>| |F|u|n|c|t|i|o|n|<|T+0#0000000&|,+0#00e0e07&| |S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| |s|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| |"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
new file mode 100644
index 0000000..029e661
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
new file mode 100644
index 0000000..13d64f5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| |n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| @25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| |0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|2| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|3| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|4| |=| |"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|5| |=| |i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;| @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| |:+0#00e0e07&@1| +0#0000000&@12
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
new file mode 100644
index 0000000..a223c38
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;| @14
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| +0#0000000&@12
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| +0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|9| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s|a| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| |(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
new file mode 100644
index 0000000..85ea29b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| |I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s| |-+0#00e0e07&|>| +0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| |S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|2| |=| |i@1| |-+0#00e0e07&|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| |0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| @24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| @22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|t|i|f|1| |=| |s| |-+0#00e0e07&|>| +0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| +0#0000000&|f|3| |=| |C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| +0#0000000&|f|4| |=| |p|c|i| |-+0#00e0e07&|>| +0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| |/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| |C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| |C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&| +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
new file mode 100644
index 0000000..5215cb2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| |=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| @42
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @11
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @12
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
new file mode 100644
index 0000000..e508788
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,| @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@57|9|1|,|2|-|5| @7|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
new file mode 100644
index 0000000..a5234ec
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m|h| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @18
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0e07&|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t|h|a|t| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| +0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| +0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
new file mode 100644
index 0000000..535f972
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|i+0#00e0e07&|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| |T| |o|)+0#00e0e07&| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| |m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| |E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
new file mode 100644
index 0000000..537c5d5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| |j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| @14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(| @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| @32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| |{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
new file mode 100644
index 0000000..d5110b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| @55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| @3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
new file mode 100644
index 0000000..7bc18d8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @29
+@12|}| @61
+@8|}| @65
+@75
+@8>s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|O|b|j|e|c|t|>| |F+0#00e0e07&|u|n|c|t|i|o|n|<|T+0#0000000&|,| |S|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| |"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
index 950d878..12d33b0 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
@@ -17,4 +17,4 @@
 @4|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @51
 @2|}| @71
 @75
-@57|1|9|,|0|-|1| @7|1|7|%| 
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
index 48d31d1..82d03c6 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
@@ -13,8 +13,8 @@
 @2|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@56
 @2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @17
 @2|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @10
-@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @10
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @10
 @75
 @2|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@61
 | +0#00e0e07&@1|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
-@57|3|7|,|3| @9|4|2|%| 
+@57|3|7|,|3| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
index f388cd9..7858be6 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
@@ -17,4 +17,4 @@
 @2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
 | +0#00e0e07&@1|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@11
 @2|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
-@57|5@1|,|3| @9|6|7|%| 
+@57|5@1|,|3| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
index 0d9fa98..347fafa 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
@@ -17,4 +17,4 @@
 |e+0#00e0003&|n|u|m| +0#0000000&|E|2| @67
 |{| @73
 @2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
-@57|7|3|,|3| @9|9|1|%| 
+@57|7|3|,|3| @9|7|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump
new file mode 100644
index 0000000..9981776
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @36
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @26
+@75
+| +0#00e0e07&@1|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+|}| @73
+@57|9|1|,|5| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
deleted file mode 100644
index 204e85a..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
-@2|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @32
-@2|}| @71
-@75
-| +0#00e0e07&@1|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}| 
-@75
-@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@37
-| +0#00e0e07&@1|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @5
-|}| @73
-@75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|2| @67
-|{| @73
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
-@2|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @65
-@2|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @57
-@2|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @41
-@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
-@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @36
->}| @73
-@57|9|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_99.vim
deleted file mode 100644
index 1509558..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_99.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-" Replace known non-Latin-1 characters.
-%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump
new file mode 100644
index 0000000..53772c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|2|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@2|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@63
+@2|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @51
+@75
+@2|e+0#00e0003&|n|u|m| +0#0000000&|E| @66
+@2|{| @71
+@4|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @39
+@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|}| @71
+@75
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump
new file mode 100644
index 0000000..12d33b0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @39
+@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|}| @71
+> @74
+@2|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@18
+@2|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@23
+@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @53
+@2|{| @71
+@4|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @42
+@2|}| @71
+@75
+@2|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@18
+@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @52
+@2|{| @71
+@4|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @51
+@2|}| @71
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump
new file mode 100644
index 0000000..9cbda27
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @51
+@2|{| @71
+@4|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @43
+@4|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @35
+@2>}| @71
+@75
+@2|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@62
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @17
+@75
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @23
+@75
+@2|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@56
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @16
+@2|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @9
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @9
+@75
+@2|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@61
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
+@57|3|7|,|3| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump
new file mode 100644
index 0000000..33d0921
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@23
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@2>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @15
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@25
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@2|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @53
+@2|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @25
+@75
+@2|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @22
+@2|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@14
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
+@2|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@11
+@2|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
+@57|5@1|,|3| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump
new file mode 100644
index 0000000..2f2b6c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
+@75
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
+@2|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@4
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@2>{| @71
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
+@2|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@2|}| @71
+@75
+@2|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@37
+@2|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|2|$| @66
+|{| @73
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@57|7|3|,|3| @9|7|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump
new file mode 100644
index 0000000..08ab720
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @25
+@75
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+|}| @73
+@57|9|1|,|5| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
index 0f154c5..aea76e5 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
@@ -17,4 +17,4 @@
 @8|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @47
 @4|}| @69
 @75
-@57|1|9|,|0|-|1| @7|1|7|%| 
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
index ed7c8fb..55410d0 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
@@ -13,8 +13,8 @@
 @4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
 @4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @15
 @4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @8
-@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @8
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @8
 @75
 @4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
 | +0#00e0e07&@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
-@57|3|7|,|5| @9|4|2|%| 
+@57|3|7|,|5| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
index bed45d9..dae4f3c 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
@@ -17,4 +17,4 @@
 @4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
 | +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
 @4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
-@57|5@1|,|5| @9|6|7|%| 
+@57|5@1|,|5| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
index 9eabb63..a3dd3e6 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
@@ -17,4 +17,4 @@
 @75
 |e+0#00e0003&|n|u|m| +0#0000000&|E|4| @67
 |{| @73
-@57|7|3|,|5| @9|9|0|%| 
+@57|7|3|,|5| @9|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump
new file mode 100644
index 0000000..6bf8562
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump
@@ -0,0 +1,20 @@
+|{+0&#ffffff0| @73
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+> @74
+@8|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @34
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @24
+@75
+| +0#00e0e07&@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+@57|9|0|,|0|-|1| @7|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_06.dump
new file mode 100644
index 0000000..6dfa528
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_06.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
deleted file mode 100644
index 28fa0bc..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @30
-@4|}| @69
-@75
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| 
-|}| @73
-@75
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @3
-|}| @73
-@75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|4| @67
-|{| @73
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
-@4|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @63
-@4|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @55
-@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
-@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
-@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @34
->}| @73
-@57|9|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_99.vim
deleted file mode 100644
index 1509558..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_99.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-" Replace known non-Latin-1 characters.
-%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump
new file mode 100644
index 0000000..04337ff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|4|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@4|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@61
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @49
+@75
+@4|e+0#00e0003&|n|u|m| +0#0000000&|E| @64
+@4|{| @69
+@8|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+@75
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump
new file mode 100644
index 0000000..aea76e5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+> @74
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @51
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @38
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @50
+@4|{| @69
+@8|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @47
+@4|}| @69
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump
new file mode 100644
index 0000000..3473b60
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @49
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @39
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @31
+@4>}| @69
+@75
+@4|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@60
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @15
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @21
+@75
+@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @14
+@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @7
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @7
+@75
+@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@57|3|7|,|5| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump
new file mode 100644
index 0000000..e4ba873
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@21
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@4>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@23
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@4|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @51
+@4|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @23
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@12
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@57|5@1|,|5| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump
new file mode 100644
index 0000000..2d3c811
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@4>{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @29
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&
+| |}| @72
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @2
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|4|$| @66
+|{| @73
+@57|7|3|,|5| @9|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump
new file mode 100644
index 0000000..5ce63c7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump
@@ -0,0 +1,20 @@
+|{+0&#ffffff0| @73
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+> @74
+@8|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @33
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @23
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+@57|9|0|,|0|-|1| @7|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump
new file mode 100644
index 0000000..e4569ea
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
index 269034b..9c6b06f 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
@@ -17,4 +17,4 @@
 @16|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @39
 @8|}| @65
 @75
-@57|1|9|,|0|-|1| @7|1|7|%| 
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
index e5c7acc..9555abb 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
@@ -13,8 +13,8 @@
 @8|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@50
 @8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @11
 @8|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @4
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @4
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @4
 @75
 @8|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@55
 | +0#00e0e07&@7|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
-@57|3|7|,|9| @9|4|2|%| 
+@57|3|7|,|9| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
index e80c44d..a163e39 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
@@ -17,4 +17,4 @@
 @8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
 | +0#00e0e07&@7|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@5
 @8|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
-@57|5@1|,|9| @9|6|7|%| 
+@57|5@1|,|9| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
index 8ec6396..29667a0 100644
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@7|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@75
 @8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
 | +0#00e0e07&@7|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_
 |(| +0#0000000&@73
-| +0#00e0e07&@23|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| +0#0000000&@6
-@8>{| @65
+| +0#00e0e07&@23>j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| +0#0000000&@6
+@8|{| @65
 @16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@52
 @8|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @26
 @8|}| @65
@@ -16,5 +17,4 @@
 @1| @73
 @75
 |e+0#00e0003&|n|u|m| +0#0000000&|E|8| @67
-|{| @73
-@57|7|3|,|9| @9|9|0|%| 
+@57|7|2|,|2|5| @8|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump
new file mode 100644
index 0000000..468f1d0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump
@@ -0,0 +1,20 @@
+|e+0#00e0003#ffffff0|n|u|m| +0#0000000&|E|8| @67
+|{| @73
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7>C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @30
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @20
+@75
+@57|8|9|,|9| @9|9|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_06.dump
new file mode 100644
index 0000000..0361794
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+| +0#00e0e07&@7|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
deleted file mode 100644
index d20fbe1..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @26
-@8|}| @65
-@75
-| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a
-|s@1|;+0#0000000&| |}| @69
-@75
-@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@31
-| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}
-@1| @73
-@75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|8| @67
-|{| @73
-@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
-@8|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @59
-@8|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @51
-@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
-@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @30
->}| @73
-@57|9|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_99.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_99.vim
deleted file mode 100644
index 1509558..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_99.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-" Replace known non-Latin-1 characters.
-%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump
new file mode 100644
index 0000000..95cd3e2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|8|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@8|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@57
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @45
+@75
+@8|e+0#00e0003&|n|u|m| +0#0000000&|E| @60
+@8|{| @65
+@16|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @27
+@16|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @27
+@16|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @43
+@16|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @23
+@8|}| @65
+@75
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump
new file mode 100644
index 0000000..9c6b06f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @27
+@16|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @27
+@16|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @43
+@16|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @23
+@8|}| @65
+> @74
+@8|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@12
+@8|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@17
+@8|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @47
+@8|{| @65
+@16|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @30
+@8|}| @65
+@75
+@8|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@12
+@8|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @46
+@8|{| @65
+@16|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @39
+@8|}| @65
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump
new file mode 100644
index 0000000..cd42b6d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @45
+@8|{| @65
+@16|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @31
+@16|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @23
+@8>}| @65
+@75
+@8|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@56
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @11
+@75
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @17
+@75
+@8|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@50
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @10
+@8|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @3
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @3
+@75
+@8|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@55
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
+@57|3|7|,|9| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump
new file mode 100644
index 0000000..c06f3c3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@17
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@8>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @9
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@19
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@8|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @47
+@8|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @19
+@75
+@8|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @16
+@8|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@8
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
+@8|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@5
+@8|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@57|5@1|,|9| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump
new file mode 100644
index 0000000..685a6c5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@75
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
+@8|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_
+|(| +0#0000000&@73
+@24>j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@8|{| @65
+@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@52
+@8|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @25
+@8|}| @65
+@75
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l
+|a|s@1|;+0#0000000&| |}| @68
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@31
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| 
+|}| @73
+|}| @73
+@75
+@57|7|2|,|2|5| @8|7|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump
new file mode 100644
index 0000000..a552de8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|e+0#00e0003&|n|u|m| +0#0000000&|E|8|$| @66
+|{| @73
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16>/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @29
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @19
+@57|8@1|,|1|7| @8|9|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump
new file mode 100644
index 0000000..73021e9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @19
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_06.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_99.dump b/runtime/syntax/testdir/dumps/java_methods_style_99.dump
deleted file mode 100644
index e8962ce..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_style_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#00e0e07#ffffff0@11|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)|;+0#0000000&| @17
-@75
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
-| +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
-@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
-@75
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
-| +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_|(| +0#0000000&@2
-| +0#00e0e07&@11|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| +0#0000000&@18
-@4|{| @69
-@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
-@4|S|t|y|l|e|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @32
-@4|}| @69
-@75
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|S|t|y|l|e|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}| 
-@75
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|S|t|y|l|e|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @5
->}| @73
-@57|8|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_99.vim b/runtime/syntax/testdir/dumps/java_methods_style_99.vim
deleted file mode 100644
index 1509558..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_style_99.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-" Replace known non-Latin-1 characters.
-%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump
new file mode 100644
index 0000000..06d396f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s| @41
+|{| @73
+@4|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@61
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @49
+@75
+@4|e+0#00e0003&|n|u|m| +0#0000000&|E| @64
+@4|{| @69
+@8|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+@75
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump
new file mode 100644
index 0000000..95bb936
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+> @74
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @51
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @38
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @50
+@4|{| @69
+@8|T|ɐ|g@1|a|b|l|ɘ|[|]| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @47
+@4|}| @69
+@75
+@57|1|9|,|0|-|1| @7|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump
new file mode 100644
index 0000000..e379c69
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @49
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|)| +0#0000000&|{| |}| @39
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ+0#00e0e07&|ʭ@1|$|0|_|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @31
+@4>}| @69
+@75
+@4|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@60
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @15
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @21
+@75
+@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @16
+@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @9
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @9
+@75
+@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@57|3|7|,|2|-|5| @7|4|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump
new file mode 100644
index 0000000..aa92f2d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@32|)+0#00e0e07&|;+0#0000000&| @40
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@21
+@16|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @24
+@75
+@4>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@23
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @19
+@75
+@4|v+0#00e0003&|o|i|d| +0#0000000&|A|s|c|i@1|$|2|_|(|)| |{| |}| @51
+@4|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ|ʭ@1|$|2|_|(|U| |u|)| |{| |}| @23
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@12
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @17
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@57|5@1|,|2|-|5| @7|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump
new file mode 100644
index 0000000..e657f31
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@18
+@4>{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|3|,|2|-|5| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_numbers_05.dump b/runtime/syntax/testdir/dumps/java_numbers_05.dump
new file mode 100644
index 0000000..59e6f1f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_numbers_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x|_|l| |=| |0+0#e000002&|x|f@3|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @20
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t|_|l| |=| |0+0#e000002&|1|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @13
+@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n|_|l| |=| |0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@1
+@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @35
+@4|}| @69
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_numbers_99.dump b/runtime/syntax/testdir/dumps/java_numbers_99.dump
deleted file mode 100644
index 7637b85..0000000
--- a/runtime/syntax/testdir/dumps/java_numbers_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t| |=| |0+0#e000002&|3|7@1|_|7@3|_|7@3|;+0#0000000&| @31
-@8|i+0#00e0003&|n|t| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n| |=| |0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|;+0#0000000&| @4
-@75
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|h|e|x|_|l| |=| |0+0#e000002&|x|7|f@2|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @26
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|o|c|t|_|l| |=| |0+0#e000002&|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @20
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|a|x|_|b|i|n|_|l| |=| |0+0#e000002&|b|0|1@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@2
-@1|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @41
-@75
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|h|e|x|_|l| |=| |0+0#e000002&|x|8|0@2|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @26
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|o|c|t|_|l| |=| |0+0#e000002&|1|0|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @19
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|_|b|i|n|_|l| |=| |0+0#e000002&|b|1|0@2|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@2
-@1|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|_|0@3|L|;+0#0000000&| @41
-@75
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|h|e|x|_|l| |=| |0+0#e000002&|x|f@3|_|f@3|_|f@3|_|f@3|L|;+0#0000000&| @20
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|o|c|t|_|l| |=| |0+0#e000002&|1|7|_|7@3|_|7@3|_|7@3|_|7@3|_|7@3|L|;+0#0000000&| @13
-@8|l+0#00e0003&|o|n|g| +0#0000000&|m|i|n|u|s|_|o|n|e|_|b|i|n|_|l| |=| |0+0#e000002&|b|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@1
-@2|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|_|1@3|L|;+0#0000000&| @35
-@4|}| @69
->}| @73
-@57|8@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_string_99.dump b/runtime/syntax/testdir/dumps/java_string_99.dump
deleted file mode 100644
index a401ad6..0000000
--- a/runtime/syntax/testdir/dumps/java_string_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@11|.|"@2| @58
-| +0#e000e06&@11|%|-|1|4|s|\|{|S+0#0000000&|T|R|.|"@2| @48
-| +0#e000e06&@15|A|\|s|\| +0#0000000&@54
-| +0#e000e06&@15|\|{| +0#0000000&|"+0#e000002&|q|u|i|c|k|"| +0#0000000&|}+0#e000e06&| |\| +0#0000000&@44
-| +0#e000e06&@15|b|r|o|w|n|"+0#0000000&@2|}+0#e000e06&|\| +0#0000000&@48
-| +0#e000e06&@11|%|s|\|{| +0#0000000&|f|o|x| |}+0#e000e06&| |\| +0#0000000&@50
-| +0#e000e06&@11|%|-|2|0|s|\|{|S+0#0000000&|T|R|.|"@2| @48
-| +0#e000e06&@15|j|u|m|p|s|\|s|\| +0#0000000&@50
-| +0#e000e06&@15|o|v|e|r| |\| +0#0000000&@52
-| +0#e000e06&@15|t|h|e|\|s|\| +0#0000000&@52
-| +0#e000e06&@15|\|{| +0#0000000&|"+0#e000002&|l|a|z|y|"| +0#0000000&|}+0#e000e06&| |"+0#0000000&@2|}+0#e000e06&|\| +0#0000000&@41
-| +0#e000e06&@11|%|s|\|{| +0#0000000&|d|o|g| |}+0#e000e06&|"+0#0000000&@2|;| @48
-@8|S|t|r|i|n|g| |s|1|3| |=| |S|T|R| @50
-@12|.|"+0#e000e06&|\|"|\|{| +0#0000000&@9|/+0#0000e05&|*| |A| |n|e|s|t|e|d| |c|o|m@1|e|n|t|.| |*|/| +0#0000000&@23
-@8|(@1|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|S|t|r|i|n|g|,| |S|t|r|i|n|g|>|)| |b|a|y| |-|>| |b|a|y|)| @8
-@28|.|a|p@1|l|y|(|w|o@1|f|)| @34
-@12|}+0#e000e06&|\|s|!|\|"@1|;+0#0000000&| @54
-@4|}| @69
->}| @73
-@57|1|0|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_01.dump b/runtime/syntax/testdir/dumps/java_switch_01.dump
index 0a76a87..e68c701 100644
--- a/runtime/syntax/testdir/dumps/java_switch_01.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_01.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@7|Y|i|e|l|d|a|b|l|e|<|?|>| |y| |=| |(@1|Y|i|e|l|d|a|b|l|e|<|?|>|)| |(|)| |-|>| |0+0#e000002&|)+0#0000000&|:@1| @23
+@75
 @4|y|i|e|l|d|;| @64
 @8|(@1|Y|i|e|l|d|a|b|l|e|<|?|>|)| |(|)| |-|>| |0+0#e000002&|)+0#0000000&|.|w|h|e|n|(|)|.|d|e|f|a|u|l|t|_|(|)|.|y|i|e|l|d|(|)|;| @15
 @75
-@8|e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
-> @74
+@8>e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
+@75
 @8|L|e|t@1|e|r|s| |w|h|e|n| |=| |L|e|t@1|e|r|s|.|O|T|H|E|R|;| @37
 @75
 @8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|w|h|e|n|)| |{| @51
@@ -16,5 +17,4 @@
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|A|L|P|H|A| @1|-|>| |L|e|t@1|e|r|s|.|A|L|P|H|A|;| @33
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|B|E|T|A| @2|-|>| |L|e|t@1|e|r|s|.|B|E|T|A|;| @34
 @12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |{| |y+0#af5f00255&|i|e|l|d|(+0#0000000&|L|e|t@1|e|r|s|.|O|T|H|E|R|)|;| |}| @22
-@8|}|)|;| @63
-@57|1|9|,|0|-|1| @7|1|3|%| 
+@57|1|8|,|3|-|9| @7|1|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_02.dump b/runtime/syntax/testdir/dumps/java_switch_02.dump
index cf213ed..de7e480 100644
--- a/runtime/syntax/testdir/dumps/java_switch_02.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_02.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|}|)|;| @63
+| +0&#ffffff0@11|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |{| |y+0#af5f00255&|i|e|l|d|(+0#0000000&|L|e|t@1|e|r|s|.|O|T|H|E|R|)|;| |}| @22
+@8|}|)|;| @63
 @75
 @8|S|t|r|i|n|g| |y+0#af5f00255&|i|e|l|d| +0#0000000&|=| |n+0#e000002&|u|l@1|;+0#0000000&| @46
 @75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|y+0#af5f00255&|i|e|l|d|)+0#0000000&| |{| @50
-@8>c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|A|"|:+0#0000000&| |c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|B|"|:+0#0000000&| |{| |e|c|h|o|(|"+0#e000002&|A| |o|r| |B|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
+@8>s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|y+0#af5f00255&|i|e|l|d|)+0#0000000&| |{| @50
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|A|"|:+0#0000000&| |c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|B|"|:+0#0000000&| |{| |e|c|h|o|(|"+0#e000002&|A| |o|r| |B|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|:|"|:+0#0000000&| @6|{| |e|c|h|o|(|"+0#e000002&|C|o|l|o|n|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @25
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|s|t|r|.|e|q|u|a|l|s|(|"+0#e000002&@1|)+0#0000000&|:| @29
 @20|{| |e|c|h|o|(|"+0#e000002&|<|n|o|n|-|e|m|p|t|y|>|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
@@ -16,5 +17,4 @@
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|s|t|r|.|e|q|u|a|l|s|(|"+0#e000002&@1|)+0#0000000&| @26
 @24|-|>| |"+0#e000002&|<|n|o|n|-|e|m|p|t|y|>|"|;+0#0000000&| @33
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
-@8|}|)|;| @63
-@57|3|7|,|3|-|9| @7|3|0|%| 
+@57|3|6|,|3|-|9| @7|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_03.dump b/runtime/syntax/testdir/dumps/java_switch_03.dump
index 7766af3..123a254 100644
--- a/runtime/syntax/testdir/dumps/java_switch_03.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_03.dump
@@ -1,12 +1,13 @@
-| +0&#ffffff0@7|}|)|;| @63
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
+@8|}|)|;| @63
 @75
 @8|O|b|j|e|c|t| |o| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @42
 @75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @54
-@8>c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| @5|{| |e|c|h|o|(|"+0#e000002&|n|u|l@1|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @26
+@8>s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @54
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| @5|{| |e|c|h|o|(|"+0#e000002&|n|u|l@1|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @26
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s|[|]| |l@1|:| @1|{| |e|c|h|o|(|"+0#e000002&|S|w|i|t|c|h|T|e|s|t|s|$|1|L|e|t@1|e|r|s|[|]|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @4
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|"+0#e000002&|j|a|v|a|.|l|a|n|g|.|O|b|j|e|c|t|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @14
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @49
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1| +0#0000000&@6|-|>| |"+0#e000002&|n|u|l@1|"|;+0#0000000&| @36
@@ -16,5 +17,4 @@
 @75
 @8|c+0#00e0003&|h|a|r| +0#0000000&|c|h| |=| |'+0#e000002&|c|'|;+0#0000000&| @52
 @75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @53
-@57|5@1|,|3|-|9| @7|4|7|%| 
+@57|5|4|,|3|-|9| @7|4|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_04.dump b/runtime/syntax/testdir/dumps/java_switch_04.dump
index 38dfe40..a2f1c86 100644
--- a/runtime/syntax/testdir/dumps/java_switch_04.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_04.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @53
+| +0&#ffffff0@74
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @53
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|a|'|:+0#0000000&| @6|{| |e|c|h|o|(|'+0#e000002&|a|'|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|b|'|:+0#0000000&| @6|{| |e|c|h|o|(|'+0#e000002&|b|'|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|'+0#e000002&|\+0#e000e06&|u|0@3|'+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @24
-@8|}|;| @64
-> @74
+@8>}| @65
+@75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @48
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|a|'| +0#0000000&@3|-|>| |'+0#e000002&|a|'|;+0#0000000&| @43
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|b|'| +0#0000000&@3|-|>| |'+0#e000002&|b|'|;+0#0000000&| @43
@@ -16,5 +17,4 @@
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&|:| @3|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&|:| @3|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @20
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
-@8|}|;| @64
-@57|7|3|,|0|-|1| @7|6|5|%| 
+@57|7|2|,|3|-|9| @7|6|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_05.dump b/runtime/syntax/testdir/dumps/java_switch_05.dump
index 3a25667..15939be 100644
--- a/runtime/syntax/testdir/dumps/java_switch_05.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_05.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|}|;| @64
+| +0&#ffffff0@7|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|b|)| |{| @49
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @34
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @34
-@12>d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @37
+@12>c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @34
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @37
 @8|}|)|;| @63
 @75
 @8|s+0#00e0003&|h|o|r|t| +0#0000000&|s|h| |=| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |2+0#e000002&|;+0#0000000&| @45
@@ -12,9 +13,8 @@
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&|:| @2|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @19
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&|:| @2|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @19
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @22
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|h|)| |{| @48
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @29
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
-@57|9|1|,|4|-|1|3| @6|8|2|%| 
+@57|9|0|,|4|-|1|3| @6|8|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_06.dump b/runtime/syntax/testdir/dumps/java_switch_06.dump
index 9e72cc7..3e3483c 100644
--- a/runtime/syntax/testdir/dumps/java_switch_06.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_06.dump
@@ -1,14 +1,15 @@
-| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @29
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
 @12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @32
 @8|}|)|;| @63
 @75
-@8|i+0#00e0003&|n|t| +0#0000000&|i| |=| |2+0#e000002&|;+0#0000000&| @56
-> @74
+@8>i+0#00e0003&|n|t| +0#0000000&|i| |=| |2+0#e000002&|;+0#0000000&| @56
+@75
 @8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @54
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|b|0|_@1|0@1|_@2|0@2|:+0#0000000&| |{| |e|c|h|o|(|0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|x|0@2|_@2|0@1|_@1|1|:+0#0000000&| |{| |e|c|h|o|(|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @49
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|_|0|_|0|_|0|_|0| +0#0000000&@1|-|>| |0+0#e000002&|;+0#0000000&| @41
@@ -16,5 +17,4 @@
 @12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|;+0#0000000&| @44
 @8|}|)|;| @63
 @4|}| @69
-|}| @73
-@57|1|0|9|,|0|-|1| @6|B|o|t| 
+@57|1|0|8|,|3|-|9| @6|9@1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_07.dump b/runtime/syntax/testdir/dumps/java_switch_07.dump
new file mode 100644
index 0000000..51f4f8d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_switch_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_99.dump b/runtime/syntax/testdir/dumps/java_switch_99.dump
deleted file mode 100644
index f275382..0000000
--- a/runtime/syntax/testdir/dumps/java_switch_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|;+0#0000000&| @29
-@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|;+0#0000000&| @32
-@8|}|)|;| @63
-@75
-@8|i+0#00e0003&|n|t| +0#0000000&|i| |=| |2+0#e000002&|;+0#0000000&| @56
-@75
-@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @54
-@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|b|0|_@1|0@1|_@2|0@2|:+0#0000000&| |{| |e|c|h|o|(|0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
-@8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|x|0@2|_@2|0@1|_@1|1|:+0#0000000&| |{| |e|c|h|o|(|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
-@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
-@8|}|;| @64
-@75
-@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @49
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|_|0|_|0|_|0|_|0| +0#0000000&@1|-|>| |0+0#e000002&|;+0#0000000&| @41
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&| +0#0000000&@5|-|>| |1+0#e000002&|;+0#0000000&| @45
-@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@4|-|>| |-|1+0#e000002&|;+0#0000000&| @44
-@8|}|)|;| @63
-@4|}| @69
->}| @73
-@57|1|2@1|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_01.dump b/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
index cb57834..b9fff36 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
@@ -17,4 +17,4 @@
 @24|n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{@2|}@2|;| @30
 @20|}@2|;| @50
 @16|}| @57
-@57|1|9|,|1| @9|1|9|%| 
+@57|1|9|,|1| @9|1|6|%| 
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
index f557d66..c99fa33 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
@@ -8,7 +8,7 @@
 @16|b+0#af5f00255&|r|e|a|k|;+0#0000000&| @52
 @12|}| @61
 @12|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| |;| @52
-@8|}|;| @64
+@8|}| @65
 @4|}| @69
 @75
 @4|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @30
@@ -17,4 +17,4 @@
 @8|d+0#af5f00255&|o| +0#0000000&|{| @62
 @12|i+0#af5f00255&|f| +0#0000000&|(|t+0#e000002&|r|u|e|)+0#0000000&| @53
 @16|b+0#af5f00255&|r|e|a|k| +0#0000000&|o+0#af5f00255&|u|t|;+0#0000000&| @48
-@57|3|7|,|4|-|1|3| @6|4|6|%| 
+@57|3|7|,|4|-|1|3| @6|3|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_03.dump b/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
index e2735a7..8b2a981 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
@@ -2,19 +2,19 @@
 @8|}| |w+0#af5f00255&|h|i|l|e| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&|;| @50
 |}| @73
 @4|}| @69
+|/+0#0000e05&|*|\@2|*|/| +0#0000000&|{| @65
+@8>(|n+0#af5f00255&|e|w| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0@14
+@12|/+0#0000e05&|*@1| +0#0000000&@59
+| +0#0000e05&@12|*| +0#e000e06&|{|@|i|n|h|e|r|i|t|D|o|c|}| |*+0#0000e05&|/| +0#0000000&@43
+@12|p+0#00e0003&|u|b|l|i|c| +0#0000000&|O|b|j|e|c|t| |a|p@1|l|y|(|O|b|j|e|c|t| |o|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|o|;| |}+0#ffffff16#ff404010|;+0#0000000#ffffff0| @18
+@8|}+0#ffffff16#ff404010|)+0#0000000#ffffff0|.|a|p@1|l|y|(| @57
+@8|(|n+0#af5f00255&|e|w| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|O|b|j|e|c|t|,| |O|b|j|e|c|t|>|(|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0@14
+@12|/+0#0000e05&|*@1| +0#e000e06&|{|@|i|n|h|e|r|i|t|D|o|c|}| +0#0000000&@45
+| +0#e000e06&@12|*+0#0000e05&|/| +0#0000000&@59
+@12|p+0#00e0003&|u|b|l|i|c| +0#0000000&|O|b|j|e|c|t| |a|p@1|l|y|(|O|b|j|e|c|t| |o|)| |{+0#ffffff16#ff404010| +0#0000000#ffffff0|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|o|;| |}+0#ffffff16#ff404010|;+0#0000000#ffffff0| @18
+@8|}+0#ffffff16#ff404010|)+0#0000000#ffffff0@1|;| @62
+@4|}| @69
 @75
-@4>/+0#0000e05&|*@1| +0#0000000&@67
+@4|/+0#0000e05&|*@1| +0#0000000&@67
 | +0#0000e05&@4|*| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@54
-| +0#0000e05&@4|*|/| +0#0000000&@67
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @54
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @58
-@4|{| @69
-@4|}| @69
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|3|(|)| |{| @56
-@4|}| @69
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
-@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|4|(|)| |{| @56
-@4|/+0#0000e05&|*|/|\|/|\|/|\|*|/| +0#0000000&|;| |}| @56
-@57|5@1|,|2|-|5| @7|7|3|%| 
+@57|5@1|,|3|-|9| @7|6|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_04.dump b/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
index aa0ed17..40fb521 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|/+0#0000e05&|*|/|\|/|\|/|\|*|/| +0#0000000&|;| |}| @56
+| +0#0000e05#ffffff0@4|*| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@54
+| +0#0000e05&@4|*|/| +0#0000000&@67
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|1|(|)| |{| |}| @54
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|2|(|)| @58
+@4>{| @69
+@4|}| @69
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|3|(|)| |{| @56
+@4|}| @69
+@4|/+0#0000e05&|*@1| +0#e000e06&|N|o| |o|p|e|r|a|t|i|o|n|.| +0#0000e05&|*|/| +0#0000000&@50
+@4|v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|4|(|)| |{| @56
+@4|/+0#0000e05&|*|/|\|/|\|/|\|*|/| +0#0000000&|;| |}| @56
 |}| @73
 @75
 |/+0#0000e05&|*| +0#0000000&@72
 | +0#0000e05&|*| |S|o|m|e| |n|o|t|e|.| +0#0000000&@61
-| +0#0000e05&>*| |{| +0#0000000&@70
-| +0#0000e05&|*| |}| +0#0000000&@70
-| +0#0000e05&|*|/| +0#0000000&@71
-|/+0#0000e05&|*@1| +0#0000000&@71
-| +0#0000e05&|*| +0#e000e06&|A| |s|u|m@1|a|r|y|.| +0#0000000&@61
 | +0#0000e05&|*| |{| +0#0000000&@70
 | +0#0000e05&|*| |}| +0#0000000&@70
-| +0#0000e05&|*|/| +0#0000000&@71
-|/+0#0000e05&@1| +0#0000000&@72
-|/+0#0000e05&@1| |{| +0#0000000&@70
-|/+0#0000e05&@1| |}| +0#0000000&@70
-@75
-|/+0#0000e05&|*| |1|2@1|||.@67
-@20|*|/| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|U|n|f|o|l|d|e|n|a|b|l|e| |{| @27
-@57|7|3|,|2| @9|9|8|%| 
+@57|7|3|,|2|-|5| @7|8|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_05.dump b/runtime/syntax/testdir/dumps/java_unfoldment_05.dump
new file mode 100644
index 0000000..fc59348
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_05.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#ffffff0|*| |}| +0#0000000&@70
+| +0#0000e05&|*|/| +0#0000000&@71
+|/+0#0000e05&|*@1| +0#0000000&@71
+| +0#0000e05&|*| +0#e000e06&|A| |s|u|m@1|a|r|y|.| +0#0000000&@61
+| +0#0000e05&|*| |{| +0#0000000&@70
+| +0#0000e05&>*| |}| +0#0000000&@70
+| +0#0000e05&|*|/| +0#0000000&@71
+|/+0#0000e05&@1| +0#0000000&@72
+|/+0#0000e05&@1| |{| +0#0000000&@70
+|/+0#0000e05&@1| |}| +0#0000000&@70
+@75
+|/+0#0000e05&|*| |1|2@1|||.@67
+@20|*|/| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|U|n|f|o|l|d|e|n|a|b|l|e| |{| @27
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|1|,|2| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_99.dump b/runtime/syntax/testdir/dumps/java_unfoldment_99.dump
deleted file mode 100644
index 9e10ac4..0000000
--- a/runtime/syntax/testdir/dumps/java_unfoldment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|}+0&#ffffff0| @73
-@75
-|/+0#0000e05&|*| +0#0000000&@72
-| +0#0000e05&|*| |S|o|m|e| |n|o|t|e|.| +0#0000000&@61
-| +0#0000e05&|*| |{| +0#0000000&@70
-| +0#0000e05&|*| |}| +0#0000000&@70
-| +0#0000e05&|*|/| +0#0000000&@71
-|/+0#0000e05&|*@1| +0#0000000&@71
-| +0#0000e05&|*| +0#e000e06&|A| |s|u|m@1|a|r|y|.| +0#0000000&@61
-| +0#0000e05&|*| |{| +0#0000000&@70
-| +0#0000e05&|*| |}| +0#0000000&@70
-| +0#0000e05&|*|/| +0#0000000&@71
-|/+0#0000e05&@1| +0#0000000&@72
-|/+0#0000e05&@1| |{| +0#0000000&@70
-|/+0#0000e05&@1| |}| +0#0000000&@70
-@75
-|/+0#0000e05&|*| |1|2@1|||.@67
-@20|*|/| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|U|n|f|o|l|d|e|n|a|b|l|e| |{| @27
->}| @73
-@57|8|6|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/markdown_conceal_99.dump b/runtime/syntax/testdir/dumps/markdown_conceal_99.dump
deleted file mode 100644
index d0b6be1..0000000
--- a/runtime/syntax/testdir/dumps/markdown_conceal_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|I+0&#ffffff0|t|a|l|i|c|,| |I|t|a|l|i|c|.| @1|B+0#0000001#ffff4012|o|l|d|,+0#0000000#ffffff0| |B+0#0000001#ffff4012|o|l|d|.+0#0000000#ffffff0| @46
-|B+2&&|o|l|d| |I|t|a|l|i|c|,+0&&| |B+2&&|o|l|d| |I|t|a|l|i|c|.+0&&| @49
-|S+1024&&|t|r|i|k|e|t|h|r|o|u|g|h|,+0&&| |S̶|t̶|r̶|i̶|k̶|e̶|t̶|h̶|r̶|o̶|u̶|g̶|h̶|.| @45
-@75
-@75
-|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
-|<+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|S+1024#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|>+0#00e0e07&|S+1024#0000000&|t|r|i|k|e|t|h|r|o|u|g|h|<+0#00e0e07&|/|s+0#af5f00255&|>+0#00e0e07&|.+0#0000000&|<+0#00e0e07&|b+0#af5f00255&|r| +0#00e0e07&|/|>| +0#0000000&@21
-@75
-@75
-@75
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|<|e+0#af5f00255&|m|>+0#00e0e07&|B+2#0000000&|o|l|d| |I|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|<|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+0#0000000&| @36
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|<|e+0#af5f00255&|m|>+0#00e0e07&|B+2#0000000&|o|l|d| |I|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|<|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+0#0000000&|<+0#00e0e07&|b+0#af5f00255&|r| +0#00e0e07&|/|>| +0#0000000&@30
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|B+0#0000001#ffff4012|o|l|d|<+0#00e0e07#ffffff0|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|B+0#0000001#ffff4012|o|l|d|<+0#00e0e07#ffffff0|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+0#0000000&| @29
-|<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|I+0#0000000&|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|I+0#0000000&|t|a|l|i|c|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|.+0#0000000&| @41
-> @74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|5|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_02.dump b/runtime/syntax/testdir/dumps/modula2_iso_02.dump
index 6d60233..488b062 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_02.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_02.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+|N+0#00e0e07#ffffff0|E|W| +0#0000000&|D+0#00e0e07&|I|S|P|O|S|E| +0#0000000&@63
+@75
 |(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n|s| |*|)| +0#0000000&@53
 |A+0#00e0003&|D@1|R|E|S@1| +0#0000000&|B+0#00e0003&|Y|T|E| +0#0000000&|L+0#00e0003&|O|C| +0#0000000&|W+0#00e0003&|O|R|D| +0#0000000&|A+0#00e0003&|D|R| +0#0000000&|C+0#00e0003&|A|S|T| +0#0000000&|T+0#00e0003&|S|I|Z|E| +0#0000000&|S+0#00e0003&|Y|S|T|E|M| +0#0000000&@31
 |M+0#00e0003&|A|K|E|A|D|R| +0#0000000&|A+0#00e0003&|D@1|A|D|R| +0#0000000&|S+0#00e0003&|U|B|A|D|R| +0#0000000&|D+0#00e0003&|I|F|A|D|R| +0#0000000&|R+0#00e0003&|O|T|A|T|E| +0#0000000&|S+0#00e0003&|H|I|F|T| +0#0000000&@33
-@75
->(+0#0000e05&|*| |n|o|n|-|s|t|a|n|d|a|r|d| |l|a|n|g|u|a|g|e| |e|x|t|e|n|s|i|o|n|s| |*|)| +0#0000000&@36
+> @74
+|(+0#0000e05&|*| |n|o|n|-|s|t|a|n|d|a|r|d| |l|a|n|g|u|a|g|e| |e|x|t|e|n|s|i|o|n|s| |*|)| +0#0000000&@36
 |L+0#00e0003&|O|N|G|C|A|R|D| +0#0000000&|L+0#00e0003&|O|N|G|B|I|T|S|E|T| +0#0000000&@55
 @75
 |(+0#0000e05&|*| |u|s|e|r| |d|e|f|i|n|e|d| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@44
@@ -16,5 +17,4 @@
 |(+0#0000e05&|*| |n|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@52
 |0+0#e000002&|F@2|H|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|e|-|4|5|,+0#e000e06&| +0#0000000&|1+0#e000002&|0@2| +0#0000000&@47
 @75
-|(+0#0000e05&|*| |o|c|t|a|l| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@54
-@57|3|7|,|1| @9|3|2|%| 
+@57|3|6|,|0|-|1| @7|3|1|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_03.dump b/runtime/syntax/testdir/dumps/modula2_iso_03.dump
index b9406da..9207c5f 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_03.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_03.dump
@@ -1,9 +1,10 @@
-|(+0#0000e05#ffffff0|*| |o|c|t|a|l| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@54
+| +0&#ffffff0@74
+|(+0#0000e05&|*| |o|c|t|a|l| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@54
 |n| |:+0#e000e06&|=| +0#0000000&|0+0#e000002&|3|7@1|B|;+0#e000e06&| +0#0000000&|c|h| |:+0#e000e06&|=| +0#0000000&|0+0#e000002&|3|7@1|C|;+0#e000e06&| +0#0000000&@50
 @75
 |(+0#0000e05&|*| |p|r|a|g|m|a|s| |*|)| +0#0000000&@61
-|<+0#e000e06&|*|$|f|o@1|*|>| +0#0000000&@66
-> @74
+><+0#e000e06&|*|$|f|o@1|*|>| +0#0000000&@66
+@75
 |(+0#0000e05&|*| |b|l|o|c|k| |c|o|m@1|e|n|t|s| |w|i|t|h| |e|m|p|h|a|s|i|s| |*|)| +0#0000000&@40
 |(+0#0000e05&|*| |c+0#e000e06&|o|p|y|r|i|g|h|t| +0#0000e05&|(|c|)| |J|u|r@1|a|s|i|c| |I|n|c|.| +0#0000000&@44
 | +0#0000e05&@2|a+0#e000e06&|u|t|h|o|r| +0#0000e05&|F|r|e|d| |F|l|i|n|t|s|t|o|n|e| |S|r|.| +0#0000000&@45
@@ -16,5 +17,4 @@
 |(+0#0000e05&|*| |t|e|c|h|n|i|c|a|l| |d|e|b|t| |m|a|r|k|e|r|s| |*|)| +0#0000000&@46
 |(+0#0000e05&|*| |T+0#e000e06&|O|D|O|:| +0#0000e05&|.@2| |*|)| +0#0000000&@59
 |(+0#0000e05&|*| |F+0#e000e06&|I|X|M|E| +0#0000e05&|*|)| +0#0000000&@63
-|(+0#0000e05&|*| |D+0#e000e06&|E|P|R|E|C|A|T|E|D| +0#0000e05&|*|)| +0#0000000&@58
-@57|5@1|,|0|-|1| @7|5|1|%| 
+@57|5|4|,|1| @9|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_04.dump b/runtime/syntax/testdir/dumps/modula2_iso_04.dump
index 98fdc23..5b379c5 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_04.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_04.dump
@@ -1,9 +1,10 @@
-|(+0#0000e05#ffffff0|*| |D+0#e000e06&|E|P|R|E|C|A|T|E|D| +0#0000e05&|*|)| +0#0000000&@58
+|(+0#0000e05#ffffff0|*| |F+0#e000e06&|I|X|M|E| +0#0000e05&|*|)| +0#0000000&@63
+|(+0#0000e05&|*| |D+0#e000e06&|E|P|R|E|C|A|T|E|D| +0#0000e05&|*|)| +0#0000000&@58
 @75
 |(+0#0000e05&|*| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@58
 |P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|N+0#00e0e07&|e|w|F|o@1|W|i|t|h|B|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|V+0#af5f00255&|A|R| +0#0000000&|f|o@1|:+0#e000e06&| +0#0000000&|F|o@1|;+0#e000e06&| +0#0000000&|b|a|r| |:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R| +0#0000000&|)+0#e000e06&|;| +0#0000000&@18
-|B+0#af5f00255&|E|G|I|N| +0#0000000&@69
-@2>N+0#00e0e07&|E|W|(+0#e000e06&|f+0#0000000&|o@1|)+0#e000e06&|;| +0#0000000&@63
+>B+0#af5f00255&|E|G|I|N| +0#0000000&@69
+@2|N+0#00e0e07&|E|W|(+0#e000e06&|f+0#0000000&|o@1|)+0#e000e06&|;| +0#0000000&@63
 @2|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| |:+0#e000e06&|=| +0#0000000&|b|a|r|;+0#e000e06&| +0#0000000&@56
 @2|R+0#af5f00255&|E|T|U|R|N| +0#0000000&@66
 |E+0#af5f00255&|N|D| +0#0000000&|S+0#00e0e07&|e|t|B|a|r|;+0#e000e06&| +0#0000000&@63
@@ -16,5 +17,4 @@
 @2|E+0#af5f00255&|L|S|E| +0#0000000&@68
 @4|R+0#af5f00255&|E|T|U|R|N| +0#0000000&|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| @55
 @2|E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
-|E+0#af5f00255&|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
-@57|7|3|,|3| @9|7|0|%| 
+@57|7|2|,|1| @9|6|9|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_05.dump b/runtime/syntax/testdir/dumps/modula2_iso_05.dump
index eca4631..fac8919 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_05.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_05.dump
@@ -1,9 +1,10 @@
-|E+0#af5f00255#ffffff0|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
+| +0&#ffffff0@1|E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
+|E+0#af5f00255&|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
 @75
 |(+0#0000e05&|*| |d|i|s|a|b|l|e|d| |c|o|d|e| |*|)| +0#0000000&@55
 |?+0#4040ff13&|<| +0#0000000&@72
-|W+0#4040ff13&|H|I|L|E| |f|o@1| |=| |b|a|r| |D|O| +0#0000000&@56
-| +0#4040ff13&@1>b|a|z|(|b|a|m|,| |b|o@1|)| +0#0000000&@59
+>W+0#4040ff13&|H|I|L|E| |f|o@1| |=| |b|a|r| |D|O| +0#0000000&@56
+| +0#4040ff13&@1|b|a|z|(|b|a|m|,| |b|o@1|)| +0#0000000&@59
 |E+0#4040ff13&|N|D| |(|*| |W|H|I|L|E| |*|)|;| +0#0000000&@58
 |>+0#4040ff13&|?| +0#0000000&@72
 @75
@@ -16,5 +17,4 @@
 |(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
 @75
 |_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-@57|9|1|,|3| @9|8|9|%| 
+@57|9|0|,|1| @9|8@1|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_06.dump b/runtime/syntax/testdir/dumps/modula2_iso_06.dump
index 4074a01..ef5b0fe 100644
--- a/runtime/syntax/testdir/dumps/modula2_iso_06.dump
+++ b/runtime/syntax/testdir/dumps/modula2_iso_06.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
+|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
+@75
 |b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
 @75
 |_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
->b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
+> @74
+|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
 @75
 |b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
 @75
@@ -16,5 +17,4 @@
 |~| @73
 |~| @73
 |~| @73
-|~| @73
-| +0#0000000&@56|1|0|9|,|1| @8|B|o|t| 
+| +0#0000000&@56|1|0|8|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/modula2_iso_99.dump b/runtime/syntax/testdir/dumps/modula2_iso_99.dump
deleted file mode 100644
index e23fb29..0000000
--- a/runtime/syntax/testdir/dumps/modula2_iso_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|@+0#e000e06#ffffff0| +0#0000000&@1|&+0#e000e06&| +0#0000000&@1|~+0#e000e06&| +0#0000000&@67
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
-|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|!+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|\+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@55
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
-@75
-|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
-@75
-|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
-@75
-@75
->E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
-@57|1@1|4|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/modula2_pim_06.dump b/runtime/syntax/testdir/dumps/modula2_pim_06.dump
new file mode 100644
index 0000000..4f865e4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/modula2_pim_06.dump
@@ -0,0 +1,20 @@
+|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
+> @74
+@75
+|E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|9|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/modula2_pim_99.dump b/runtime/syntax/testdir/dumps/modula2_pim_99.dump
deleted file mode 100644
index 7e096a2..0000000
--- a/runtime/syntax/testdir/dumps/modula2_pim_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|&+0#e000e06#ffffff0| +0#0000000&@1|~+0#e000e06&| +0#0000000&@70
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
-|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|!+0#ffffff16#ff404010| +0#0000000#ffffff0@1|@+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|\+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@52
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
-@75
-|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
-@75
-|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
-@75
-@75
->E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
-@57|1@2|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_02.dump b/runtime/syntax/testdir/dumps/modula2_r10_02.dump
index 408872a..285d5eb 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_02.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_02.dump
@@ -1,9 +1,10 @@
-|U+0#00e0003#ffffff0|N|S|A|F|E| +0#0000000&@68
+|(+0#0000e05#ffffff0|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n|s| |*|)| +0#0000000&@53
+|U+0#00e0003&|N|S|A|F|E| +0#0000000&@68
 @75
 |(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |t|y|p|e|s| |*|)| +0#0000000&@48
 |B+0#00e0003&|Y|T|E| +0#0000000&|W+0#00e0003&|O|R|D| +0#0000000&|L+0#00e0003&|O|N|G|W|O|R|D| +0#0000000&|A|D@1|R|E|S@1| |O+0#00e0003&|C|T|E|T|S|E|Q| +0#0000000&@39
-@75
->(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@43
+> @74
+|(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@43
 |A+0#00e0003&|D@1| +0#0000000&|S+0#00e0003&|U|B| +0#0000000&|D+0#00e0003&|E|C| +0#0000000&|I+0#00e0003&|N|C| +0#0000000&|S+0#00e0003&|E|T|B|I|T| +0#0000000&|H+0#00e0003&|A|L|T| +0#0000000&@47
 @75
 |(+0#0000e05&|*| |u|n|s|a|f|e| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n|s| |*|)| +0#0000000&@44
@@ -16,5 +17,4 @@
 |f|o@1|b|a|r| |F|o@1|b|a|r| |F|o@1|B|a|r| |f|o@1|_|b|a|r| |f|o@1|0| @41
 @75
 @75
-|(+0#0000e05&|*| |s|t|r|i|n|g| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@53
-@57|3|7|,|1| @9|2|4|%| 
+@57|3|6|,|0|-|1| @7|2|3|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_03.dump b/runtime/syntax/testdir/dumps/modula2_r10_03.dump
index b35c8b0..4d335d2 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_03.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_03.dump
@@ -1,9 +1,10 @@
-|(+0#0000e05#ffffff0|*| |s|t|r|i|n|g| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@53
+| +0&#ffffff0@74
+|(+0#0000e05&|*| |s|t|r|i|n|g| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@53
 |s|t|r| |:+0#e000e06&|=| +0#0000000&|"+0#e000002&|f|o@1| |'|b|a|r|'| |b|a|z|"|;+0#e000e06&| +0#0000000&@51
 |s|t|r| |:+0#e000e06&|=| +0#0000000&|'+0#e000002&|f|o@1| |"|b|a|r|"| |b|a|z|'|;+0#e000e06&| +0#0000000&@51
 @75
-|(+0#0000e05&|*| |n|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@52
->0+0#e000002&|b|0|1@1|0|'|0@1|1@1|'|0|1@1|0|'|0@3|,+0#e000e06&| +0#0000000&|0+0#e000002&|u|0|A|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|0|1|2|3|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|C|A|F|E|'|D|0@1|D| +0#0000000&@26
+>(+0#0000e05&|*| |n|u|m|e|r|i|c| |l|i|t|e|r|a|l|s| |*|)| +0#0000000&@52
+|0+0#e000002&|b|0|1@1|0|'|0@1|1@1|'|0|1@1|0|'|0@3|,+0#e000e06&| +0#0000000&|0+0#e000002&|u|0|A|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|0|1|2|3|,+0#e000e06&| +0#0000000&|0+0#e000002&|x|C|A|F|E|'|D|0@1|D| +0#0000000&@26
 |1+0#e000002&|'|0@2|'|0@2|.|0@1|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|e|+|1|0|,+0#e000e06&| +0#0000000&|1+0#e000002&|.|2|3|4|'|5|6|7|'|8|9|0|e|-|1|'|0@2| +0#0000000&@24
 @75
 @75
@@ -16,5 +17,4 @@
 @75
 @75
 |(+0#0000e05&|*| |s|i|n|g|l|e| |l|i|n|e| |c|o|m@1|e|n|t| |*|)| +0#0000000&@49
-|!+0#0000e05&| |f|o@1| |b|a|r| |b|a|z| |b|a|m| |b|o@1| | +0#0000000&@52
-@57|5@1|,|1| @9|3|8|%| 
+@57|5|4|,|1| @9|3|7|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_04.dump b/runtime/syntax/testdir/dumps/modula2_r10_04.dump
index cd6436c..f0017ff 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_04.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|(+0#0000e05#ffffff0|*| |s|i|n|g|l|e| |l|i|n|e| |c|o|m@1|e|n|t| |*|)| +0#0000000&@49
+|!+0#0000e05&| |f|o@1| |b|a|r| |b|a|z| |b|a|m| |b|o@1| | +0#0000000&@52
+@75
 |(+0#0000e05&|*| |b|l|o|c|k| |c|o|m@1|e|n|t|s| |w|i|t|h| |e|m|p|h|a|s|i|s| |*|)| +0#0000000&@40
 |(+0#0000e05&|*| |c+0#e000e06&|o|p|y|r|i|g|h|t| +0#0000e05&|(|c|)| |2|0|1|6| |M|o|d|u|l|a|-|2| |F|o|u|n|d|a|t|i|o|n|.| +0#0000000&@32
-| +0#0000e05&@2|a+0#e000e06&|u|t|h|o|r|s| +0#0000e05&|B|.|K|o|w|a|r|s|c|h| |a|n|d| |R|.|S|u|t|c|l|i|f@1|e| +0#0000000&@37
+| +0#0000e05&@2>a+0#e000e06&|u|t|h|o|r|s| +0#0000e05&|B|.|K|o|w|a|r|s|c|h| |a|n|d| |R|.|S|u|t|c|l|i|f@1|e| +0#0000000&@37
 | +0#0000e05&@2|l+0#e000e06&|i|c|e|n|s|e| +0#0000e05&|s|e@1| |L|I|C|E|N|S|E| |*|)| +0#0000000&@49
-> @74
+@75
 |(+0#0000e05&|*| |p+0#e000e06&|r|e|-|c|o|n|d|i|t|i|o|n|s|:| +0#0000e05&|f|o@1| |b|a|r| |b|a|z| |b|a|m| |b|o@1| |d|o@1|d|l|e| |w|a|h|.| +0#0000000&@24
 | +0#0000e05&@2|p+0#e000e06&|o|s|t|-|c|o|n|d|i|t|i|o|n|s|:| +0#0000e05&|f|o@1|d|l|e| |b|a|b@1|l|e| |b|o|z|o| |b|i|m| |b|a|m| |d|a|n|g|.| +0#0000000&@22
 | +0#0000e05&@2|e+0#e000e06&|r@1|o|r|-|c|o|n|d|i|t|i|o|n|s|:| +0#0000e05&|d|a|d|a| |j|i|n|g|l|e| |j|u|n|g|l|e| |b|o|g@1|l|e| |d|e@1| |b|o@1|.| |*|)| +0#0000000&@16
@@ -15,6 +17,4 @@
 @75
 |P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|M+0#af5f00255&|O|D|]+0#e000e06&| +0#0000000&|m+0#00e0e07&|o|d|u|l|u|s| +0#0000000&|(+0#e000e06&| +0#0000000&|n|,+0#e000e06&| +0#0000000&|m| |:+0#e000e06&| +0#0000000&|I|N|T|6|4| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|I|N|T|6|4|;+0#e000e06&| +0#0000000&@25
 @75
-|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|R+0#af5f00255&|E|T|A|I|N|]+0#e000e06&| +0#0000000&|R+0#00e0e07&|e|t|a|i|n| +0#0000000&|(+0#e000e06&| +0#0000000&|f|o@1| |:+0#e000e06&| +0#0000000&|F|o@1| |)+0#e000e06&|;| +0#0000000&@34
-@75
-@57|7|3|,|0|-|1| @7|5|2|%| 
+@57|7|1|,|4| @9|5|1|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_05.dump b/runtime/syntax/testdir/dumps/modula2_r10_05.dump
index 2a8ae0c..6e1ac94 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_05.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_05.dump
@@ -1,9 +1,11 @@
 | +0&#ffffff0@74
-|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|L+0#00e0e07&|E|N|G|T|H|]+0#e000e06&| +0#0000000&|l+0#00e0e07&|e|n|g|t|h| +0#0000000&|(+0#e000e06&| +0#0000000&|s|t|r| |:+0#e000e06&| +0#0000000&|S|t|r|i|n|g| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|L+0#00e0003&|O|N|G|C|A|R|D|;+0#e000e06&| +0#0000000&@20
+|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|R+0#af5f00255&|E|T|A|I|N|]+0#e000e06&| +0#0000000&|R+0#00e0e07&|e|t|a|i|n| +0#0000000&|(+0#e000e06&| +0#0000000&|f|o@1| |:+0#e000e06&| +0#0000000&|F|o@1| |)+0#e000e06&|;| +0#0000000&@34
 @75
+|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|[+0#e000e06&|L+0#00e0e07&|E|N|G|T|H|]+0#e000e06&| +0#0000000&|l+0#00e0e07&|e|n|g|t|h| +0#0000000&|(+0#e000e06&| +0#0000000&|s|t|r| |:+0#e000e06&| +0#0000000&|S|t|r|i|n|g| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|L+0#00e0003&|O|N|G|C|A|R|D|;+0#e000e06&| +0#0000000&@20
 @75
+> @74
 |(+0#0000e05&|*| |p|r|o|c|e|d|u|r|e|s| |*|)| +0#0000000&@58
->P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|N+0#00e0e07&|e|w|F|o@1|W|i|t|h|B|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|V+0#af5f00255&|A|R| +0#0000000&|f|o@1|:+0#e000e06&| +0#0000000&|F|o@1|;+0#e000e06&| +0#0000000&|b|a|r| |:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R| +0#0000000&|)+0#e000e06&|;| +0#0000000&@18
+|P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|N+0#00e0e07&|e|w|F|o@1|W|i|t|h|B|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|V+0#af5f00255&|A|R| +0#0000000&|f|o@1|:+0#e000e06&| +0#0000000&|F|o@1|;+0#e000e06&| +0#0000000&|b|a|r| |:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R| +0#0000000&|)+0#e000e06&|;| +0#0000000&@18
 |B+0#af5f00255&|E|G|I|N| +0#0000000&@69
 @2|N+0#af5f00255&|E|W|(+0#e000e06&|f+0#0000000&|o@1|)+0#e000e06&|;| +0#0000000&@63
 @2|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| |:+0#e000e06&|=| +0#0000000&|b|a|r|;+0#e000e06&| +0#0000000&@56
@@ -15,6 +17,4 @@
 |(+0#0000e05&|*| |f|u|n|c|t|i|o|n|s| |*|)| +0#0000000&@59
 |P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|(+0#e000e06&| +0#0000000&|f|o@1| |:+0#e000e06&| +0#0000000&|F|o@1| |)+0#e000e06&| +0#0000000&|:+0#e000e06&| +0#0000000&|I+0#00e0003&|N|T|E|G|E|R|;+0#e000e06&| +0#0000000&@36
 |B+0#af5f00255&|E|G|I|N| +0#0000000&@69
-@2|I+0#af5f00255&|F| +0#0000000&|f|o@1| |=+0#e000e06&| +0#0000000&|N+0#e000002&|I|L| +0#0000000&|T+0#af5f00255&|H|E|N| +0#0000000&@55
-@4|U+0#00e0003&|N|S|A|F|E|.+0#e000e06&|H+0#00e0003&|A|L|T| +0#0000000&@59
-@57|9|1|,|1| @9|6@1|%| 
+@57|8|9|,|0|-|1| @7|6|5|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_06.dump b/runtime/syntax/testdir/dumps/modula2_r10_06.dump
index 68af55c..f28e65a 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_06.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_06.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@3|U+0#00e0003&|N|S|A|F|E|.+0#e000e06&|H+0#00e0003&|A|L|T| +0#0000000&@59
+|B+0#af5f00255#ffffff0|E|G|I|N| +0#0000000&@69
+@2|I+0#af5f00255&|F| +0#0000000&|f|o@1| |=+0#e000e06&| +0#0000000&|N+0#e000002&|I|L| +0#0000000&|T+0#af5f00255&|H|E|N| +0#0000000&@55
+@4|U+0#00e0003&|N|S|A|F|E|.+0#e000e06&|H+0#00e0003&|A|L|T| +0#0000000&@59
 @2|E+0#af5f00255&|L|S|E| +0#0000000&@68
 @4|R+0#af5f00255&|E|T|U|R|N| +0#0000000&|f|o@1|^+0#e000e06&|.|b+0#0000000&|a|r| @55
-@2|E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
+@2>E+0#af5f00255&|N|D| +0#0000000&|(+0#0000e05&|*| |I|F| |*|)| +0#0000000&@60
 |E+0#af5f00255&|N|D| +0#0000000&|b+0#00e0e07&|a|r|;+0#e000e06&| +0#0000000&@66
-> @74
+@75
 @75
 |(+0#0000e05&|*| |t|e|c|h|n|i|c|a|l| |d|e|b|t| |*|)| +0#0000000&@54
 |T+0#af5f00255&|O| +0#0000000&|D+0#af5f00255&|O| +0#0000000&|(+0#e000e06&| +0#0000000&|1+0#e000002&|2|3|4|,+0#e000e06&| +0#0000000&|W|e|i|g|h|t|.+0#e000e06&|M+0#0000000&|a|j|o|r| |)+0#e000e06&| +0#0000000&|(+0#0000e05&|*| |f|o@1| |*|)| +0#0000000&@36
@@ -15,6 +17,4 @@
 |P+0#af5f00255&|R|O|C|E|D|U|R|E| +0#0000000&|S+0#00e0e07&|e|t|B|a|b|a| +0#0000000&|<+0#e000e06&|*|D|E|P|R|E|C|A|T|E|D|*|>| +0#0000000&|(+0#e000e06&| +0#0000000&|n| |:+0#e000e06&| +0#0000000&|C+0#00e0003&|A|R|D|I|N|A|L| +0#0000000&|)+0#e000e06&|;| +0#0000000&@24
 @75
 @75
-|(+0#0000e05&|*| |d|i|s|a|b|l|e|d| |c|o|d|e| |*|)| +0#0000000&@55
-|?+0#4040ff13&|<| +0#0000000&@72
-@57|1|0|9|,|0|-|1| @6|8|1|%| 
+@57|1|0|7|,|3| @8|7|9|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_07.dump b/runtime/syntax/testdir/dumps/modula2_r10_07.dump
index 8f061fd..1b172da 100644
--- a/runtime/syntax/testdir/dumps/modula2_r10_07.dump
+++ b/runtime/syntax/testdir/dumps/modula2_r10_07.dump
@@ -1,9 +1,11 @@
-|?+0#4040ff13#ffffff0|<| +0#0000000&@72
+| +0&#ffffff0@74
+|(+0#0000e05&|*| |d|i|s|a|b|l|e|d| |c|o|d|e| |*|)| +0#0000000&@55
+|?+0#4040ff13&|<| +0#0000000&@72
 |W+0#4040ff13&|H|I|L|E| |f|o@1| |=| |b|a|r| |D|O| +0#0000000&@56
 | +0#4040ff13&@1|b|a|z|(|b|a|m|,| |b|o@1|)| +0#0000000&@59
-|E+0#4040ff13&|N|D| |(|*| |W|H|I|L|E| |*|)|;| +0#0000000&@58
+>E+0#4040ff13&|N|D| |(|*| |W|H|I|L|E| |*|)|;| +0#0000000&@58
 |>+0#4040ff13&|?| +0#0000000&@72
-> @74
+@75
 @75
 |(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
 |`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|~+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@58
@@ -15,6 +17,4 @@
 |b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
 @75
 |_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@57|1|2|7|,|0|-|1| @6|9|5|%| 
+@57|1|2|5|,|1| @8|9|3|%| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_08.dump b/runtime/syntax/testdir/dumps/modula2_r10_08.dump
new file mode 100644
index 0000000..2eb82c1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/modula2_r10_08.dump
@@ -0,0 +1,20 @@
+|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
+@75
+|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
+> @74
+@75
+|(+0#0000e05&|*| |m|o|d|u|l|e| |e|n|d| |*|)| +0#0000000&@58
+|E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4|3|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/modula2_r10_99.dump b/runtime/syntax/testdir/dumps/modula2_r10_99.dump
deleted file mode 100644
index 067fb47..0000000
--- a/runtime/syntax/testdir/dumps/modula2_r10_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |c|h|a|r|a|c|t|e|r|s| |*|)| +0#0000000&@50
-|`+0#ffffff16#ff404010| +0#0000000#ffffff0@1|~+0#ffffff16#ff404010| +0#0000000#ffffff0@1|$+0#ffffff16#ff404010| +0#0000000#ffffff0@1|%+0#ffffff16#ff404010| +0#0000000#ffffff0@1|?+0#ffffff16#ff404010| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010| +0#0000000#ffffff0@58
-@75
-|(+0#0000e05&|*| |i|l@1|e|g|a|l| |i|d|e|n|t|i|f|i|e|r|s| |*|)| +0#0000000&@49
-@75
-|_+0#ffffff16#ff404010|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@26
-@75
-|b+0#ffffff16#ff404010|a|r|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_| +0#0000000#ffffff0@26
-@75
-|_+0#ffffff16#ff404010@1|b|a|r| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_@1| +0#0000000#ffffff0@1|b+0#ffffff16#ff404010|a|r|_|b|a|z|_@1|b|a|m|_|b|o@1|_@1| +0#0000000#ffffff0@22
-@75
-|b+0#ffffff16#ff404010|a|r|_@1|b|a|z| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1|b|a|r|_@1|b|a|z|_@1| +0#0000000#ffffff0@1|_+0#ffffff16#ff404010@1| +0#0000000#ffffff0@35
-@75
-@75
-|(+0#0000e05&|*| |m|o|d|u|l|e| |e|n|d| |*|)| +0#0000000&@58
->E+0#af5f00255&|N|D| +0#0000000&|F+0#00e0e07&|o@1|b|a|r|.+0#e000e06&| +0#0000000&@63
-@57|1|4|6|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/progress_comments_00.dump b/runtime/syntax/testdir/dumps/progress_comments_00.dump
new file mode 100644
index 0000000..d0cff21
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/progress_comments_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0|*| +0#0000000&@72
+| +0#0000e05&|*| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |f|i|l|e|t|y|p|e|=|p|r|o|g|r|e|s@1| +0#0000000&@35
+| +0#0000e05&|*|/| +0#0000000&@71
+@75
+|d+0#af5f00255&|e|f|i|n|e| +0#0000000&|v+0#af5f00255&|a|r|i|a|b|l|e| +0#0000000&|c|u|s|t|o|m|e|r|_|n|a|m|e| |a+0#af5f00255&|s| +0#0000000&|c+0#af5f00255&|h|a|r|a|c|t|e|r| +0#0000000&|n+0#af5f00255&|o|-|u|n|d|o|.| +0#0000000&@23
+@75
+|/+0#0000e05&|*| |T|h|e| |t|e|s|t| |s|e|t|u|p| |a|b|o|v|e| |i|s| |a|n| |e|x|a|m|p|l|e| |o|f| |a| |m|u|l|t|i|-|l|i|n|e| |c|o|m@1|e|n|t|.| +0#0000000&@12
+|T+0#0000e05&|h|i|s| |i|s| |t|o@1|;| |t|h|e| |l|e|a|d|i|n|g| |*| |a|n|d| |l|e|f|t|-|h|a|n|d| |a|l|i|g|n|m|e|n|t| |a|r|e| |n|o|t| |r|e|q|u|i|r|e|d|.| |*|/| +0#0000000&@3
+|f+0#af5f00255&|o|r| +0#0000000&|e+0#af5f00255&|a|c|h| +0#0000000&|c|u|s|t|o|m|e|r| |n+0#af5f00255&|o|-|l|o|c|k| +0#0000000&@49
+@4|w+0#af5f00255&|h|e|r|e| +0#0000000&|c|u|s|t|o|m|e|r|.+0#af5f00255&|c+0#0000000&|u|s|t|o|m|e|r|_|i|d| |=+0#af5f00255&| +0#0000000&|1+0#e000002&|2|3|4|5| +0#0000000&@36
+|:+0#af5f00255&| +0#0000000&@73
+@4|a+0#af5f00255&|s@1|i|g|n| +0#0000000&|c|u|s|t|_|n|a|m|e| |=+0#af5f00255&| +0#0000000&|c|u|s|t|o|m|e|r|.+0#af5f00255&|c+0#0000000&|u|s|t|o|m|e|r|_|n|a|m|e|.+0#af5f00255&| +0#0000000&|/+0#0000e05&|*| |C|o|m@1|e|n|t|s| |c|a|n| |a|l|s|o| |a|p@1|e|a|r| +0#0000000&
+| +0#0000e05&@49|a|t| |t|h|e| |e|n|d| |o|f| |a| |l|i|n|e|.| |*|/| +0#0000000&
+|e+0#af5f00255&|n|d|.| +0#0000000&|/+0#0000e05&|*| |f|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |*|/| +0#0000000&@46
+@75
+|/+0#0000e05&|*| |C|o|m@1|e|n|t|s| |c|a|n| |b|e| |/|*| |n|e|s|t|e|d| |*|/|.| |H|e|r|e|'|s| |t|h|e| |s|a|m|e| |q|u|e|r|y| |a|s| |a|b|o|v|e|,| |b|u|t| +0#0000000&@6
+|c+0#0000e05&|o|m@1|e|n|t|e|d| |o|u|t| |t|h|i|s| |t|i|m|e|:| +0#0000000&@50
+@75
+|f+0#0000e05&|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |n|o|-|l|o|c|k| +0#0000000&@49
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/progress_comments_01.dump b/runtime/syntax/testdir/dumps/progress_comments_01.dump
new file mode 100644
index 0000000..11dc103
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/progress_comments_01.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|n|d|.| +0#0000000&|/+0#0000e05&|*| |f|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |*|/| +0#0000000&@46
+@75
+|/+0#0000e05&|*| |C|o|m@1|e|n|t|s| |c|a|n| |b|e| |/|*| |n|e|s|t|e|d| |*|/|.| |H|e|r|e|'|s| |t|h|e| |s|a|m|e| |q|u|e|r|y| |a|s| |a|b|o|v|e|,| |b|u|t| +0#0000000&@6
+|c+0#0000e05&|o|m@1|e|n|t|e|d| |o|u|t| |t|h|i|s| |t|i|m|e|:| +0#0000000&@50
+@75
+>f+0#0000e05&|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |n|o|-|l|o|c|k| +0#0000000&@49
+| +0#0000e05&@3|w|h|e|r|e| |c|u|s|t|o|m|e|r|.|c|u|s|t|o|m|e|r|_|i|d| |=| |1|2|3|4|5| +0#0000000&@36
+|:+0#0000e05&| +0#0000000&@73
+| +0#0000e05&@3|a|s@1|i|g|n| |c|u|s|t|_|n|a|m|e| |=| |c|u|s|t|o|m|e|r|.|c|u|s|t|o|m|e|r|_|n|a|m|e|.| |/|*| |C|o|m@1|e|n|t|s| |c|a|n| |a|l|s|o| |a|p@1|e|a|r| +0#0000000&
+| +0#0000e05&@49|a|t| |t|h|e| |e|n|d| |o|f| |a| |l|i|n|e|.| |*|/| +0#0000000&
+|e+0#0000e05&|n|d|.| |/|*| |f|o|r| |e|a|c|h| |c|u|s|t|o|m|e|r| |*|/| +0#0000000&@46
+@75
+|T+0#0000001#ffff4012|O|D|O|:+0#0000e05#ffffff0| |N|o|t|e| |t|h|a|t| |/|*|/| |d|o|e|s| |n|o|t| |e|n|d| |t|h|e| |c|o|m@1|e|n|t|,| |b|e|c|a|u|s|e| |i|t| |a|c|t|u|a|l@1|y| |s|t|a|r|t|s| |a| +0#0000000&
+|n+0#0000e05&|e|w| |c|o|m@1|e|n|t| |w|h|o|s|e| |f|i|r|s|t| |c|h|a|r|a|c|t|e|r| |i|s| |a| |'|/|'|.| |N|o|w| |w|e| |n|e@1|d| |t|w|o| |e|n|d|-|c|o|m@1|e|n|t| +0#0000000&@3
+|m+0#0000e05&|a|r|k|e|r|s| |t|o| |r|e|t|u|r|n| |t|o| |a|c|t|u|a|l| |c|o|d|e|.| |*|/| |*|/| +0#0000000&@35
+@75
+|d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&|c|u|s|t|o|m|e|r|_|n|a|m|e|.+0#af5f00255&| +0#0000000&@52
+@75
+|/+0#0000e05&@1| |T|h|i|s| |i|s| |t|h|e| |s|i|n|g|l|e|-|l|i|n|e| |c|o|m@1|e|n|t| |s|y|n|t|a|x|.| +0#0000000&@32
+@57|1|9|,|1| @9|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/progress_comments_02.dump b/runtime/syntax/testdir/dumps/progress_comments_02.dump
new file mode 100644
index 0000000..1967476
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/progress_comments_02.dump
@@ -0,0 +1,20 @@
+|/+0#0000e05#ffffff0@1| |T|h|i|s| |i|s| |t|h|e| |s|i|n|g|l|e|-|l|i|n|e| |c|o|m@1|e|n|t| |s|y|n|t|a|x|.| +0#0000000&@32
+@75
+|/+0#0000e05&@1|N|o| |s|p|a|c|e| |i|s| |r|e|q|u|i|r|e|d| |a|f|t|e|r| |t|h|e| |s|l|a|s|h|e|s|.| |A|l|s|o|,| |a| |/|*| |h|e|r|e| |d|o|e|s| |n|o|t| |b|e|g|i|n| |a| +0#0000000&
+|/+0#0000e05&@1|n|e|w| |b|l|o|c|k| |c|o|m@1|e|n|t|.| +0#0000000&@54
+@75
+>f+0#af5f00255&|o|r| +0#0000000&|e+0#af5f00255&|a|c|h| +0#0000000&|s|u|p@1|l|i|e|r| |n+0#af5f00255&|o|-|l|o|c|k|:| +0#0000000&@48
+@4|/+0#0000e05&|*| |H|o|w|e|v|e|r|,| |a| |b|l|o|c|k| |c|o|m@1|e|n|t| |c|a|n| |e|n|d| |i|n|s|i|d|e| |(|w|h|a|t| |l|o@1|k|s| |l|i|k|e|)| |a| +0#0000000&@8
+| +0#0000e05&@6|s|i|n|g|l|e|-|l|i|n|e| |c|o|m@1|e|n|t|,| |b|e|c|a|u|s|e| |t|h|e| |s|l|a|s|h|e|s| |a|r|e| |j|u|s|t| |t|e|x|t| |a|s| |f|a|r| |a|s| |t|h|e
+| @6|/@1| |b|l|o|c|k| |c|o|m@1|e|n|t| |i|s| |c|o|n|c|e|r|n|e|d|.| |*|/| +0#0000000&@34
+@4|d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&|s|u|p@1|l|i|e|r|.+0#af5f00255&| +0#0000000&@53
+@75
+@4|/+0#0000e05&@1| |T+0#0000001#ffff4012|O|D|O|:+0#0000e05#ffffff0| |O|b|s|e|r|v|e| |t|h|a|t| |t+0#0000001#ffff4012|o|d|o| +0#0000e05#ffffff0|h|i|g|h|l|i|g|h|t|i|n|g| |w|o|r|k|s| |i|n| |l|i|n|e| |c|o|m@1|e|n|t|s| |t|o@1|.| +0#0000000&@3
+|e+0#af5f00255&|n|d|.| +0#0000000&@70
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_01_99.dump b/runtime/syntax/testdir/dumps/sh_01_99.dump
deleted file mode 100644
index 687677e..0000000
--- a/runtime/syntax/testdir/dumps/sh_01_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0|!| |/|b|i|n|/|d|a|s|h| +0#0000000&@62
-|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|'+0#af5f00255&|A+0#e000002&|=|B|'+0#af5f00255&|`+0#e000e06&| +0#0000000&@55
-|p+0#af5f00255&|r|i|n|t|e|n|v| +0#0000000&|A| @64
->e+0#af5f00255&|c|h|o| +0#e000002&|a| |`+0#e000e06&|#+0#0000e05&|f|o@1|`+0#e000e06&| +0#0000000&|b| @59
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|:+0#0000000&|r|e|d|r|a|w| @49|4|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/sh_02_01.dump b/runtime/syntax/testdir/dumps/sh_02_01.dump
index 20930c8..2c09615 100644
--- a/runtime/syntax/testdir/dumps/sh_02_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_02_01.dump
@@ -1,9 +1,10 @@
-|e+0#af5f00255#ffffff0|s|a|c| +0#0000000&@70
+|#+0#0000e05#ffffff0| |c|o|m@1|e|n|t| +0#0000000&@65
+|e+0#af5f00255&|s|a|c| +0#0000000&@70
 @75
 |#+0#0000e05&| |J|u|l| |2|6|,| |2|0|1|8|:| |w|h|y| |i|s|n|'|t| |`|.@1|`| |b|e|i|n|g| |t|e|r|m|i|n|a|t|e|d| |p|r|o|p|e|r|l|y|?| +0#0000000&@17
 |#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|a@2|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&@60
->#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
+>c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|a@2|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&@60
+|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
 @8|b@2|)+0#af5f00255&| +0#0000000&@1|c+0#00e0e07&@2|=+0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|d@2||+0#af5f00255&|c+0#e000e06&|u|t| |-|b|4|-|`| +0#0000000&@36
 @8|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|t+0#e000002&|e|s|t|"+0#af5f00255&| +0#0000000&@55
 |#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@@ -16,5 +17,4 @@
 |e+0#af5f00255&|x|p|o|r|t| +0#0000000&|$+0#e000e06&|V|A|R| +0#0000000&|a|b|c| @59
 |s+0#af5f00255&|e|t| +0#00e0e07&@3|$+0#e000e06&|V|A|R| +0#00e0e07&|a|b|c| +0#0000000&@59
 |~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
+| +0#0000000&@56|1|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_02_99.dump b/runtime/syntax/testdir/dumps/sh_02_99.dump
deleted file mode 100644
index a9902dd..0000000
--- a/runtime/syntax/testdir/dumps/sh_02_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|a|||b|||c|)+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|a|b|c| |;+0#af5f00255&@1| +0#0000000&@48
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-|e+0#af5f00255&|s|a|c| +0#0000000&@70
-@75
-|#+0#0000e05&| |J|u|l| |2|6|,| |2|0|1|8|:| |w|h|y| |i|s|n|'|t| |`|.@1|`| |b|e|i|n|g| |t|e|r|m|i|n|a|t|e|d| |p|r|o|p|e|r|l|y|?| +0#0000000&@17
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|a@2|"+0#af5f00255&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&@60
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@8|b@2|)+0#af5f00255&| +0#0000000&@1|c+0#00e0e07&@2|=+0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|d@2||+0#af5f00255&|c+0#e000e06&|u|t| |-|b|4|-|`| +0#0000000&@36
-@8|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|t+0#e000002&|e|s|t|"+0#af5f00255&| +0#0000000&@55
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@8|;+0#af5f00255&@1| +0#0000000&@64
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@8|e+0#af5f00255&|s|a|c| +0#0000000&@62
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-|e+0#af5f00255&|c|h|o| +0#e000002&@2|$+0#e000e06&|V|A|R| +0#e000002&|a|b|c| +0#0000000&@59
-|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|$+0#e000e06&|V|A|R| +0#0000000&|a|b|c| @59
->s+0#af5f00255&|e|t| +0#00e0e07&@3|$+0#e000e06&|V|A|R| +0#00e0e07&|a|b|c| +0#0000000&@59
-@57|3|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_03_01.dump b/runtime/syntax/testdir/dumps/sh_03_01.dump
index 1dc4664..3ac5b4b 100644
--- a/runtime/syntax/testdir/dumps/sh_03_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_03_01.dump
@@ -1,9 +1,10 @@
-|#+0#0000e05#ffffff0| |T|h|i|s| |g|e|t|s| |m|a|r|k|e|d| |a|s| |a|n| |e|r@1|o|r| +0#0000000&@44
+| +0&#ffffff0@74
+|#+0#0000e05&| |T|h|i|s| |g|e|t|s| |m|a|r|k|e|d| |a|s| |a|n| |e|r@1|o|r| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|+|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@7|#+0#0000e05&| |:|+| |s|e@1|m|s| |t|o| |w|o|r|k| |f|o|r| |k|s|h| 
 |a|s| |w|e|l@1| |a|s| |b|a|s|h| +0#0000000&@59
 |V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@7|#+0#0000e05&| |:|-| |i|s| |k|s|h| |a|n|d| |b|a|s|h| +0#0000000&@6
-@75
->#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
+> @74
+|#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
 |V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|+|$|{|V|a|r|i|a|b|l|e|C|:|=|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
 |V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
 |V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|+|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@5|#+0#0000e05&| |:|+| |s|e@1|m|s| |t|o| |w|o|r|k| |f|o|r| |k|s|h| 
@@ -16,5 +17,4 @@
 |:+0#0000e05&| +0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@39
 @75
 |#+0#0000e05&| |A|n|o|t|h|e|r| |t|e|s|t| +0#0000000&@60
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3| +0#0000000&@6
-@57|1|9|,|1| @9|8|7|%| 
+@57|1|8|,|0|-|1| @7|8|1|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_03_02.dump b/runtime/syntax/testdir/dumps/sh_03_02.dump
new file mode 100644
index 0000000..6d03697
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_03_02.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |A|n|o|t|h|e|r| |t|e|s|t| +0#0000000&@60
+|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3| +0#0000000&@6
+@7|:+0#0000e05&| +0#0000000&@7|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3
+> +0#0000000&@74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3@1|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_03_99.dump b/runtime/syntax/testdir/dumps/sh_03_99.dump
deleted file mode 100644
index 3d796c6..0000000
--- a/runtime/syntax/testdir/dumps/sh_03_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@7|#+0#0000e05&| |:|-| |i|s| |k|s|h| |a|n|d| |b|a|s|h| +0#0000000&@6
-@75
-|#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|+|$|{|V|a|r|i|a|b|l|e|C|:|=|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@32
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|+|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@5|#+0#0000e05&| |:|+| |s|e@1|m|s| |t|o| |w|o|r|k| |f|o|r| |k|s|h| 
-|a|s| |w|e|l@1| |a|s| |b|a|s|h| +0#0000000&@59
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@1|#+0#0000e05&| |:|-| |i|s| |k|s|h| |a|n|d| |b|a|s|h| +0#0000000&@10
-@75
-|#+0#0000e05&| |T|h|e|s|e| |a|r|e| |O|K| +0#0000000&@60
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@41
-|:+0#0000e05&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@39
-|:+0#0000e05&| +0#0000000&|'+0#af5f00255&|$+0#e000002&|{|V|a|r|i|a|b|l|e|B|:|-|$|{|V|a|r|i|a|b|l|e|C|:|-|e|n|g|}@1|'+0#af5f00255&| +0#0000000&@39
-@75
-|#+0#0000e05&| |A|n|o|t|h|e|r| |t|e|s|t| +0#0000000&@60
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3| +0#0000000&@6
-@7|:+0#0000e05&| +0#0000000&@7|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|D|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|E|:+0#af5f00255&|=|e+0#0000000&|n|g|}+0#e000e06&@3
-> +0#0000000&@74
-|~+0#4040ff13&| @73
-| +0#0000000&@56|3@1|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_04_99.dump b/runtime/syntax/testdir/dumps/sh_04_99.dump
deleted file mode 100644
index 54ea81a..0000000
--- a/runtime/syntax/testdir/dumps/sh_04_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|5|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|}+0#0000000&|}+0#e000e06&@1| +0#0000000&@8
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|5|:+0#af5f00255&|-|$+0#e000e06&|V|a|r|6|}@1|}+0#0000000&|}+0#e000e06&@1| +0#0000000&@6
-@75
-|#+0#0000e05&| |T|h|e|s|e| |a|r|e| |O|K| +0#0000000&@60
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|{+0#0000000&|V|a|r|3|:|=|e|n|g|}|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@24
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&|}+0#0000000&|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@15
-@75
-|#+0#0000e05&| |T|h|i|s| |g|e|t|s| |m|a|r|k|e|d| |a|s| |a|n| |e|r@1|o|r| |t|o@1| +0#0000000&@40
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|{+0#0000000&|V|a|r|3|:|=|e|n|g|}|}+0#e000e06&@1| +0#0000000&@33
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&|}+0#0000000&|}+0#e000e06&@1| +0#0000000&@24
-@75
-|#+0#0000e05&| |T|h|i|s| |i|s| |O|K| +0#0000000&@62
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1| +0#0000000&@41
-|:+0#0000e05&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&@1|"+0#af5f00255&| +0#0000000&@39
-@75
-|#+0#0000e05&| |F|i|r|s|t| |l|i|n|e| |i|s| |O|K| |e|x|c|e|p|t| |i|t|s| |m|i|s@1|i|n|g| |a| |c|l|o|s|i|n|g| |"|}|"|,| +0#0000000&@22
-|#+0#0000e05&| |s|o| |s|e|c|o|n|d| |l|i|n|e| |s|h|o|u|l|d| |h|a|v|e| |s|o|m|e| |e|r@1|o|r| |h|i|g|h|l|i|g|h|t|i|n|g| +0#0000000&@22
-|V+0#00e0e07&|a|r|i|a|b|l|e|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|=|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|=|{+0#0000000&|V|a|r|3|:|=|$+0#e000e06&|{|V|a|r|4|:+0#af5f00255&|-|e+0#0000000&|n|g|}+0#e000e06&|}+0#0000000&|}+0#e000e06&| +0#0000000&@18
->V+0#ffffff16#ff404010|a|r|i|a|b|l|e|=|$+0#e000e06#ffffff0|{|V|a|r|i|a|b|l|e|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|i|a|b|l|e|C|:+0#af5f00255&|-|{+0#0000000&|V|a|r|3|:|=|e|n|g|}|}+0#e000e06&| +0#0000000&@27
-@57|2|7|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_02.dump b/runtime/syntax/testdir/dumps/sh_05_02.dump
index d4e7f9a..afcdd6f 100644
--- a/runtime/syntax/testdir/dumps/sh_05_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_02.dump
@@ -1,4 +1,5 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|`+0#e000e06&|i|d| |-|n|g| ||+0#af5f00255&| +0#e000e06&|w|c| |-|c|`| +0#0000000&@48
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|`+0#e000e06&|i|d| |-|n|g|`| +0#0000000&@56
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|`+0#e000e06&|i|d| |-|n|g| ||+0#af5f00255&| +0#e000e06&|w|c| |-|c|`| +0#0000000&@48
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
 |#+0#0000e05&@74
@@ -16,5 +17,4 @@
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
-@57|3|7|,|1| @10|9|%| 
+@57|3|7|,|1| @10|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_03.dump b/runtime/syntax/testdir/dumps/sh_05_03.dump
index 2e369d8..a9cdad6 100644
--- a/runtime/syntax/testdir/dumps/sh_05_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_03.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
-|#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
->[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@44
@@ -16,5 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|e+0#0000000&|n|g|3|}+0#e000e06&| +0#0000000&@47
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|++0#af5f00255&|e+0#0000000&|n|g|3|}+0#e000e06&| +0#0000000&@47
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|=+0#af5f00255&|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
-@57|5@1|,|1| @9|1|3|%| 
+@57|5|4|,|1| @9|1|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_04.dump b/runtime/syntax/testdir/dumps/sh_05_04.dump
index 27c821a..adfd7f9 100644
--- a/runtime/syntax/testdir/dumps/sh_05_04.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_04.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|=+0#af5f00255&|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|++0#af5f00255&|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|=+0#af5f00255&|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+>V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|?+0#af5f00255&|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|++0#af5f00255&|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@45
 @75
 |#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
@@ -16,5 +17,4 @@
 @75
 |#+0#0000e05&| |C|a|s|e| |2|b| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@32
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
-@57|7|3|,|1| @9|1|8|%| 
+@57|7|2|,|1| @9|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_05.dump b/runtime/syntax/testdir/dumps/sh_05_05.dump
index 1eb0229..be0ac6e 100644
--- a/runtime/syntax/testdir/dumps/sh_05_05.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_05.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-> @74
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
 |#+0#0000e05&| |C|a|s|e| |2|c| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@32
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@43
@@ -16,5 +17,4 @@
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
-@57|9|1|,|0|-|1| @7|2|4|%| 
+@57|9|0|,|1| @9|2|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_06.dump b/runtime/syntax/testdir/dumps/sh_05_06.dump
index 46c4de0..9b912d2 100644
--- a/runtime/syntax/testdir/dumps/sh_05_06.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_06.dump
@@ -1,9 +1,10 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
-|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
->[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&| +0#0000000&@42
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&| +0#0000000&@42
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&| +0#0000000&@42
@@ -16,5 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@57|1|0|9|,|1| @8|2|9|%| 
+@57|1|0|8|,|1| @8|2|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_07.dump b/runtime/syntax/testdir/dumps/sh_05_07.dump
index e1dc4ed..68a289b 100644
--- a/runtime/syntax/testdir/dumps/sh_05_07.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_07.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&| +0#0000000&@34
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
 |#+0#0000e05&@74
 @5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
+>#+0#0000e05&| +0#0000000&@73
 |#+0#0000e05&| |T|h|e| |s|a|m|e| |w|i|t|h| |o|n|e| |n|e|s|t|e|t| |$|{|}| |l|e|v|e|l| +0#0000000&@38
->#+0#0000e05&| |C|a|s|e| |1|a| |w|i|t|h| |c|o|n|s|t|a|n|t|s| +0#0000000&@50
+|#+0#0000e05&| |C|a|s|e| |1|a| |w|i|t|h| |c|o|n|s|t|a|n|t|s| +0#0000000&@50
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|e+0#0000000&|n|g|1|}+0#e000e06&@1| +0#0000000&@37
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|e+0#0000000&|n|g|2|}+0#e000e06&@1| +0#0000000&@37
@@ -15,6 +17,4 @@
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
-@57|1|2|7|,|1| @8|3|4|%| 
+@57|1|2|5|,|1| @8|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_08.dump b/runtime/syntax/testdir/dumps/sh_05_08.dump
index dc77a9f..8ca73f9 100644
--- a/runtime/syntax/testdir/dumps/sh_05_08.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_08.dump
@@ -1,9 +1,11 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
-|#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
+>#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@35
@@ -15,6 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-@57|1|4|5|,|1| @8|3|9|%| 
+@57|1|4|3|,|1| @8|3|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_09.dump b/runtime/syntax/testdir/dumps/sh_05_09.dump
index 944d7e3..d65302d 100644
--- a/runtime/syntax/testdir/dumps/sh_05_09.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_09.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@1| +0#0000000&@36
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
 |#+0#0000e05&| |C|a|s|e| |2|b| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@32
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
+>V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
@@ -15,6 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@1| +0#0000000&@34
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
-|#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-@57|1|6|3|,|1| @8|4@1|%| 
+@57|1|6|1|,|1| @8|4|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_10.dump b/runtime/syntax/testdir/dumps/sh_05_10.dump
index 43639c8..46b5680 100644
--- a/runtime/syntax/testdir/dumps/sh_05_10.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_10.dump
@@ -1,9 +1,11 @@
-|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
+>V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@1| +0#0000000&@35
->e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
 |#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
@@ -15,6 +17,4 @@
 @75
 |#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
-@57|1|8|1|,|1| @8|4|9|%| 
+@57|1|7|9|,|1| @8|4|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_11.dump b/runtime/syntax/testdir/dumps/sh_05_11.dump
index 2ba00e3..ef496d1 100644
--- a/runtime/syntax/testdir/dumps/sh_05_11.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_11.dump
@@ -1,9 +1,11 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@1| +0#0000000&@25
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
->#+0#0000e05&@74
+|#+0#0000e05&@74
 @5| +0#0000000&@69
 |#+0#0000e05&| +0#0000000&@73
 |#+0#0000e05&| |T|h|e| |s|a|m|e| |w|i|t|h| |t|w|o| |n|e|s|t|e|t| |$|{|}| |l|e|v|e|l| +0#0000000&@38
@@ -15,6 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|e+0#0000000&|n|g|3|}+0#e000e06&@2| +0#0000000&@28
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
-|#+0#0000e05&| |C|a|s|e| |1|b| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@33
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-@57|1|9@1|,|1| @8|5|4|%| 
+@57|1|9|7|,|1| @8|5|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_12.dump b/runtime/syntax/testdir/dumps/sh_05_12.dump
index 2300b7d..48b312d 100644
--- a/runtime/syntax/testdir/dumps/sh_05_12.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_12.dump
@@ -1,9 +1,12 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |1|b| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@33
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
+>V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-> @74
+@75
 |#+0#0000e05&| |C|a|s|e| |1|c| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@33
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@26
@@ -14,7 +17,4 @@
 @75
 |#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-@57|2|1|7|,|0|-|1| @6|5|9|%| 
+@57|2|1|4|,|1| @8|5|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_13.dump b/runtime/syntax/testdir/dumps/sh_05_13.dump
index 71e0e78..da79761 100644
--- a/runtime/syntax/testdir/dumps/sh_05_13.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_13.dump
@@ -1,9 +1,12 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@2| +0#0000000&@27
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
 |#+0#0000e05&| |C|a|s|e| |2|b| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@32
->[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
@@ -14,7 +17,4 @@
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
-@57|2|3|5|,|1| @8|6|4|%| 
+@57|2|3|2|,|1| @8|6|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_14.dump b/runtime/syntax/testdir/dumps/sh_05_14.dump
index d16e2e0..82da979 100644
--- a/runtime/syntax/testdir/dumps/sh_05_14.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_14.dump
@@ -1,9 +1,12 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@2| +0#0000000&@25
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
+> @74
 |#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@2| +0#0000000&@26
@@ -14,7 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-@57|2|5|3|,|1| @8|6|9|%| 
+@57|2|5|0|,|0|-|1| @6|6|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_15.dump b/runtime/syntax/testdir/dumps/sh_05_15.dump
index c9abc7c..6c4e887 100644
--- a/runtime/syntax/testdir/dumps/sh_05_15.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_15.dump
@@ -1,9 +1,12 @@
-| +0&#ffffff0@74
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@2| +0#0000000&@24
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
 |#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@2| +0#0000000&@16
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
@@ -14,7 +17,4 @@
 |#+0#0000e05&| |T|h|e| |s|a|m|e| |w|i|t|h| |t|h|r|e@1| |n|e|s|t|e|t| |$|{|}| |l|e|v|e|l| +0#0000000&@36
 |#+0#0000e05&| |C|a|s|e| |1|a| |w|i|t|h| |c|o|n|s|t|a|n|t|s| +0#0000000&@50
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|e+0#0000000&|n|g|1|}+0#e000e06&@3| +0#0000000&@19
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|e+0#0000000&|n|g|2|}+0#e000e06&@3| +0#0000000&@19
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
-@57|2|7|1|,|1| @8|7|4|%| 
+@57|2|6|8|,|1| @8|7|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_16.dump b/runtime/syntax/testdir/dumps/sh_05_16.dump
index 198e0b7..784dade 100644
--- a/runtime/syntax/testdir/dumps/sh_05_16.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_16.dump
@@ -1,9 +1,13 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|e+0#0000000&|n|g|1|}+0#e000e06&@3| +0#0000000&@19
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|e+0#0000000&|n|g|2|}+0#e000e06&@3| +0#0000000&@19
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|e+0#0000000&|n|g|3|}+0#e000e06&@3| +0#0000000&@19
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
 |#+0#0000e05&| |C|a|s|e| |1|b| |w|i|t|h| |c|o|n|s|t|a|n|t|s| |i|n| |s|i|n|g|l|e| |q|u|o|t|e|s| +0#0000000&@33
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|'|e+0#e000002&|n|g|1|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|'|e+0#e000002&|n|g|2|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|'|e+0#e000002&|n|g|3|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
@@ -13,8 +17,4 @@
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|"|e+0#e000002&|n|g|1|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-@57|2|8|9|,|1| @8|7|9|%| 
+@57|2|8|5|,|1| @8|7|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_17.dump b/runtime/syntax/testdir/dumps/sh_05_17.dump
index b282e4d..e64f01a 100644
--- a/runtime/syntax/testdir/dumps/sh_05_17.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_17.dump
@@ -1,9 +1,13 @@
-| +0&#ffffff0@74
-|#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|"|e+0#e000002&|n|g|2|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|"|e+0#e000002&|n|g|3|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@17
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
+>#+0#0000e05&| |C|a|s|e| |2|a| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| +0#0000000&@49
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
->V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
+|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|$+0#e000e06&|H|O|M|E|}@3| +0#0000000&@18
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
@@ -13,8 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
-@75
-|#+0#0000e05&| |C|a|s|e| |2|c| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@32
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-@57|3|0|7|,|1| @8|8|5|%| 
+@57|3|0|3|,|1| @8|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_18.dump b/runtime/syntax/testdir/dumps/sh_05_18.dump
index ef1e618..bd8516b 100644
--- a/runtime/syntax/testdir/dumps/sh_05_18.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_18.dump
@@ -1,9 +1,13 @@
-|[+0#af5f00255#ffffff0| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|'|$+0#e000002&|H|O|M|E|'+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+@75
+|#+0#0000e05&| |C|a|s|e| |2|c| |w|i|t|h| |a| |v|a|r|i|a|b|l|e| |i|n| |d|o|u|b|l|e| |q|u|o|t|e|s| +0#0000000&@32
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+>V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|"|$+0#e000e06&|H|O|M|E|"+0#af5f00255&|}+0#e000e06&@3| +0#0000000&@16
->e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
 |#+0#0000e05&| |C|a|s|e| |3|a| |w|i|t|h| |a| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@37
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
@@ -13,8 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|`+0#0000000&|d|a|t|e|`|}+0#e000e06&@3| +0#0000000&@17
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
-|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
-|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
-|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
-@57|3|2|5|,|1| @8|9|0|%| 
+@57|3|2|1|,|1| @8|8@1|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_19.dump b/runtime/syntax/testdir/dumps/sh_05_19.dump
index 05b9e3d..f2ceecc 100644
--- a/runtime/syntax/testdir/dumps/sh_05_19.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_19.dump
@@ -1,9 +1,13 @@
-|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
-|V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |3|b| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |o|p|t|i|o|n| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@28
+|[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
+|V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
+>V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|?|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|+|`+0#0000000&|i|d| |-|n|g|`|}+0#e000e06&@3| +0#0000000&@15
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
->#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
+|#+0#0000e05&| |C|a|s|e| |3|c| |w|i|t|h| |a| |c|o|m@1|a|n|d| |+| |p|i|p|e| |s|u|b|s|t|i|t|u|t|i|o|n| +0#0000000&@30
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|d+0#e000002&|a|t|e|"+0#af5f00255&| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|=|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@7
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|B|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|C|:+0#af5f00255&|-|$+0#e000e06&|{|V|a|r|D|:+0#af5f00255&|-|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@7
@@ -12,9 +16,5 @@
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@31
 @75
 @75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |T|h|i|s| |i|s| |a|l|s|o| |a|l@1|o|w|e|d|:| +0#0000000&@51
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|B|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|C|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|D|=+0#af5f00255&|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@11
-@57|3|4|3|,|1| @8|9|4|%| 
+|#+0#0000e05&@71|@+0#4040ff13&@2
+| +0#0000000&@56|3@1|9|,|1| @8|9|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_20.dump b/runtime/syntax/testdir/dumps/sh_05_20.dump
index 5316887..1c6647a 100644
--- a/runtime/syntax/testdir/dumps/sh_05_20.dump
+++ b/runtime/syntax/testdir/dumps/sh_05_20.dump
@@ -1,9 +1,15 @@
 |#+0#0000e05#ffffff0@74
 @5| +0#0000000&@69
 |#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| |T|h|i|s| |i|s| |a|l|s|o| |a|l@1|o|w|e|d|:| +0#0000000&@51
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|B|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|C|-+0#af5f00255&|$+0#e000e06&|{|V|a|r|D|=+0#af5f00255&|`+0#0000000&|i|d| |-|n|g| ||| |w|c| |-|c|`|}+0#e000e06&@3| +0#0000000&@11
+> @74
+|#+0#0000e05&@74
+@5| +0#0000000&@69
+|#+0#0000e05&| +0#0000000&@73
 |#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |f|o|r| |t|h|e| |s|h|:| +0#0000000&@25
 |V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|}+0#e000e06&| +0#0000000&@50
->V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|O+0#0000000&|K|}+0#e000e06&| +0#0000000&@48
+|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|O+0#0000000&|K|}+0#e000e06&| +0#0000000&@48
 |V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
 |V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|'|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
 |V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|"|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
@@ -11,10 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|:+0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@38
 @75
 |#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |a|l|s|o| |f|o|r| |k|s|h|:| +0#0000000&@23
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|}+0#e000e06&| +0#0000000&@40
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|,| |t|o@1|:| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@27
-@75
-|#+0#0000e05&| |W|h|a|t| |h|a|p@1|e|n|s| |w|i|t|h| |$|{|#|i|d|e|n|t|i|f|i|e|r|[|*|]|}|:| +0#0000000&@36
-|V+0#00e0e07&|a|r|i|a|b|l|e|5|=+0#0000000&|$+0#e000e06&|{|#|i|d|e|n|t|i|f|i|e|r|[|*+0#0000000&|]+0#e000e06&|}| +0#0000000&@47
-|~+0#4040ff13&| @73
-| +0#0000000&@56|3|6|1|,|1| @8|B|o|t| 
+@57|3|5|6|,|0|-|1| @6|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_21.dump b/runtime/syntax/testdir/dumps/sh_05_21.dump
new file mode 100644
index 0000000..25a9ab8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_05_21.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |a|l|s|o| |f|o|r| |k|s|h|:| +0#0000000&@23
+|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|}+0#e000e06&| +0#0000000&@40
+|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|,| |t|o@1|:| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@27
+@75
+|#+0#0000e05&| |W|h|a|t| |h|a|p@1|e|n|s| |w|i|t|h| |$|{|#|i|d|e|n|t|i|f|i|e|r|[|*|]|}|:| +0#0000000&@36
+>V+0#00e0e07&|a|r|i|a|b|l|e|5|=+0#0000000&|$+0#e000e06&|{|#|i|d|e|n|t|i|f|i|e|r|[|*+0#0000000&|]+0#e000e06&|}| +0#0000000&@47
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_05_99.dump b/runtime/syntax/testdir/dumps/sh_05_99.dump
deleted file mode 100644
index c3d20b5..0000000
--- a/runtime/syntax/testdir/dumps/sh_05_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |f|o|r| |t|h|e| |s|h|:| +0#0000000&@25
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|}+0#e000e06&| +0#0000000&@50
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|O+0#0000000&|K|}+0#e000e06&| +0#0000000&@48
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|`+0#0000000&|d|a|t|e|`|}+0#e000e06&| +0#0000000&@44
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|'|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|'+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|"|a+0#e000002&|n| |O|K| |s|t|r|i|n|g|"+0#af5f00255&|}+0#e000e06&| +0#0000000&@36
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|$|S|H|E|L@1|}| +0#0000000&@39
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|$+0#e000e06&|H|O|M|E|:+0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@38
-@75
-|#+0#0000e05&| |A|l@1| |c|a|s|e|s| |w|i|t|h| |$|{|V|a|r|:|?|}| |w|h|i|c|h| |w|o|r|k|s| |a|l|s|o| |f|o|r| |k|s|h|:| +0#0000000&@23
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|}+0#e000e06&| +0#0000000&@40
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |O|K|,| |t|o@1|:| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@27
-@75
-|#+0#0000e05&| |W|h|a|t| |h|a|p@1|e|n|s| |w|i|t|h| |$|{|#|i|d|e|n|t|i|f|i|e|r|[|*|]|}|:| +0#0000000&@36
->V+0#00e0e07&|a|r|i|a|b|l|e|5|=+0#0000000&|$+0#e000e06&|{|#|i|d|e|n|t|i|f|i|e|r|[|*+0#0000000&|]+0#e000e06&|}| +0#0000000&@47
-@57|3|7|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_06_01.dump b/runtime/syntax/testdir/dumps/sh_06_01.dump
index e71380e..5eea543 100644
--- a/runtime/syntax/testdir/dumps/sh_06_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_06_01.dump
@@ -1,9 +1,11 @@
-|#+0#0000e05#ffffff0| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
+|U+0#00e0e07#ffffff0|s|a|g|e| |(|)| |{| +0#0000000&@64
+@75
+|#+0#0000e05&| |d|o|e|s| |t|h|i|s| |c|o|m@1|e|n|t| |w|o|r|k|?| +0#0000000&@49
 |V+0#00e0e07&|a|r|i|a|b|l|e|N|a|m|e|=+0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|B|a|s|i|c|C|o|n|f|i|g|N|a|m|e|}|_+0#e000002&|*|"+0#af5f00255&| +0#0000000&@39
 @75
-|#+0#0000e05&| |E|c|h|o| |s|o|m|e| |k|s|h| |s|p|e|c|i|a|l| |v|a|r|i|a|b|l|e|s| +0#0000000&@41
+>#+0#0000e05&| |E|c|h|o| |s|o|m|e| |k|s|h| |s|p|e|c|i|a|l| |v|a|r|i|a|b|l|e|s| +0#0000000&@41
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|C+0#e000002&|D|P|A|T|H|=|"+0#af5f00255&|$+0#e000e06&|{|C|D|P|A|T|H|}| +0#0000000&@51
-> @74
+@75
 |#+0#0000e05&| |G|e|t| |a|l|s|o| |a| |s|h|o|r|t| |d|e|s|c|r|i|p|t|i|o|n| |o|f| |t|h|e| |b|a|c|k|u|p|t|y|p|e|/|m|e|t|h|o|d| +0#0000000&@19
 |e+0#af5f00255&|v|a|l| +0#0000000&|B+0#00e0e07&|a|c|k|u|p|M|e|t|h|o|d|=+0#0000000&|\+0#e000e06&|$|m+0#0000000&|e|s@1|0|9|$+0#e000e06&|{|B|a|c|k|u|p|T|y|p|e|}|B+0#0000000&| @34
 @75
@@ -15,6 +17,4 @@
 |#+0#0000e05&| |I|f| |w|e| |h|a|v|e| |m|o|r|e| |t|h|e| |5|3| |c|h|a|r|a|c|t|e|r|s| |i|n| |t|h|e| |v|a|r|i|a|b|l|e|s| |b|e|l|o|w| |s|p|l|i|t| |t|h|e|m| |u|p| +0#0000000&@2
 |#+0#0000e05&| |i|n|t|o| |s|e|v|e|r|a|l| |l|i|n|e|s| |a|n|d| |a|d@1| |3| |t|a|b|s| |b|e|f|o|r|e| |t|h|e|m| +0#0000000&@27
 |f+0#af5f00255&|o|r| +0#0000000&|V|a|r|i|a|b|l|e| |i+0#af5f00255&|n| +0#0000000&|D|e|f|a|u|l|t|E|x|c|l|u|d|e| |D|e|f|a|u|l|t|F|i|n|d|O|p|t|i|o|n| |D|o|N|o|t|B|a|c|k|u|p|L|i|s|t| @10
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|e+0#af5f00255&|v|a|l| +0#0000000&|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|\+0#e000e06&|$@1|V|a|r|i|a|b|l|e| +0#0000000&@45
-@57|1|9|,|0|-|1| @7|2|5|%| 
+@57|1|7|,|1| @9|2|1|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_06_02.dump b/runtime/syntax/testdir/dumps/sh_06_02.dump
index 029ba13..0177aff 100644
--- a/runtime/syntax/testdir/dumps/sh_06_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_06_02.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@3|e+0#af5f00255&|v|a|l| +0#0000000&|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|\+0#e000e06&|$@1|V|a|r|i|a|b|l|e| +0#0000000&@45
+|f+0#af5f00255#ffffff0|o|r| +0#0000000&|V|a|r|i|a|b|l|e| |i+0#af5f00255&|n| +0#0000000&|D|e|f|a|u|l|t|E|x|c|l|u|d|e| |D|e|f|a|u|l|t|F|i|n|d|O|p|t|i|o|n| |D|o|N|o|t|B|a|c|k|u|p|L|i|s|t| @10
+|d+0#af5f00255&|o| +0#0000000&@72
+@4|e+0#af5f00255&|v|a|l| +0#0000000&|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|\+0#e000e06&|$@1|V|a|r|i|a|b|l|e| +0#0000000&@45
 @4|V+0#00e0e07&|a|r|V|a|l|u|e|=+0#0000000&|`+0#e000e06&|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|V|a|r|V|a|l|u|e| +0#e000002&||+0#af5f00255&| +0#e000e06&|F|o|l|d|S| |5+0#e000002&|3| +0#e000e06&||+0#af5f00255&| +0#e000e06&|s+0#af5f00255&|e|d| +0#e000e06&|"+0#af5f00255&|2+0#e000002&|,|\+0#e000e06&@1|$|s|/+0#e000002&|^|/|$+0#e000e06&|T|a|b|$|T|a|b|$|T|a|b|/+0#e000002&|"+0#af5f00255&|`+0#e000e06&| +0#0000000&@3
 @4|e+0#af5f00255&|v|a|l| +0#0000000&|$+0#e000e06&|V|a|r|i|a|b|l|e|=+0#af5f00255&|\+0#e000e06&|$|V+0#0000000&|a|r|V|a|l|u|e| @45
-|d+0#af5f00255&|o|n|e| +0#0000000&@70
+>d+0#af5f00255&|o|n|e| +0#0000000&@70
 @75
->e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&| +0#0000000&@68
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&| +0#0000000&@68
 |U+0#e000002&|s|a|g|e|:| @1|$+0#e000e06&|S|c|r|i|p|t|N|a|m|e| +0#e000002&|[|-|O|p|t|i|o|n|s|]| +0#0000000&@44
 @75
 |O+0#e000002&|p|t|i|o|n|s| |L|i|s|t|:| +0#0000000&@61
@@ -15,6 +17,4 @@
 |}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |U|s|a|g|e| +0#0000000&@58
 @75
 @75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-@57|3|7|,|1| @9|5|8|%| 
+@57|3|5|,|1| @9|5@1|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_06_03.dump b/runtime/syntax/testdir/dumps/sh_06_03.dump
index 2f22cde..b4b3a5c 100644
--- a/runtime/syntax/testdir/dumps/sh_06_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_06_03.dump
@@ -1,9 +1,12 @@
-|#+0#0000e05#ffffff0| +0#0000000&@73
-|#+0#0000e05&| |C|r|e|a|t|e| |a| |b|a|c|k|u|p| |u|s|i|n|g| |f|b|a|c|k|u|p|/|f|r|e|c|o|v|e|r| +0#0000000&@34
+| +0&#ffffff0@74
+|#+0#0000e05&@74
+@5| +0#0000000&@69
 |#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| |C|r|e|a|t|e| |a| |b|a|c|k|u|p| |u|s|i|n|g| |f|b|a|c|k|u|p|/|f|r|e|c|o|v|e|r| +0#0000000&@34
+>#+0#0000e05&| +0#0000000&@73
 |E+0#00e0e07&|x|e|c|u|t|e|F|b|a|c|k|u|p| |(|)| |{| +0#0000000&|#+0#0000e05&| |T|E|S|T|I|N|G| +0#0000000&@45
 @75
->[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|D|e|b|u|g|S|c|r|i|p|t|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&@3|&+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|-+0#e000e06&|x| +0#00e0e07&||+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|++0#e000e06&|x| +0#0000000&@33
+|[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|D|e|b|u|g|S|c|r|i|p|t|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&@3|&+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|-+0#e000e06&|x| +0#00e0e07&||+0#af5f00255&@1| +0#0000000&|s+0#af5f00255&|e|t| +0#00e0e07&|++0#e000e06&|x| +0#0000000&@33
 @75
 |c+0#af5f00255&|d| +0#0000000&|$+0#e000e06&|c|w|d| +0#0000000&@67
 @75
@@ -14,7 +17,4 @@
 @5| +0#0000000&@69
 |#+0#0000e05&| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
 |a|i|n| |#| +0#0000000&@69
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-@57|5@1|,|1| @9|8|9|%| 
+@57|5|2|,|1| @9|8|5|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_06_04.dump b/runtime/syntax/testdir/dumps/sh_06_04.dump
new file mode 100644
index 0000000..ceb72b7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_06_04.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
+|a|i|n| |#| +0#0000000&@69
+|#+0#0000e05&@74
+@5| +0#0000000&@69
+|#+0#0000e05&| +0#0000000&@73
+>#+0#0000e05&| |H|e|r|e| |i|s| |t|h|e| |h|e|a|r|t| |o|f| |t|h|i|s| |s|c|r|i|p|t|:| +0#0000000&@39
+|#+0#0000e05&| +0#0000000&@73
+|U|s|a|g|e| @69
+@75
+|#+0#0000e05&| |A|n|d| |e|x|i|t| +0#0000000&@64
+|E|x|i|t| |$+0#e000e06&|R|e|s|u|l|t| +0#0000000&@62
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_06_99.dump b/runtime/syntax/testdir/dumps/sh_06_99.dump
deleted file mode 100644
index b347aad..0000000
--- a/runtime/syntax/testdir/dumps/sh_06_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|c+0#af5f00255&|d| +0#0000000&|$+0#e000e06&|c|w|d| +0#0000000&@67
-@75
-|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |E|x|e|c|u|t|e|F|b|a|c|k|u|p| +0#0000000&@49
-@75
-@75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
-|a|i|n| |#| +0#0000000&@69
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |H|e|r|e| |i|s| |t|h|e| |h|e|a|r|t| |o|f| |t|h|i|s| |s|c|r|i|p|t|:| +0#0000000&@39
-|#+0#0000e05&| +0#0000000&@73
-|U|s|a|g|e| @69
-@75
-|#+0#0000e05&| |A|n|d| |e|x|i|t| +0#0000000&@64
->E|x|i|t| |$+0#e000e06&|R|e|s|u|l|t| +0#0000000&@62
-@57|7|1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_07_01.dump b/runtime/syntax/testdir/dumps/sh_07_01.dump
index 07b0693..dfacae8 100644
--- a/runtime/syntax/testdir/dumps/sh_07_01.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_01.dump
@@ -1,9 +1,13 @@
-|F+0#00e0e07#ffffff0|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
+|#+0#0000e05#ffffff0| |T|h|i|s| |'|f|o|r| |V|a|r|,| |d|o|,| |d|o|n|e|'| |i|s| |a| |v|e|r|y| |h|a|n|d|y| |s|o|l|u|t|i|o|n| |A|N|D| |n|o| |r|e|a|l| |r|e|p|l|a|c|e|m|e|n|t
+| | +0#0000000&@73
+|#+0#0000e05&| |a|v|a|i|l|a|b|l|e|!| +0#0000000&@62
+|#+0#0000e05&| +0#0000000&@73
+|F+0#00e0e07&|u|n|c|t|i|o|n|1| |(|)| |{| +0#0000000&@60
 @75
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
+>e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|1|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
 |[+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|*|"+0#af5f00255&| +0#0000000&|]+0#af5f00255&| +0#0000000&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o|n|e|\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@49
 @75
->f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
+|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
 |d+0#af5f00255&|o| +0#0000000&@72
 @4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
 |d+0#af5f00255&|o|n|e| +0#0000000&@70
@@ -13,8 +17,4 @@
 @75
 |#+0#0000e05&@74
 @5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|*| +0#0000000&@46
-|#+0#0000e05&| +0#0000000&@73
-|F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| |{| +0#0000000&@60
-@57|1|9|,|1| @9|1|7|%| 
+@57|1|6|,|1| @9|1|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_07_02.dump b/runtime/syntax/testdir/dumps/sh_07_02.dump
index 8e36dde..48e9fbb 100644
--- a/runtime/syntax/testdir/dumps/sh_07_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_02.dump
@@ -1,9 +1,15 @@
-| +0&#ffffff0@74
+|#+0#0000e05#ffffff0@74
+@5| +0#0000000&@69
+|#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|*| +0#0000000&@46
+|#+0#0000e05&| +0#0000000&@73
+>F+0#00e0e07&|u|n|c|t|i|o|n|2| |(|)| |{| +0#0000000&@60
+@75
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|2|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
 |f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|*| +0#0000000&@61
 |d+0#af5f00255&|o| +0#0000000&@72
 @4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
->d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
+|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
 @75
 |}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|2| +0#0000000&@54
 @75
@@ -11,10 +17,4 @@
 @5| +0#0000000&@69
 |#+0#0000e05&| +0#0000000&@73
 |#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|@|.| |W|o|r|k|s| |t|h|e| |s|a|m|e| |w|a|y| |a|s| |$|*| +0#0000000&@20
-|#+0#0000e05&| +0#0000000&@73
-|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| |{| +0#0000000&@60
-@75
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|3|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|@| +0#0000000&@61
-|d+0#af5f00255&|o| +0#0000000&@72
-@57|3|7|,|1| @9|4|1|%| 
+@57|3|1|,|1| @9|3|4|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_07_03.dump b/runtime/syntax/testdir/dumps/sh_07_03.dump
index 4c8ba62..999952e 100644
--- a/runtime/syntax/testdir/dumps/sh_07_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_03.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
+|#+0#0000e05#ffffff0| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |$|@|.| |W|o|r|k|s| |t|h|e| |s|a|m|e| |w|a|y| |a|s| |$|*| +0#0000000&@20
+|#+0#0000e05&| +0#0000000&@73
+|F+0#00e0e07&|u|n|c|t|i|o|n|3| |(|)| |{| +0#0000000&@60
+@75
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|3|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
+>f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|$+0#e000e06&|@| +0#0000000&@61
+|d+0#af5f00255&|o| +0#0000000&@72
+@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
 |d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
 @75
 |}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|3| +0#0000000&@54
 @75
->#+0#0000e05&@74
+|#+0#0000e05&@74
 @5| +0#0000000&@69
 |#+0#0000e05&| +0#0000000&@73
 |#+0#0000e05&| |F|o|r| |l|o@1|p| |w|i|t|h| |'|i|n| |l|i|s|t|'| |"|$|@|"|.| |S|p|e|c|i|a|l| |c|a|s|e|.| |W|o|r|k|s| |l|i|k|e| |"|$|1|"| |"|$|2|"| |.@2| +0#0000000&@4
 |#+0#0000e05&| +0#0000000&@73
 |F+0#00e0e07&|u|n|c|t|i|o|n|4| |(|)| |{| +0#0000000&@60
 @75
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|4|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|@|"+0#af5f00255&| +0#0000000&@59
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
-|d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
-@75
-|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
-@57|5@1|,|1| @9|6|5|%| 
+@57|4|8|,|1| @9|5|6|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_07_04.dump b/runtime/syntax/testdir/dumps/sh_07_04.dump
index 4aabca2..d9eea10 100644
--- a/runtime/syntax/testdir/dumps/sh_07_04.dump
+++ b/runtime/syntax/testdir/dumps/sh_07_04.dump
@@ -1,20 +1,20 @@
-|#+0#0000e05#ffffff0@74
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|F+0#e000002&|u|n|c|t|i|o|n|4|:| |f|o|r| |l|o@1|p| |i|n|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@25
+|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| |i+0#af5f00255&|n| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|@|"+0#af5f00255&| +0#0000000&@59
+|d+0#af5f00255&|o| +0#0000000&@72
+@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
+>d+0#af5f00255&|o|n|e| +0#0000000&|;+0#af5f00255&| +0#0000000&|e+0#af5f00255&|c|h|o| +0#0000000&@63
+@75
+|}+0#00e0e07&| +0#0000000&|#+0#0000e05&| |E|n|d| |o|f| |F|u|n|c|t|i|o|n|4| +0#0000000&@54
+@75
+@75
+|#+0#0000e05&@74
 @5| +0#0000000&@69
 |#+0#0000e05&| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m|a|i|n| |#@2| |m
 |a|i|n| |#| +0#0000000&@69
 |#+0#0000e05&@74
 @5| +0#0000000&@69
->#+0#0000e05&| +0#0000000&@73
+|#+0#0000e05&| +0#0000000&@73
 |#+0#0000e05&| |H|e|r|e| |i|s| |t|h|e| |h|e|a|r|t| |o|f| |t|h|i|s| |s|c|r|i|p|t|:| +0#0000000&@39
 |#+0#0000e05&| +0#0000000&@73
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|P+0#e000002&|r|o|c|e|s@1|i|n|g| |t|h|e| |f|o|l@1|o|w|i|n|g| |c|o|m@1|a|n|d| |l|i|n|e| |a|r|g|u|m|e|n|t|s|:| |$+0#e000e06&|{|*|:+0#af5f00255&|-|n+0#0000000&|o|n|e|}+0#e000e06&|"+0#af5f00255&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|S+0#e000002&|c|r|i|p|t|:| @3|f|o|r| |l|o@1|p| |o|u|t|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@24
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
-|d+0#af5f00255&|o|n|e| +0#0000000&|;| |e+0#af5f00255&|c|h|o| +0#0000000&@63
-@75
-|#+0#0000e05&| |S|a|m|e| |a|s| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
-|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-|F|u|n|c|t|i|o|n|2| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-@57|7|3|,|1| @9|8|9|%| 
+@57|6|5|,|1| @9|7|6|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_07_05.dump b/runtime/syntax/testdir/dumps/sh_07_05.dump
new file mode 100644
index 0000000..a3aac77
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_07_05.dump
@@ -0,0 +1,20 @@
+|#+0#0000e05#ffffff0| +0#0000000&@73
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|P+0#e000002&|r|o|c|e|s@1|i|n|g| |t|h|e| |f|o|l@1|o|w|i|n|g| |c|o|m@1|a|n|d| |l|i|n|e| |a|r|g|u|m|e|n|t|s|:| |$+0#e000e06&|{|*|:+0#af5f00255&|-|n+0#0000000&|o|n|e|}+0#e000e06&|"+0#af5f00255&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|S+0#e000002&|c|r|i|p|t|:| @3|f|o|r| |l|o@1|p| |o|u|t|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@24
+|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
+|d+0#af5f00255&|o| +0#0000000&@72
+@4>[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
+|d+0#af5f00255&|o|n|e| +0#0000000&|;| |e+0#af5f00255&|c|h|o| +0#0000000&@63
+@75
+|#+0#0000e05&| |S|a|m|e| |a|s| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
+|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
+|F|u|n|c|t|i|o|n|2| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
+|F|u|n|c|t|i|o|n|3| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
+|F|u|n|c|t|i|o|n|4| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&|'+0#af5f00255&|-+0#e000002&|g|e| |1| |-|a| |2| |-|g|e|'+0#af5f00255&| +0#0000000&@24
+@75
+|#+0#0000e05&| |N|o|w| |t|h|e| |s|a|m|e| |c|a|l@1| |l|i|k|e| |F|u|n|c|t|i|o|n|4| |b|u|t| |w|i|t|h| |F|u|n|c|t|i|o|n|1| +0#0000000&@21
+|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&|'+0#af5f00255&|-+0#e000002&|g|e| |1| |-|a| |2| |-|g|e|'+0#af5f00255&| +0#0000000&@24
+|F|u|n|c|t|i|o|n|1| @65
+@75
+|e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
+@57|8|0|,|5| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_07_99.dump b/runtime/syntax/testdir/dumps/sh_07_99.dump
deleted file mode 100644
index 3a4d61d..0000000
--- a/runtime/syntax/testdir/dumps/sh_07_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| +0#0000000&@73
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|P+0#e000002&|r|o|c|e|s@1|i|n|g| |t|h|e| |f|o|l@1|o|w|i|n|g| |c|o|m@1|a|n|d| |l|i|n|e| |a|r|g|u|m|e|n|t|s|:| |$+0#e000e06&|{|*|:+0#af5f00255&|-|n+0#0000000&|o|n|e|}+0#e000e06&|"+0#af5f00255&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|S+0#e000002&|c|r|i|p|t|:| @3|f|o|r| |l|o@1|p| |o|u|t|s|i|d|e| |a| |f|u|n|c|t|i|o|n|:|\+0#e000e06&|t|\|c|"+0#af5f00255&| +0#0000000&@24
-|f+0#af5f00255&|o|r| +0#0000000&|V|a|r| @67
-|d+0#af5f00255&|o| +0#0000000&@72
-@4|[+0#af5f00255&| +0#0000000&|1+0#e000002&| +0#0000000&|$+0#e000e06&|V|a|r| +0#0000000&|2+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|O+0#e000002&|K| |\+0#e000e06&|c|"+0#af5f00255&| +0#e000002&||+0#af5f00255&@1| +0#0000000&|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|n+0#e000002&|o| |\+0#e000e06&|c|"+0#af5f00255&| +0#0000000&@26
-|d+0#af5f00255&|o|n|e| +0#0000000&|;| |e+0#af5f00255&|c|h|o| +0#0000000&@63
-@75
-|#+0#0000e05&| |S|a|m|e| |a|s| |f|u|n|c|t|i|o|n| |c|a|l@1|s| +0#0000000&@50
-|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-|F|u|n|c|t|i|o|n|2| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-|F|u|n|c|t|i|o|n|3| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&@41
-|F|u|n|c|t|i|o|n|4| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&|'+0#af5f00255&|-+0#e000002&|g|e| |1| |-|a| |2| |-|g|e|'+0#af5f00255&| +0#0000000&@24
-@75
-|#+0#0000e05&| |N|o|w| |t|h|e| |s|a|m|e| |c|a|l@1| |l|i|k|e| |F|u|n|c|t|i|o|n|4| |b|u|t| |w|i|t|h| |F|u|n|c|t|i|o|n|1| +0#0000000&@21
-|F|u|n|c|t|i|o|n|1| |-+0#e000e06&|e|q| +0#0000000&|-+0#e000e06&|n|e| +0#0000000&|-+0#e000e06&|g|t| +0#0000000&|-+0#e000e06&|g|e| +0#0000000&|-+0#e000e06&|l|e| +0#0000000&|-+0#e000e06&|l|t| +0#0000000&|'+0#af5f00255&|-+0#e000002&|g|e| |1| |-|a| |2| |-|g|e|'+0#af5f00255&| +0#0000000&@24
-|F|u|n|c|t|i|o|n|1| @65
-@75
->e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
-@57|9|3|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_08_02.dump b/runtime/syntax/testdir/dumps/sh_08_02.dump
index b3289ec..b57af0b 100644
--- a/runtime/syntax/testdir/dumps/sh_08_02.dump
+++ b/runtime/syntax/testdir/dumps/sh_08_02.dump
@@ -1,9 +1,10 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
+|V+0#00e0e07#ffffff0|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|t|o@1|}+0#e000e06&| +0#0000000&@23
+|e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
 @75
 |#+0#0000e05&| |C|a|s|e| |1|d|.| |M|o|r|e| |V|a|r|i|a|b|l|e|s| |a|n|d| |C|o|n|s|t|a|n|t|s|.| |S|t|a|r|t|i|n|g| |w|i|t|h| |a| |V|a|r|i|a|b|l|e|.| +0#0000000&@8
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|`|d|a|t|e|`|"+0#af5f00255&| +0#e000002&|&+0#0000000&@1| |u+0#af5f00255&|n|s|e|t| +0#00e0e07&|V|a|r|i|a|b|l|e|A| +0#0000000&@28
-|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@44
->V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
+>V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@44
+|V+0#00e0e07&|a|r|i|a|b|l|e|1|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
 |V+0#00e0e07&|a|r|i|a|b|l|e|2|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|=|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@20
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
@@ -16,5 +17,4 @@
 |V+0#00e0e07&|a|r|i|a|b|l|e|3|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|+|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@20
 |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|1|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|2|"+0#af5f00255&| +0#e000002&|;+0#0000000&| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|$+0#e000e06&|V|a|r|i|a|b|l|e|3|"+0#af5f00255&| +0#0000000&@17
 @75
-|#+0#0000e05&| |C|a|s|e| |1|x|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| +0#0000000&@46
-@57|3|7|,|1| @9|4|9|%| 
+@57|3|6|,|1| @9|4|7|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_08_03.dump b/runtime/syntax/testdir/dumps/sh_08_03.dump
index 08ebadf..5426188 100644
--- a/runtime/syntax/testdir/dumps/sh_08_03.dump
+++ b/runtime/syntax/testdir/dumps/sh_08_03.dump
@@ -1,9 +1,10 @@
-|#+0#0000e05#ffffff0| |C|a|s|e| |1|x|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| +0#0000000&@46
+| +0&#ffffff0@74
+|#+0#0000e05&| |C|a|s|e| |1|x|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| +0#0000000&@46
 |[+0#af5f00255&| +0#0000000&|-+0#af5f00255&|t| +0#0000000&|0+0#e000002&| +0#0000000&|]+0#af5f00255&| +0#0000000&|&@1| |e+0#af5f00255&|c|h|o| +0#e000002&|"+0#af5f00255&|\+0#e000e06&|n|`|d|a|t|e|`|"+0#af5f00255&| +0#e000002&|&+0#0000000&@1| |u+0#af5f00255&|n|s|e|t| +0#00e0e07&|V|a|r|i|a|b|l|e|A| +0#0000000&@28
 |:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t|}+0#e000e06&| +0#0000000&@44
 |:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|H|O|M|E| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t|}+0#e000e06&| +0#0000000&@38
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@35
->:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@28
+>:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@35
+|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@28
 |:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|:+0#af5f00255&|-|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@28
 @75
 |#+0#0000e05&| |C|a|s|e| |1|y|.| |T|h|e| |s|a|m|e| |w|i|t|h| |'|:|'| |a|n|d| |w|i|t|h|o|u|t| |t|h|e| |'|:|'| |i|n| |t|h|e| |p|a|r|a|m|e|t|e|r| |s|u|b|s|t|i|t|u|t
@@ -15,6 +16,5 @@
 |:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|$+0#e000e06&|S|H|E|L@1| +0#0000000&|T|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E|}| +0#0000000&@29
 |:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|A|-+0#af5f00255&|T+0#0000000&|h|i|s| |i|s| |a| |T|e|x|t| |i|n| |$+0#e000e06&|H|O|M|E| +0#0000000&|$+0#e000e06&|S|H|E|L@1|}| +0#0000000&@29
 @75
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-@57|5@1|,|1| @9|7|5|%| 
+|#+0#0000e05&@71|@+0#4040ff13&@2
+| +0#0000000&@56|5|4|,|1| @9|7|3|%| 
diff --git a/runtime/syntax/testdir/dumps/sh_08_04.dump b/runtime/syntax/testdir/dumps/sh_08_04.dump
index 6f77aaf..dbdc472 100644
--- a/runtime/syntax/testdir/dumps/sh_08_04.dump
+++ b/runtime/syntax/testdir/dumps/sh_08_04.dump
@@ -1,9 +1,12 @@
-|#+0#0000e05#ffffff0| |T|h|i|s| |a|r|e| |v|a|l|i|d| |u|s|a|g|e|s| |f|o|r| |$|{|V|a|r|:|?|}| |i|n| |k|s|h|!| +0#0000000&@30
+|#+0#0000e05#ffffff0@74
+@5| +0#0000000&@69
 |#+0#0000e05&| +0#0000000&@73
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@26
+|#+0#0000e05&| |T|h|i|s| |a|r|e| |v|a|l|i|d| |u|s|a|g|e|s| |f|o|r| |$|{|V|a|r|:|?|}| |i|n| |k|s|h|!| +0#0000000&@30
+|#+0#0000e05&| +0#0000000&@73
+>V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@26
 |V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@14
 @75
->:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@34
+|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@34
 |:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@22
 @75
 |e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
@@ -14,7 +17,4 @@
 @8|e+0#af5f00255&|x|i|t| +0#0000000&|1+0#e000002&| +0#0000000&@60
 |f+0#af5f00255&|i| +0#0000000&@72
 |~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|3|,|1| @9|B|o|t| 
+| +0#0000000&@56|7|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_08_99.dump b/runtime/syntax/testdir/dumps/sh_08_99.dump
deleted file mode 100644
index 26007b1..0000000
--- a/runtime/syntax/testdir/dumps/sh_08_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|#+0#0000e05&@74
-@5| +0#0000000&@69
-|#+0#0000e05&| +0#0000000&@73
-|#+0#0000e05&| |T|h|i|s| |a|r|e| |v|a|l|i|d| |u|s|a|g|e|s| |f|o|r| |$|{|V|a|r|:|?|}| |i|n| |k|s|h|!| +0#0000000&@30
-|#+0#0000e05&| +0#0000000&@73
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@26
-|V+0#00e0e07&|a|r|i|a|b|l|e|4|=+0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@14
-@75
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e|}+0#e000e06&| +0#0000000&@34
-|:+0#0000e05&| +0#0000000&|$+0#e000e06&|{|V|a|r|i|a|b|l|e|4|:+0#af5f00255&|?|T+0#0000000&|h|i|s| |i|s| |a|n| |E|r@1|o|r| |M|e|s@1|a|g|e| |f|r|o|m| |`|d|a|t|e|`|}+0#e000e06&| +0#0000000&@22
-@75
-|e+0#af5f00255&|x|i|t| +0#0000000&|$+0#e000e06&|?| +0#0000000&@67
-@75
-|#+0#0000e05&| |M|i|c|h|a|e|l| |S|o|u|l|i|e|r| +0#0000000&@57
-|i+0#af5f00255&|f| |[| +0#0000000&|$+0#e000e06&|#| +0#0000000&|-+0#af5f00255&|n|e| +0#0000000&|1+0#e000002&| +0#0000000&|]+0#af5f00255&|;| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@53
-@8|e+0#af5f00255&|c|h|o| +0#e000002&|w|h|a|t|e|v|e|r| +0#0000000&@53
-@8|e+0#af5f00255&|x|i|t| +0#0000000&|1+0#e000002&| +0#0000000&@60
->f+0#af5f00255&|i| +0#0000000&@72
-@57|8|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_09_99.dump b/runtime/syntax/testdir/dumps/sh_09_99.dump
deleted file mode 100644
index b97cfa3..0000000
--- a/runtime/syntax/testdir/dumps/sh_09_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0|!|/|b|i|n|/|d|a|s|h| +0#0000000&@63
-|#+0#0000e05&| |T|e|s|t| |f|i|l|e| |f|o|r| |v|i|m| |t|h|e| |c|h|e|c|k| |(|)| |s|u|b|s|h|e|l@1|s| +0#0000000&@32
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|1| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@50
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|}| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@48
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|-|.+0#0000000&|}+0#e000e06&| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |s+0#af5f00255&|e|d| +0#0000000&|-+0#e000e06&|e| +0#0000000&|'+0#af5f00255&|s+0#e000002&|!|$|!|/|!|'+0#af5f00255&| +0#0000000&|-+0#e000e06&|e| +0#0000000&|'+0#af5f00255&|s+0#e000002&|!|/@1|*|$|!|/|!|'+0#af5f00255&| +0#0000000&@20
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|+|.+0#0000000&|}+0#e000e06&| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|=|.+0#0000000&|}+0#e000e06&| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|1|:+0#af5f00255&|?|}+0#e000e06&| @1|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@53
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|H|O|M|E| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@47
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|H|O|M|E|}| |;+0#af5f00255&| +0#e000e06&|$|p|w|d| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@45
-|(+0#e000e06&| |c+0#af5f00255&|d| +0#e000e06&|$|{|H|O|M|E|}| |)| +0#0000000&||| |w|c| |-+0#e000e06&|c| +0#0000000&@52
-|(|(+0#e000e06&|n+0#00e0e07&|=+0#0000000&|1+0#e000002&|+|2|)+0#e000e06&|)+0#ffffff16#ff404010| +0#0000000#ffffff0@65
->l+0#af5f00255&|e|t| +0#0000000&|n+0#00e0e07&|=+0#0000000&|1+0#e000002&|++0#0000000&|2+0#e000002&| +0#0000000&@65
-|:|r|e|d|r|a|w| @49|1|9|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/sh_10_99.dump b/runtime/syntax/testdir/dumps/sh_10_99.dump
deleted file mode 100644
index f97ea32..0000000
--- a/runtime/syntax/testdir/dumps/sh_10_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|p+0#af5f00255&|r|i|n|t|f| +0#0000000&|'+0#af5f00255&|%+0#e000002&|s|'+0#af5f00255&| +0#0000000&|"+0#af5f00255&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |t|w|e|l|v|e| @6|}|"+0#af5f00255&| +0#0000000&@24
-@8|u+0#00e0e07&|n|l|u|c|k|y|=+0#0000000&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |t|h|i|r|t|e@1|n| +0#0000000&@36
-|}+0#e000e06&| +0#0000000&@73
-@8|t+0#af5f00255&|y|p|e|s|e|t| +0#0000000&|n+0#00e0e07&|o|t|a|f|l|o|a|t|=+0#0000000&|$+0#e000e06&|{|||v|a|l|s|u|b|f|u|n|c| |n|o|t|a|n|u|m|b|e|r| @5|}| +0#0000000&@17
-@8|p+0#af5f00255&|r|i|n|t| +0#e000002&|$+0#e000e06&|u|n|l|u|c|k|y| +0#e000002&|$+0#e000e06&|n|o|t|a|n|u|m|b|e|r| +0#0000000&@40
-@8|$+0#e000e06&|{|||e+0#af5f00255&|c|h|o| +0#e000002&|f|o@1|}+0#e000e06&| +0#0000000&@54
-@8|$+0#e000e06&|{|||e+0#af5f00255&|c|h|o| +0#e000002&|b|a|r| +0#0000000&@55
-|}+0#e000e06&| +0#0000000&@73
-|f+0#af5f00255&|i| +0#0000000&@72
-@75
-|#+0#0000e05&| |=@5| +0#0000000&@66
-|#+0#0000e05&| |S|h|a|r|e|d|-|s|t|a|t|e| |c|o|m@1|a|n|d| |s|u|b|s|t|i|t|u|t|i|o|n|s| |u|s|i|n|g| |t|h|e| |s|y|n|t|a|x| |$|{|<|f|i|l|e|;|}| +0#0000000&@11
-|#+0#0000e05&| |a|r|e| |o|n|l|y| |s|u|p@1|o|r|t|e|d| |b|y| |k|s|h|9|3|,| |n|o|t| |m|k|s|h|.| +0#0000000&@34
-|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{| +0#0000000&@67
-| +0#e000e06&@7|p+0#af5f00255&|r|i|n|t|f| +0#e000e06&|%|s| |s|t|r| +0#0000000&@53
-|}+0#e000e06&| +0#e000002&|>+0#af5f00255&| +0#0000000&|/|t|m|p|/|s|t|r|f|i|l|e| @58
-|e+0#af5f00255&|c|h|o| +0#e000002&|$+0#e000e06&|{|<+0#af5f00255&|/+0#e000e06&|t|m|p|/|s|t|r|f|i|l|e|;|}| +0#0000000&@52
-@75
->e+0#af5f00255&|x|i|t| +0#0000000&|0+0#e000002&| +0#0000000&@68
-@57|4|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_11_01.dump b/runtime/syntax/testdir/dumps/sh_11_01.dump
new file mode 100644
index 0000000..083e422
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/sh_11_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&@67
+@4|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&@63
+@2|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |p|a|r|e|n| |e|r@1|o|r|!| +0#0000000&@56
+@75
+>f+0#af5f00255&|i| +0#0000000&@72
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/sh_11_99.dump b/runtime/syntax/testdir/dumps/sh_11_99.dump
deleted file mode 100644
index 9612dab..0000000
--- a/runtime/syntax/testdir/dumps/sh_11_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|#+0#0000e05&| |I|s@1|u|e| |#|9|6|2| +0#0000000&@62
-@75
-|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&@69
-@2|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&@65
-|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |o|k| +0#0000000&@68
-@75
-|i+0#af5f00255&|f| |t|r|u|e|;| +0#0000000&|t+0#af5f00255&|h|e|n| +0#0000000&@61
-@75
-@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |o|k| +0#0000000&@54
-@75
-@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |o|k| +0#0000000&@52
-@75
-@2|a+0#00e0e07&|r@1|=+0#0000000&|(+0#e000e06&| +0#0000000&@67
-@4|1+0#e000002&| +0#0000000&|2+0#e000002&| +0#0000000&|3+0#e000002&| +0#0000000&|4+0#e000002&| +0#0000000&@63
-@2|)+0#e000e06&| +0#0000000&|#+0#0000e05&| |p|a|r|e|n| |e|r@1|o|r|!| +0#0000000&@56
-@75
-|f+0#af5f00255&|i| +0#0000000&@72
-> @74
-@57|2|0|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_00.dump b/runtime/syntax/testdir/dumps/vim9_comment_00.dump
index 46d283f..de9798d 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_00.dump
@@ -13,7 +13,7 @@
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
 |d+0#af5f00255&|e|f|!| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@64
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
 @2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_01.dump b/runtime/syntax/testdir/dumps/vim9_comment_01.dump
index d596208..736d47d 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_01.dump
@@ -1,16 +1,16 @@
 | +0&#ffffff0@74
 |d+0#af5f00255&|e|f|!| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@64
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
 @2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 > @74
 |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|-+0#af5f00255&|c+0#e000e06&|o|u|n|t| +0#0000000&|F|o@1|C|o|m@1|a|n|d| |{+0#e000e06&| +0#0000000&@47
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
 @2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
 |}+0#e000e06&| +0#0000000&@73
 @75
 |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
 @2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@46
 |}+0#e000e06&| +0#0000000&@73
 @75
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_03.dump b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
index 0e424ab..8a0fda8 100644
--- a/runtime/syntax/testdir/dumps/vim9_comment_03.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
@@ -5,7 +5,7 @@
 |#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
 > @74
 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
+@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
 @18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
 |e+0#af5f00255&|n|d|i|f| +0#0000000&@69
 @75
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_99.dump b/runtime/syntax/testdir/dumps/vim9_comment_99.dump
deleted file mode 100644
index bed55bc..0000000
--- a/runtime/syntax/testdir/dumps/vim9_comment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|:|F|o@1| @70
-@6|#+0#0000e05&|\| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |c|o|m@1|e|n|t| +0#0000000&@40
-@6|\+0#e000e06&| +0#0000000&|a|r|g|1| @62
-@6|#+0#0000e05&|\| |l|i|n|e| |c|o|n|t|i|n|u|a|t|i|o|n| |c|o|m@1|e|n|t| +0#0000000&@40
-@6|\+0#e000e06&| +0#0000000&|a|r|g|2| @62
-@75
-@75
-|#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
-@75
-|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|%+0#af5f00255&@1| +0#0000000&||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&
-@18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-@75
-|#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1@1|3|0|7| |a|n|d| |#|1@1|5|6|0| +0#0000000&@48
-@75
->#+0#0000e05&| |T|h|i|s| |i|s| |w|h|a|t| |w|e| |c|a|l@1| |"| |b|l|a|h| +0#0000000&@45
-@57|6|4|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump
new file mode 100644
index 0000000..d681dcf
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |E|x| |c|o|m@1|a|n|d|s| +0#0000000&@56
+@75
+|#+0#0000e05&| |S|T|A|R|T| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@55
+|:|@| @72
+|:|@+0#e000e06&@1| +0#0000000&@71
+|:|N|e|x|t| @69
+|:|X| @72
+|#+0#0000e05&| |E|N|D| |N|O|T| |M|A|T|C|H|E|D| +0#0000000&@57
+@75
+|:|h+0#af5f00255&|e|l|p| +0#0000000&@69
+@1|:|h+0#af5f00255&|e|l|p| +0#0000000&@68
+|:| |h+0#af5f00255&|e|l|p| +0#0000000&@68
+@1|:| |h+0#af5f00255&|e|l|p| +0#0000000&@67
+@75
+|:|2+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+|:|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+|:|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@63
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump
new file mode 100644
index 0000000..58ba6ab
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_01.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0| |h+0#af5f00255&|e|l|p| +0#0000000&@68
+@1|:| |h+0#af5f00255&|e|l|p| +0#0000000&@67
+@75
+|:|2+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+|:|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@67
+>:|a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@63
+|:|a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@66
+|:|a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@64
+|:|a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@65
+|:|a+0#af5f00255&|l@1| +0#0000000&@70
+|:|a+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|a|d@1| +0#0000000&@67
+|:|a+0#af5f00255&|r|g|d|e|d|u|p|e| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|d|e|l|e|t|e| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|d|o| +0#0000000&@68
+|:|a+0#af5f00255&|r|g|e|d|i|t| +0#0000000&@66
+|:|a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@64
+|:|a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@65
+@57|1|9|,|1| @10|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump
new file mode 100644
index 0000000..3f62aaa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_02.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@65
+|:|a+0#af5f00255&|r|g|s| +0#0000000&@69
+|:|a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@65
+|:|a+0#af5f00255&|s|c|i@1| +0#0000000&@68
+|:|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| @62
+>:|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @62
+|:|a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@66
+|:|b+0#af5f00255&|a|d@1| +0#0000000&@69
+|:|b+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|b+0#af5f00255&|a|l|t| +0#0000000&@69
+|:|b+0#af5f00255&|d|e|l|e|t|e| +0#0000000&@66
+|:|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@61
+|:|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@61
+|:|b+0#af5f00255&|e|l|o|w|r|i|g|h|t| +0#0000000&@63
+|:|b+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|b+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@64
+|:|b+0#af5f00255&|n|e|x|t| +0#0000000&@68
+@57|3|7|,|1| @10|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump
new file mode 100644
index 0000000..1109775
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_03.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|b+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|b+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@65
+|:|b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|b+0#af5f00255&|r|e|a|k| +0#0000000&@68
+>:|b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@65
+|:|b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@65
+|:|b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@64
+|:|b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|b+0#af5f00255&|r|o|w|s|e| +0#0000000&@67
+|:|b+0#af5f00255&|u|f|d|o| +0#0000000&@68
+|:|b+0#af5f00255&|u|f@1|e|r| +0#0000000&@67
+|:|b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@66
+|:|b+0#af5f00255&|u|n|l|o|a|d| +0#0000000&@66
+|:|b+0#af5f00255&|w|i|p|e|o|u|t| +0#0000000&@65
+|:|c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@66
+|:|c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@65
+|:|c+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
+|:|c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
+@57|5@1|,|1| @10|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump
new file mode 100644
index 0000000..085cec5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_04.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
+|:|c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@65
+|:|c+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
+|:|c+0#af5f00255&|a|f|t|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|a|l@1| +0#0000000&@69
+>:|c+0#af5f00255&|a|t|c|h| +0#0000000&@68
+|:|c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@66
+|:|c+0#af5f00255&|b|e|l|o|w| +0#0000000&@67
+|:|c+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@66
+|:|c+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:|c+0#af5f00255&@1| +0#0000000&@71
+|:|c+0#af5f00255&@1|l|o|s|e| +0#0000000&@67
+|:|c+0#af5f00255&|d| +0#0000000&@71
+|:|c+0#af5f00255&|d|o| +0#0000000&@70
+|:|c+0#af5f00255&|e|n|t|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|e|x|p|r| +0#0000000&@68
+|:|c+0#af5f00255&|f|d|o| +0#0000000&@69
+|:|c+0#af5f00255&|f|i|l|e| +0#0000000&@68
+|:|c+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+@57|7|3|,|1| @10|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump
new file mode 100644
index 0000000..f8e1f28
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_05.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@63
+|:|c+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@65
+|:|c+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@65
+|:|c+0#af5f00255&|h|a|n|g|e|s| +0#0000000&@66
+>:|c+0#af5f00255&|h|d|i|r| +0#0000000&@68
+|:|c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@64
+|:|c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@64
+|:|c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
+|:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
+|:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
+|:|c+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@63
+|:|c+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
+|:|c+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|c+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+@57|9|1|,|1| @10|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump
new file mode 100644
index 0000000..6e027fa
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_06.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|c+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|c+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
+|:|c+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
+>:|c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
+|:|c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|c+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|c+0#af5f00255&|o|l|d|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@62
+|:|c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@65
+|:|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&@66
+|:|c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@65
+|:|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@66
+|:|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@65
+|:|c+0#af5f00255&|o|p|e|n| +0#0000000&@68
+|:|c+0#af5f00255&|o|p|y| +0#0000000&@69
+|:|c+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+@57|1|0|9|,|1| @9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump
new file mode 100644
index 0000000..f608f04
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_07.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|c+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+|:|c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|c+0#af5f00255&|q|u|i|t| +0#0000000&@68
+|:|c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|c+0#af5f00255&|s|c|o|p|e| +0#0000000&@67
+>:|c+0#af5f00255&|s|t|a|g| +0#0000000&@68
+|:|c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@64
+|:|c+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|c+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|c+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@66
+|:|d+0#af5f00255&|e|b|u|g| +0#0000000&@68
+|:|d+0#af5f00255&|e|b|u|g@1|r|e@1|d|y| +0#0000000&@62
+|:|d+0#af5f00255&|e|f| +0#0000000&@70
+|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
+|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
+|:|d+0#af5f00255&|e|f|e|r| +0#0000000&@68
+|:|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
+|:|d+0#af5f00255&|e|l|e|t|e| +0#0000000&@67
+|:|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@62
+@57|1|2|7|,|1| @8|1|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump
new file mode 100644
index 0000000..f1bf864
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_08.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@62
+|:|d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@65
+|:|d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@64
+>:|d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@64
+|:|d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@65
+|:|d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@63
+|:|d+0#af5f00255&|i|g|r|a|p|h|s| +0#0000000&@65
+|:|d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@62
+|:|d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@62
+|:|d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&@66
+|:|d+0#af5f00255&|j|u|m|p| +0#0000000&@68
+|:|d+0#af5f00255&|l| +0#0000000&@71
+|:|d+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@64
+|:|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+|:|d+0#af5f00255&|p| +0#0000000&@71
+@57|1|4|5|,|1| @8|1@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump
new file mode 100644
index 0000000..b2ede40
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_09.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|d+0#af5f00255&|p| +0#0000000&@71
+|:|d+0#af5f00255&|r|o|p| +0#0000000&@69
+|:|d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+|:|d+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@66
+>:|e+0#af5f00255&|c|h|o| +0#0000000&@69
+|:|e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@62
+|:|e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@66
+|:|e+0#af5f00255&|c|h|o|h|l| +0#0000000&@67
+|:|e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@66
+|:|e+0#af5f00255&|c|h|o|n| +0#0000000&@68
+|:|e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@63
+|:|e+0#af5f00255&|d|i|t| +0#0000000&@69
+|:|e+0#af5f00255&|l|s|e| +0#0000000&@69
+|:|e+0#af5f00255&|l|s|e|i|f| +0#0000000&@67
+|:|e+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
+|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
+|:|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
+@57|1|6|3|,|1| @8|1|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump
new file mode 100644
index 0000000..adebc5c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_10.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@66
+|:|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@62
+|:|e+0#af5f00255&|n|d|i|f| +0#0000000&@68
+>:|e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@61
+|:|e+0#af5f00255&|n|d|t|r|y| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@65
+|:|e+0#af5f00255&|n|e|w| +0#0000000&@69
+|:|e+0#af5f00255&|n|u|m| +0#0000000&@69
+|:|e+0#af5f00255&|v|a|l| +0#0000000&@69
+|:|e+0#af5f00255&|x| +0#0000000&@71
+|:|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@66
+|:|e+0#af5f00255&|x|i|t| +0#0000000&@69
+|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
+|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
+|:|e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@66
+|:|f+0#af5f00255&|i|l|e| +0#0000000&@69
+|:|f+0#af5f00255&|i|l|e|s| +0#0000000&@68
+@57|1|8|1|,|1| @8|1|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
new file mode 100644
index 0000000..5664d9f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_11.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|f+0#af5f00255&|i|l|e|s| +0#0000000&@68
+|:|f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@65
+|:|f+0#af5f00255&|i|l|t|e|r| +0#0000000&@67
+|:|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
+|:|f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@66
+>:|f+0#af5f00255&|i|n|d| +0#0000000&@69
+|:|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@67
+|:|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
+|:|f+0#af5f00255&|i|x|d|e|l| +0#0000000&@67
+|:|f+0#af5f00255&|o|l|d| +0#0000000&@69
+|:|f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@64
+|:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
+|:|f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@63
+|:|f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@65
+|:|f+0#af5f00255&|o|r| +0#0000000&@70
+|:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@65
+|:|g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@62
+|:|g+0#af5f00255&|o|t|o| +0#0000000&@69
+|:|g+0#af5f00255&|r|e|p| +0#0000000&@69
+@57|1|9@1|,|1| @8|1|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump
new file mode 100644
index 0000000..c6a778d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_12.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|g+0#af5f00255&|r|e|p| +0#0000000&@69
+|:|g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@66
+|:|g+0#af5f00255&|u|i| +0#0000000&@70
+|:|g+0#af5f00255&|v|i|m| +0#0000000&@69
+|:|h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@65
+>:|h+0#af5f00255&|e|l|p| +0#0000000&@69
+|:|h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@64
+|:|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@65
+|:|h+0#af5f00255&|i|d|e| +0#0000000&@69
+|:|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@64
+|:|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@66
+|:|h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@63
+|:|i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@66
+|:|i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@65
+|:|i+0#af5f00255&|f| +0#0000000&@71
+|:|i+0#af5f00255&|j|u|m|p| +0#0000000&@68
+|:|i+0#af5f00255&|l|i|s|t| +0#0000000&@68
+@57|2|1|7|,|1| @8|1|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump
new file mode 100644
index 0000000..273be39
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_13.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|i+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|i+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|i+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
+>:|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
+|:|i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@64
+|:|i+0#af5f00255&|n|t|r|o| +0#0000000&@68
+|:|i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+|:|i+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@64
+|:|i+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|i+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|j+0#af5f00255&|o|i|n| +0#0000000&@69
+|:|j+0#af5f00255&|u|m|p|s| +0#0000000&@68
+|:|k+0#af5f00255&| +0#0000000&@72
+|:|k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@66
+@57|2|3|5|,|1| @8|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump
new file mode 100644
index 0000000..22125b7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_14.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@66
+|:|k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@64
+|:|k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@64
+|:|k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@61
+|:|l+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
+>:|l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
+|:|l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@65
+|:|l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
+|:|l+0#af5f00255&|a|f|t|e|r| +0#0000000&@67
+|:|l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@65
+|:|l+0#af5f00255&|a|s|t| +0#0000000&@69
+|:|l+0#af5f00255&|a|t|e|r| +0#0000000&@68
+|:|l+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@66
+|:|l+0#af5f00255&|b|e|l|o|w| +0#0000000&@67
+|:|l+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@66
+|:|l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:|l+0#af5f00255&|c|d| +0#0000000&@70
+|:|l+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
+|:|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+@57|2|5|3|,|1| @8|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump
new file mode 100644
index 0000000..bf6bb90
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_15.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+|:|l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
+|:|l+0#af5f00255&|d|o| +0#0000000&@70
+|:|l+0#af5f00255&|e|f|t| +0#0000000&@69
+|:|l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@64
+>:|l+0#af5f00255&|e|g|a|c|y| +0#0000000&@67
+|:|l+0#af5f00255&|e|x|p|r| +0#0000000&@68
+|:|l+0#af5f00255&|f|d|o| +0#0000000&@69
+|:|l+0#af5f00255&|f|i|l|e| +0#0000000&@68
+|:|l+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|l+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@63
+|:|l+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@65
+|:|l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@65
+|:|l+0#af5f00255&|g|r|e|p| +0#0000000&@68
+|:|l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@65
+|:|l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@64
+|:|l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
+|:|l+0#af5f00255&|i|s|t| +0#0000000&@69
+|:|l+0#af5f00255&@1| +0#0000000&@71
+@57|2|7|1|,|1| @8|2|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump
new file mode 100644
index 0000000..39040dc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_16.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&@1| +0#0000000&@71
+|:|l+0#af5f00255&@1|a|s|t| +0#0000000&@68
+|:|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
+|:|l+0#af5f00255&|m|a|k|e| +0#0000000&@68
+|:|l+0#af5f00255&|m|a|p| +0#0000000&@69
+>:|l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|l+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+|:|l+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|l+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|l+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
+|:|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
+|:|l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|#+0#0000e05&| |:|l|o|a|d|k|e|y|m|a|p| |#| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@33
+|:|l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@65
+|:|l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@64
+|:|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@66
+|:|l+0#af5f00255&|o|l|d|e|r| +0#0000000&@67
+|:|l+0#af5f00255&|o|p|e|n| +0#0000000&@68
+|:|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+@57|2|8|9|,|1| @8|2|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump
new file mode 100644
index 0000000..0caa855
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_17.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
+|:|l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|l+0#af5f00255&|s| +0#0000000&@71
+|:|l+0#af5f00255&|t|a|g| +0#0000000&@69
+>:|l+0#af5f00255&|u|a| +0#0000000&@70
+|:|l+0#af5f00255&|u|a|d|o| +0#0000000&@68
+|:|l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@66
+|:|l+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@65
+|:|l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@62
+|:|l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@66
+|:|m+0#af5f00255&|a|k|e| +0#0000000&@69
+|:|m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@65
+|:|m+0#af5f00255&|a|p| +0#0000000&@70
+|:|m+0#af5f00255&|a|r|k| +0#0000000&@69
+|:|m+0#af5f00255&|a|r|k|s| +0#0000000&@68
+|:|m+0#af5f00255&|a|t|c|h| +0#0000000&@68
+|:|m+0#af5f00255&|e|n|u| +0#0000000&@69
+@57|3|0|7|,|1| @8|2|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump
new file mode 100644
index 0000000..cd568a5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_18.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|m+0#af5f00255&|e|n|u| +0#0000000&@69
+|:|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@60
+|:|m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@65
+|:|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
+|:|m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@64
+>:|m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@66
+|:|m+0#af5f00255&|k|v|i|e|w| +0#0000000&@67
+|:|m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@66
+|:|m+0#af5f00255&|o|v|e| +0#0000000&@69
+|:|m+0#af5f00255&|z|f|i|l|e| +0#0000000&@67
+|:|m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@65
+|:|n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@66
+|:|n+0#af5f00255&|b|k|e|y| +0#0000000&@68
+|:|n+0#af5f00255&|b|s|t|a|r|t| +0#0000000&@66
+|:|n+0#af5f00255&|e|w| +0#0000000&@70
+|:|n+0#af5f00255&|e|x|t| +0#0000000&@69
+|:|n+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
+@57|3|2|5|,|1| @8|2|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump
new file mode 100644
index 0000000..d0d4e5d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_19.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@65
+|:|n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@64
+|:|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+|:|n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@63
+>:|n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@63
+|:|n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@66
+|:|n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@65
+|:|n+0#af5f00255&|o|r|m|a|l| +0#0000000&@67
+|:|n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@63
+|:|n+0#af5f00255&|u|m|b|e|r| +0#0000000&@67
+|:|n+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|n+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|o+0#af5f00255&|l|d|f|i|l|e|s| +0#0000000&@65
+|:|o+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|o+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|o+0#af5f00255&|n|l|y| +0#0000000&@69
+|:|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+@57|3|4|3|,|1| @8|2|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump
new file mode 100644
index 0000000..387c0b4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_20.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
+|:|o+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+>:|o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@64
+|:|p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@66
+|:|p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@62
+|:|p+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+|:|p+0#af5f00255&|e|d|i|t| +0#0000000&@68
+|:|p+0#af5f00255&|e|r|l| +0#0000000&@69
+|:|p+0#af5f00255&|e|r|l|d|o| +0#0000000&@67
+|:|p+0#af5f00255&|o|p| +0#0000000&@70
+|:|p+0#af5f00255&|o|p|u|p| +0#0000000&@68
+|:|p+0#af5f00255&@1|o|p| +0#0000000&@69
+|:|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
+|:|p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@65
+|:|p+0#af5f00255&|r|i|n|t| +0#0000000&@68
+|:|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@66
+@57|3|6|1|,|1| @8|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump
new file mode 100644
index 0000000..b79a1e6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_21.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@66
+|:|p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@66
+|:|p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@63
+|:|p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@63
+|:|p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+>:|p+0#af5f00255&|t|a|g| +0#0000000&@69
+|:|p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@66
+|:|p+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
+|:|p+0#af5f00255&|t|l|a|s|t| +0#0000000&@67
+|:|p+0#af5f00255&|t|n|e|x|t| +0#0000000&@67
+|:|p+0#af5f00255&|t|N|e|x|t| +0#0000000&@67
+|:|p+0#af5f00255&|t|p|r|e|v|i|o|u|s| +0#0000000&@63
+|:|p+0#af5f00255&|t|r|e|w|i|n|d| +0#0000000&@65
+|:|p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@65
+|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
+|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
+|:|p+0#af5f00255&|u|t| +0#0000000&@70
+|:|p+0#af5f00255&|w|d| +0#0000000&@70
+|:|p+0#af5f00255&|y|3| +0#0000000&@70
+@57|3|7|9|,|1| @8|3|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump
new file mode 100644
index 0000000..b6248da
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_22.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|p+0#af5f00255&|y|3| +0#0000000&@70
+|:|p+0#af5f00255&|y|3|d|o| +0#0000000&@68
+|:|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
+|:|p+0#af5f00255&|y|d|o| +0#0000000&@69
+|:|p+0#af5f00255&|y|f|i|l|e| +0#0000000&@67
+>:|p+0#af5f00255&|y|t|h|o|n| +0#0000000&@67
+|:|p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@66
+|:|p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@66
+|:|p+0#af5f00255&|y|x| +0#0000000&@70
+|:|p+0#af5f00255&|y|x|d|o| +0#0000000&@68
+|:|p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@66
+|:|q+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|q+0#af5f00255&|u|i|t| +0#0000000&@69
+|:|q+0#af5f00255&|u|i|t|a|l@1| +0#0000000&@66
+|:|r+0#af5f00255&|e|a|d| +0#0000000&@69
+|:|r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@66
+|:|r+0#af5f00255&|e|d|i|r| +0#0000000&@68
+|:|r+0#af5f00255&|e|d|o| +0#0000000&@69
+|:|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
+@57|3|9|7|,|1| @8|3|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump
new file mode 100644
index 0000000..039284c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_23.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
+|:|r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@61
+|:|r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@60
+|:|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
+|:|r+0#af5f00255&|e|s|i|z|e| +0#0000000&@67
+>:|r+0#af5f00255&|e|t|a|b| +0#0000000&@68
+|:|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@67
+|:|r+0#af5f00255&|e|w|i|n|d| +0#0000000&@67
+|:|r+0#af5f00255&|i|g|h|t| +0#0000000&@68
+|:|r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@63
+|:|r+0#af5f00255&|u|b|y| +0#0000000&@69
+|:|r+0#af5f00255&|u|b|y|d|o| +0#0000000&@67
+|:|r+0#af5f00255&|u|b|y|f|i|l|e| +0#0000000&@65
+|:|r+0#af5f00255&|u|n|d|o| +0#0000000&@68
+|:|r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@66
+|:|r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
+|:|s+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@66
+|:|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
+@57|4|1|5|,|1| @8|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump
new file mode 100644
index 0000000..0995e43
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_24.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
+|:|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
+|:|s+0#af5f00255&|b|a|l@1| +0#0000000&@68
+|:|s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@66
+|:|s+0#af5f00255&|b|l|a|s|t| +0#0000000&@67
+>:|s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@63
+|:|s+0#af5f00255&|b|n|e|x|t| +0#0000000&@67
+|:|s+0#af5f00255&|b|N|e|x|t| +0#0000000&@67
+|:|s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@63
+|:|s+0#af5f00255&|b|r|e|w|i|n|d| +0#0000000&@65
+|:|s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@59
+|:|s+0#af5f00255&|c|r|i|p|t|n|a|m|e|s| +0#0000000&@62
+|:|s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@60
+|:|s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
+|:|s+0#af5f00255&|e|t| +0#0000000&@70
+|:|s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@62
+|:|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@64
+|:|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
+@57|4|3@1|,|1| @8|3|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump
new file mode 100644
index 0000000..cb1c9d2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_25.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
+|:|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
+|:|s+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:|s+0#af5f00255&|h|e|l@1| +0#0000000&@68
+|:|s+0#af5f00255&|i|g|n| +0#0000000&@69
+>:|s+0#af5f00255&|i|l|e|n|t| +0#0000000&@67
+|:|s+0#af5f00255&|i|m|a|l|t| +0#0000000&@67
+|:|s+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|s+0#af5f00255&|l|e@1|p| +0#0000000&@68
+|:|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@67
+|:|s+0#af5f00255&|m|a|g|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|s+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|s+0#af5f00255&|m|i|l|e| +0#0000000&@68
+|:|s+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+@57|4|5|1|,|1| @8|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump
new file mode 100644
index 0000000..3d40709
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_26.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|s+0#af5f00255&|o|r|t| +0#0000000&@69
+|:|s+0#af5f00255&|o|u|r|c|e| +0#0000000&@67
+|:|s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@64
+>:|s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@62
+|:|s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@64
+|:|s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@63
+|:|s+0#af5f00255&|p|l|i|t| +0#0000000&@68
+|:|s+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|s+0#af5f00255&|t|a|g| +0#0000000&@69
+|:|s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@60
+|:|s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@62
+|:|s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@61
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+@57|4|6|9|,|1| @8|3|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump
new file mode 100644
index 0000000..42e8ed3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_27.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
+|:|s+0#af5f00255&|t|o|p| +0#0000000&@69
+|:|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
+>:|s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@65
+|:|s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@63
+|:|s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@66
+|:|s+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@66
+|:|s+0#af5f00255&|v|i|e|w| +0#0000000&@68
+|:|s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@65
+|:|s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@65
+|:|s+0#af5f00255&|y|n|t|a|x| +0#0000000&@67
+|:|s+0#af5f00255&|y|n|t|i|m|e| +0#0000000&@66
+|:|t+0#af5f00255&|a|b| +0#0000000&@70
+|:|t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@65
+|:|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
+@57|4|8|7|,|1| @8|3|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump
new file mode 100644
index 0000000..d501862
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_28.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@65
+|:|t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@66
+>:|t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|n|e|w| +0#0000000&@67
+|:|t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@62
+|:|t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@64
+|:|t+0#af5f00255&|a|b|s| +0#0000000&@69
+|:|t+0#af5f00255&|a|g| +0#0000000&@70
+|:|t+0#af5f00255&|a|g|s| +0#0000000&@69
+|:|t+0#af5f00255&|c|d| +0#0000000&@70
+|:|t+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
+|:|t+0#af5f00255&|c|l| +0#0000000&@70
+|:|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
+@57|5|0|5|,|1| @8|4|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump
new file mode 100644
index 0000000..a4fe905
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_29.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@66
+|:|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
+|:|t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@65
+|:|t+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+>:|t+0#af5f00255&|h|r|o|w| +0#0000000&@68
+|:|t+0#af5f00255&|j|u|m|p| +0#0000000&@68
+|:|t+0#af5f00255&|l|a|s|t| +0#0000000&@68
+|:|t+0#af5f00255&|l|m|e|n|u| +0#0000000&@67
+|:|t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@63
+|:|t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@65
+|:|t+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|t+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|t+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|t+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@66
+|:|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+@57|5|2|3|,|1| @8|4|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump
new file mode 100644
index 0000000..1d8015a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_30.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|r|y| +0#0000000&@70
+|:|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
+|:|t+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+>:|t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|t+0#af5f00255&|y|p|e| +0#0000000&@69
+|:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
+|:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
+|:|u+0#af5f00255&|n|d|o| +0#0000000&@69
+|:|u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@65
+|:|u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@65
+|:|u+0#af5f00255&|n|h|i|d|e| +0#0000000&@67
+|:|u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&@64
+|:|u+0#af5f00255&|n|m|a|p| +0#0000000&@68
+|:|u+0#af5f00255&|n|m|e|n|u| +0#0000000&@67
+|:|u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@65
+|:|u+0#af5f00255&|p|d|a|t|e| +0#0000000&@67
+|:|v+0#af5f00255&|a|r| +0#0000000&@70
+@57|5|4|1|,|1| @8|4@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump
new file mode 100644
index 0000000..d4daaca
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_31.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|v+0#af5f00255&|a|r| +0#0000000&@70
+|:|v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
+|:|v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@61
+>:|v+0#af5f00255&|i|e|w| +0#0000000&@69
+|:|v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@66
+|#+0#0000e05&| |:|v|i|m|9|s|c|r|i|p|t| +0#0000000&@61
+|:|v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@66
+|:|v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@63
+|:|v+0#af5f00255&|i|s|u|a|l| +0#0000000&@67
+|:|v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@66
+|:|v+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|v+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|v+0#af5f00255&|n|e|w| +0#0000000&@69
+|:|v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+@57|5@1|9|,|1| @8|4|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump
new file mode 100644
index 0000000..499f3da
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_32.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|w+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|w+0#af5f00255&|h|i|l|e| +0#0000000&@68
+>:|w+0#af5f00255&|i|n|c|m|d| +0#0000000&@67
+|:|w+0#af5f00255&|i|n|d|o| +0#0000000&@68
+|:|w+0#af5f00255&|i|n|p|o|s| +0#0000000&@67
+|:|w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@66
+|:|w+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|w+0#af5f00255&|q| +0#0000000&@71
+|:|w+0#af5f00255&|q|a|l@1| +0#0000000&@68
+|:|w+0#af5f00255&|r|i|t|e| +0#0000000&@68
+|:|w+0#af5f00255&|u|n|d|o| +0#0000000&@68
+|:|w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
+|:|x+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|x+0#af5f00255&|m|a|p| +0#0000000&@69
+@57|5|7@1|,|1| @8|4|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump
new file mode 100644
index 0000000..7ac1072
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_33.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|x+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|x+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+>:|x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@65
+|:|x+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|y+0#af5f00255&|a|n|k| +0#0000000&@69
+|:|z+0#af5f00255&| +0#0000000&@72
+@75
+|F|o@1|(+0#e000e06&|)||+0#0000000&|h+0#af5f00255&|e|l|p| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&|||h+0#af5f00255&|e|l|p| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)||+0#0000000&| |h+0#af5f00255&|e|l|p| +0#0000000&@63
+@75
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |2+0#af5f00255&|m|a|t|c|h| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |3+0#af5f00255&|m|a|t|c|h| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@56
+@57|5|9|5|,|1| @8|4|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump
new file mode 100644
index 0000000..259d457
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_34.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|l@1| +0#0000000&@63
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|a|d@1| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|e|d|u|p|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|e|l|e|t|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|e|d|i|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|s| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|s|c|i@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| ||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @41
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+@57|6|1|3|,|1| @8|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump
new file mode 100644
index 0000000..3fb5032
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_35.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|d@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l|t| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|d|e|l|e|t|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|l|o|w|r|i|g|h|t| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@58
+@57|6|3|1|,|1| @8|5|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump
new file mode 100644
index 0000000..9431275
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_36.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|o|w|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f|d|o| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|n|l|o|a|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|w|i|p|e|o|u|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|o|v|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|f|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@59
+@57|6|4|9|,|1| @8|5|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump
new file mode 100644
index 0000000..da8635d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_37.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|l|o|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&@1| +0#0000000&@64
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&@1|l|o|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d|o| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|n|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|x|p|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e|s| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|d|i|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@57
+@57|6@1|7|,|1| @8|5|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump
new file mode 100644
index 0000000..6c4b4c9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_38.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|o|s|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|w|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+@57|6|8|5|,|1| @8|5|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump
new file mode 100644
index 0000000..ec8610e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_39.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|d|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@58
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|e|n| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|y| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|q|u|i|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|c|o|p|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@57
+@57|7|0|3|,|1| @8|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump
new file mode 100644
index 0000000..7e09720
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_40.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g@1|r|e@1|d|y| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|e|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|e|t|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@57
+@57|7|2|1|,|1| @8|5|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump
new file mode 100644
index 0000000..f9fd2c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_41.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|g|r|a|p|h|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@55
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|j|u|m|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|p| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|r|o|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|p|l|i|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@55
+@57|7|3|9|,|1| @8|6|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump
new file mode 100644
index 0000000..e2bded9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_42.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|h|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|n| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e|i|f| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@60
+@57|7|5|7|,|1| @8|6|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
new file mode 100644
index 0000000..4687bc4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_43.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|e|w| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|u|m| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|i|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|s| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|d| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@60
+@57|7@1|5|,|1| @8|6|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
new file mode 100644
index 0000000..0d4ee69
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_44.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|r|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|x|d|e|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@57
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|o|t|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|u|i| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|v|i|m| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@57
+@57|7|9|3|,|1| @8|6|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump
new file mode 100644
index 0000000..ed46723
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_45.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|d|e| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|f| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|j|u|m|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|l|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+@57|8|1@1|,|1| @8|6@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump
new file mode 100644
index 0000000..7a519ee
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_46.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|r|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@59
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|o|i|n| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|u|m|p|s| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|b|o|v|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@58
+@57|8|2|9|,|1| @8|6|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump
new file mode 100644
index 0000000..c6e9fbe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_47.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|s|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|t|e|r| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|l|o|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|d| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|h|d|i|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|l|o|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|d|o| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|g|a|c|y| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@62
+@57|8|4|7|,|1| @8|6|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump
new file mode 100644
index 0000000..0069011
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_48.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@58
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|i|s|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|i|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|k|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|w|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@61
+@57|8|6|5|,|1| @8|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump
new file mode 100644
index 0000000..2222220
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_49.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+>#+0#0000e05&| |F|o@1|(|)| ||| |l|o|a|d|k|e|y|m|a|p| |#| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@26
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|l|d|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|p|e|n| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|s| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|t|a|g| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@59
+@57|8@1|3|,|1| @8|7|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump
new file mode 100644
index 0000000..4e38fbc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_50.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@59
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|k|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|v|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k|s| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|t|c|h| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|e|x|r|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@60
+@57|9|0|1|,|1| @8|7|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump
new file mode 100644
index 0000000..413a19e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_51.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@59
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|k|e|y| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|s|t|a|r|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|w| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|x|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@58
+@57|9|1|9|,|1| @8|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump
new file mode 100644
index 0000000..4a48f67
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_52.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|m|a|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|l|d|f|i|l|e|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|l|y| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@55
+@57|9|3|7|,|1| @8|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump
new file mode 100644
index 0000000..904af14
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_53.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|d|i|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l|d|o| +0#0000000&@60
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p|u|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&@1|o|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|i|n|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|a|g| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@60
+@57|9|5@1|,|1| @8|7|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump
new file mode 100644
index 0000000..13bf876
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_54.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|l|a|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|n|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|N|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|p|r|e|v|i|o|u|s| +0#0000000&@56
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|r|e|w|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|t| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|w|d| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|f|i|l|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@59
+@57|9|7|3|,|1| @8|8|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump
new file mode 100644
index 0000000..1566106
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_55.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|a|l@1| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t|a|l@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|a|d| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|i|r| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|s|i|z|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|a|b| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@60
+@57|9@1|1|,|1| @8|8|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump
new file mode 100644
index 0000000..252e0db
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_56.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|d|o| +0#0000000&@60
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|f|i|l|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|v|e|a|s| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|a|l@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|l|a|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|n|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@60
+@57|1|0@1|9|,|1| @7|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump
new file mode 100644
index 0000000..ea46840
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_57.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|r|e|w|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@52
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|n|a|m|e|s| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|n|d| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|h|e|l@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|g|n| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|l|e|n|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|m|a|l|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|a|s|t| +0#0000000&@61
+@57|1|0|2|7|,|1| @7|8|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump
new file mode 100644
index 0000000..3ca8140
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_58.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p|!| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|g|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|r|t| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|u|r|c|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@57
+@57|1|0|4|5|,|1| @7|8|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump
new file mode 100644
index 0000000..361e7a8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_59.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|l|i|t| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|g| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@53
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|j|u|m|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@59
+@57|1|0|6|3|,|1| @7|8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump
new file mode 100644
index 0000000..c643b3a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_60.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|v|i|e|w| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|a|x| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|i|m|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|w| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@59
+@57|1|0|8|1|,|1| @7|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump
new file mode 100644
index 0000000..d024fa5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_61.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@57
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|s| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g|s| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|d| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|h|d|i|r| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|f|i|r|s|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|j|u|m|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@61
+@57|1|0|9@1|,|1| @7|9|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump
new file mode 100644
index 0000000..10f3bcc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_62.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|y| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|y|p|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@54
+@57|1@2|7|,|1| @7|9|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump
new file mode 100644
index 0000000..890f79f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_63.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@58
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|h|i|d|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|a|p| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|e|n|u| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|p|d|a|t|e| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@59
+|#+0#0000e05&| |c|a|l@1| |F|o@1|(|)| ||| |v|i|m|9|s|c|r|i|p|t| +0#0000000&@49
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@59
+@57|1@1|3|5|,|1| @7|9|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump
new file mode 100644
index 0000000..11db98b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_64.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@56
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|s|u|a|l| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@62
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|e|w| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|s|p|l|i|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|r|i|t|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|N|e|x|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@61
+@57|1@1|5|3|,|1| @7|9|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump
new file mode 100644
index 0000000..3640a53
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_65.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@61
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q| +0#0000000&@64
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q|a|l@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|u|n|d|o| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+@57|1@1|7|1|,|1| @7|9|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump
new file mode 100644
index 0000000..465500e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_66.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@65
+@75
+@75
+>#+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |o|n|l|y| +0#0000000&@54
+@75
+|:|P|r|i|n|t| @68
+|:+0#af5f00255&|a|p@1|e|n|d| +0#0000000&@67
+| +0#e000002&@3|t|e|x|t| +0#0000000&@66
+|.+0#af5f00255&| +0#0000000&@73
+|:+0#af5f00255&|c|h|a|n|g|e| +0#0000000&@67
+| +0#e000002&@3|t|e|x|t| +0#0000000&@66
+|.+0#af5f00255&| +0#0000000&@73
+|:+0#af5f00255&|i|n|s|e|r|t| +0#0000000&@67
+| +0#e000002&@3|t|e|x|t| +0#0000000&@66
+|.+0#af5f00255&| +0#0000000&@73
+|:|k+0#af5f00255&| +0#0000000&@72
+|:|l+0#af5f00255&|e|t| +0#0000000&@70
+@57|1@1|8|9|,|1| @7|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump
new file mode 100644
index 0000000..0292dd4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_67.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|l+0#af5f00255&|e|t| +0#0000000&@70
+|:|m+0#af5f00255&|o|d|e| +0#0000000&@69
+|:|o+0#af5f00255&|p|e|n| +0#0000000&@69
+|:|t+0#af5f00255&| +0#0000000&@72
+|:|u+0#af5f00255&|n|l|e|t| +0#0000000&@68
+>:|x+0#af5f00255&|i|t| +0#0000000&@70
+@75
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @60
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e| +0#0000000&@60
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i|n|s|e|r|t| @60
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&| +0#0000000&@65
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|t| +0#0000000&@63
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@62
+@57|1|2|0|7|,|1| @7|9@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump b/runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump
new file mode 100644
index 0000000..1e90095
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_commands_68.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|e|n| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&| +0#0000000&@65
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|e|t| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|5|,|0|-|1| @5|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump
index ef9f580..b36eb62 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump
@@ -10,11 +10,11 @@
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
 |}+0#e000e06&| +0#0000000&@73
 @75
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
index 72a7dfb..1fd26e6 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
@@ -1,11 +1,11 @@
 |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@68
 @75
 |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
 |}+0#e000e06&| +0#0000000&@73
 > @74
 |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
 |}+0#e000e06&| +0#0000000&@73
 |~+0#4040ff13&| @73
 |~| @73
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump
deleted file mode 100644
index efaf53b..0000000
--- a/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|t|r|u|e| +0#0000000&@20
-@75
-|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump
new file mode 100644
index 0000000..04f643d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |:|f|u|n|c|t|i|o|n| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t| |e|r@1|o|r|s| +0#0000000&@29
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump
new file mode 100644
index 0000000..cb7caf5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_01.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+>e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+@57|1|9|,|1| @9|5|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump
new file mode 100644
index 0000000..e74df67
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comment_errors_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&| +0#0000000&@54
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@50
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|5| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump
new file mode 100644
index 0000000..b6ed490
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m|9| |:|f|u|n|c|t|i|o|n| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t|s| +0#0000000&@35
+|#+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump
new file mode 100644
index 0000000..6cb37d1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_01.dump
@@ -0,0 +1,20 @@
+|f+0#af5f00255#ffffff0|u|n| +0#0000000&|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+>e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@12|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+@57|1|9|,|1| @9|5|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump
new file mode 100644
index 0000000..7df9e8f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_function_def_tail_comments_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@14|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&| +0#0000000&@54
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@50
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|5| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump
new file mode 100644
index 0000000..9e6247a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_00.dump
@@ -0,0 +1,20 @@
+>v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
+@75
+|#+0#0000e05&| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| +0#0000000&@49
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@45
+@75
+|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@64
+@75
+|#+0#0000e05&| |L|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@60
+@75
+@2|#+0#0000e05&| |A|n|o|t|h|e|r| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@50
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
+@75
+|#+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
+|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump
new file mode 100644
index 0000000..1d0823f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_loadkeymap_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
+@75
+|#+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
+><+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
+|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
+|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
+|x|a|d|e|c|i|m|a|l| +0#0000000&@65
+@75
+|#+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@43
+|\|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@14|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
+|n|t| +0#0000000&@72
+|"| |“| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
+@1|e|n|t| +0#0000000&@70
+|:| |#| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
+|n|t| +0#0000000&@72
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
index 191b9f2..9708525 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
@@ -10,11 +10,11 @@
 |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
 @75
 |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
 |}+0#e000e06&| +0#0000000&@73
 @75
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
index ef54148..bde4dbc 100644
--- a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
@@ -1,11 +1,11 @@
 |e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@68
 @75
 |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
 |}+0#e000e06&| +0#0000000&@73
 > @74
 |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
 |}+0#e000e06&| +0#0000000&@73
 |~+0#4040ff13&| @73
 |~| @73
diff --git a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump
deleted file mode 100644
index c384e74..0000000
--- a/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|f|a|l|s|e| +0#0000000&@19
-@75
-|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-@2|#+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_00.dump b/runtime/syntax/testdir/dumps/vim9_keymap_00.dump
deleted file mode 100644
index d1bc96c..0000000
--- a/runtime/syntax/testdir/dumps/vim9_keymap_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
->v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
-@75
-|#+0#0000e05&| |V|i|m| |K|e|y|m|a|p| |f|i|l|e| |f|o|r| |s|y|n|t|a|x| |t|e|s|t|i|n|g| +0#0000000&@38
-@75
-|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
-@75
-|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
-@75
-|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@64
-@75
-|#+0#0000e05&| |L|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@60
-@75
-@2|#+0#0000e05&| |A|n|o|t|h|e|r| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@50
-@75
-|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
-|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
-@75
-|#+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
-@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_01.dump b/runtime/syntax/testdir/dumps/vim9_keymap_01.dump
deleted file mode 100644
index 1d0823f..0000000
--- a/runtime/syntax/testdir/dumps/vim9_keymap_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
-|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
-@75
-|#+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
-><+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| +0#0000000&@65
-@75
-|#+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@43
-|\|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@14|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-|"| |“| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
-@1|e|n|t| +0#0000000&@70
-|:| |#| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_99.dump b/runtime/syntax/testdir/dumps/vim9_keymap_99.dump
deleted file mode 100644
index 8afcbba..0000000
--- a/runtime/syntax/testdir/dumps/vim9_keymap_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-@2|#+0#0000e05&| |A|n|o|t|h|e|r| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@50
-@75
-|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
-|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
-@75
-|#+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| +0#0000000&@65
-@75
-|#+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@43
-|\|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@14|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-|"| |“| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
-@1|e|n|t| +0#0000000&@70
->:| |#| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-@57|2|6|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_99.vim b/runtime/syntax/testdir/dumps/vim9_keymap_99.vim
deleted file mode 100644
index 546837c..0000000
--- a/runtime/syntax/testdir/dumps/vim9_keymap_99.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-" Replace known non-Latin-1 characters.
-%s+[“�]+?+ge
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
deleted file mode 100644
index 27ff90e..0000000
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|(+0#e000e06&|'+0#e000002&|v|i|m|9|s|c|r|i|p|t|'|)+0#e000e06&| +0#0000000&@53
-@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
-@2|s+0#af5f00255&|o|u|r|c|e| +0#0000000&|f|o@1|.+0#af5f00255&|v|i|m| +0#0000000&@58
-@2|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@66
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-|v+0#af5f00255&|i|m|9|s|c|r|i|p|t| +0#0000000&|n+0#e000e06&|o|c|l|e|a|r| +0#0000000&@56
-@75
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-@1|#+0#0000e05&| |s|t|r|i|n|g| |o|n|l|y| |r|e|c|o|g|n|i|s|e|d| |w|i|t|h| |l|e|a|d|i|n|g| |c|h|a|r| +0#0000000&@31
-@1>"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@57
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|6|,|2| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
deleted file mode 100644
index fe339c4..0000000
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| |1@1| |l|i|n|e|s|:| |"| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"|H|"| ||| |s|e|t| |f|d|m|=|s|y|n|t|a|x|-
-|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&|n+0#e000e06&|o|c|l|e|a|r| +0#0000000&@56
-@75
-|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
-@75
-@1|#+0#0000e05&| |s|t|r|i|n|g| |o|n|l|y| |r|e|c|o|g|n|i|s|e|d| |w|i|t|h| |l|e|a|d|i|n|g| |c|h|a|r| +0#0000000&@31
-@1>"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@57
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|7|,|2| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim9_shebang_99.dump b/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
deleted file mode 100644
index 71f543e..0000000
--- a/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
-|v+0#af5f00255&|i|m|9|s|c|r|i|p|t| +0#0000000&@64
-@75
-|#+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
-@75
-|#+0#0000e05&| |j|u|s|t| |a| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@53
->#+0#0000e05&|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_comment_03.dump b/runtime/syntax/testdir/dumps/vim_comment_03.dump
index 2d40f6c..70c9519 100644
--- a/runtime/syntax/testdir/dumps/vim_comment_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_03.dump
@@ -2,7 +2,7 @@
 |"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
 @75
 |i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
+@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#af5f00255&|n+0#0000000&|o|f|i|l|e| ||| |r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
 @18>\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
 |e+0#af5f00255&|n|d|i|f| +0#0000000&@69
 @75
diff --git a/runtime/syntax/testdir/dumps/vim_comment_99.dump b/runtime/syntax/testdir/dumps/vim_comment_99.dump
deleted file mode 100644
index bb1fbb0..0000000
--- a/runtime/syntax/testdir/dumps/vim_comment_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
-@75
-|i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|x|i|s|t|s|(+0#e000e06&|"+0#e000002&|:|D|i|f@1|O|r|i|g|"|)+0#e000e06&| +0#0000000&@51
-@2|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|D|i|f@1|O|r|i|g| |v+0#af5f00255&|e|r|t| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|t|=+0#0000000&|n|o|f|i|l|e| ||+0#af5f00255&| +0#0000000&|r+0#af5f00255&| +0#0000000&|++0#af5f00255&@1|e|d|i|t| +0#0000000&|#| ||| |0+0#e000002&|d+0#0000000&|_| ||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@1
-@18|\+0#e000e06&| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&|p+0#af5f00255&| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@33
-|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@75
-@75
-|"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1@1|3|0|7| |a|n|d| |#|1@1|5|6|0| +0#0000000&@48
-@75
-|"+0#0000e05&| |T|h|i|s| |i|s| |w|h|a|t| |w|e| |c|a|l@1| |"| |b|l|a|h| +0#0000000&@45
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#| |#|9|5|8|7| +0#0000000&@59
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|C|o|m@1|e|n|t|T|i|t|l|e|(+0#e000e06&|)| +0#0000000&@56
-| +0#0000e05&@1|#| |T|i|t|l|e|:| |.@2| +0#0000000&@60
->e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@57|6|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump b/runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump
deleted file mode 100644
index 7622ebf..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_abbreviate_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|a+0#af5f00255#ffffff0|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| |f|o@1|b|a|r| @41
-|c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| |c|f|o@1|b|a|r| @38
-|i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @38
-@75
-|n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| |f|o@1|b|a|r| @44
-|c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| |c|f|o@1|b|a|r| @41
-|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @41
-@75
-|a+0#af5f00255&|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| |f|o@1|b|a|r| @41
-|c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| |c|f|o@1|b|a|r| @38
-|i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|e|x|p|r|>| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| |c|f|o@1|b|a|r| @38
-@75
-|u+0#af5f00255&|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|f|o@1| @53
-|c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|c|f|o@1| @51
-|i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|i|f|o@1| @51
-@75
-|a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@58
-|c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@57
->i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@57
-@57|2|5|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump b/runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump
deleted file mode 100644
index 1e07f5b..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_augroup_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|a|u|g|r|o|u|p| |c|o|m@1|a|n|d| +0#0000000&@52
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|f|o@1| @63
-@2|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@41
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @63
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|f|o@1| ||| |a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @38
-|a+0#af5f00255&|u|g|r|o|u|p|!| +0#0000000&|f|o@1| @62
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|!|@|#|$|%|^|&|*|(|)|_|+| @54
-@2|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|R|e|a|d| +0#0000000&|*| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@41
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @63
-@75
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|!|@|#|$|%|^|&|*|(|)|_|+| ||| |a+0#af5f00255&|u|t|o|c|m|d|!| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @29
-|a+0#af5f00255&|u|g|r|o|u|p|!| +0#0000000&|!|@|#|$|%|^|&|*|(|)|_|+| @53
-@75
-|"+0#0000e05&| |l|i|s|t| |g|r|o|u|p|s| +0#0000000&@61
-|a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&@67
-> @74
-@57|1|9|,|0|-|1| @7|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump b/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
deleted file mode 100644
index c3fefeb..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_behave_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |b|e|h|a|v|e| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@62
-|b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@62
-@75
-|b+0#af5f00255&|e|h|a|v|e|!| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@61
->b+0#af5f00255&|e|h|a|v|e|!| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@61
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|7|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_00.dump b/runtime/syntax/testdir/dumps/vim_ex_call_00.dump
new file mode 100644
index 0000000..117f159
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|c|a|l@1| |c|o|m@1|a|n|d| +0#0000000&@55
+@75
+@75
+|"+0#0000e05&| |f|u|n|c|t|i|o|n|s| |f|o|r| |w|h|i|c|h| |t|h|e|r|e| |a|r|e| |s|a|m|e|-|n|a|m|e|d| |E|x| |c|o|m@1|a|n|d|s| +0#0000000&@20
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|b+0#00e0e07&|r|o|w|s|e|(+0#e000e06&|s+0#00e0e07&|a|v|e|,+0#0000000&| |t+0#00e0e07&|i|t|l|e|,+0#0000000&| |i+0#00e0e07&|n|i|t|d|i|r|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|)+0#e000e06&| +0#0000000&@32
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|a|l@1|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|h|d|i|r|(+0#e000e06&|d+0#00e0e07&|i|r|)+0#e000e06&| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m|(+0#e000e06&|m+0#00e0e07&|s|g|,+0#0000000&| |c+0#00e0e07&|h|o|i|c|e|s|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|,+0#0000000&| |t+0#00e0e07&|y|p|e|)+0#e000e06&| +0#0000000&@33
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|p|y|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|d+0#00e0e07&|e|l|e|t|e|(+0#e000e06&|f+0#00e0e07&|n|a|m|e|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|v|a|l|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|x|e|c|u|t|e|(+0#e000e06&|c+0#00e0e07&|o|m@1|a|n|d|)+0#e000e06&| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|u|n|c|t|i|o|n|(+0#e000e06&|n+0#00e0e07&|a|m|e|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@40
+|c+0#af5f00255&|a|l@1| +0#0000000&|i+0#00e0e07&|n|s|e|r|t|(+0#e000e06&|o+0#00e0e07&|b|j|e|c|t|,+0#0000000&| |i+0#00e0e07&|t|e|m|,+0#0000000&| |i+0#00e0e07&|d|x|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|j+0#00e0e07&|o|i|n|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |s+0#00e0e07&|e|p|)+0#e000e06&| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|e+0#00e0e07&|x|p|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|t|a|r|t|,+0#0000000&| |c+0#00e0e07&|o|u|n|t|)+0#e000e06&| +0#0000000&@39
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_01.dump b/runtime/syntax/testdir/dumps/vim_ex_call_01.dump
new file mode 100644
index 0000000..a32e79e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_01.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|f+0#00e0e07&|i|l|t|e|r|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|u|n|c|t|i|o|n|(+0#e000e06&|n+0#00e0e07&|a|m|e|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@40
+|c+0#af5f00255&|a|l@1| +0#0000000&|i+0#00e0e07&|n|s|e|r|t|(+0#e000e06&|o+0#00e0e07&|b|j|e|c|t|,+0#0000000&| |i+0#00e0e07&|t|e|m|,+0#0000000&| |i+0#00e0e07&|d|x|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|j+0#00e0e07&|o|i|n|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |s+0#00e0e07&|e|p|)+0#e000e06&| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|e+0#00e0e07&|x|p|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|t|a|r|t|,+0#0000000&| |c+0#00e0e07&|o|u|n|t|)+0#e000e06&| +0#0000000&@39
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|o|d|e|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|o|r|t|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |h+0#00e0e07&|o|w|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|p|l|i|t|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|,+0#0000000&| |p+0#00e0e07&|a|t@1|e|r|n|,+0#0000000&| |k+0#00e0e07&|e@1|p|e|m|p|t|y|)+0#e000e06&| +0#0000000&@36
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@37
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|w|a|p|n|a|m|e|(+0#e000e06&|b+0#00e0e07&|u|f|)+0#e000e06&| +0#0000000&@56
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|b+0#00e0e07&|r|o|w|s|e| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|a|v|e|,+0#0000000&| |t+0#00e0e07&|i|t|l|e|,+0#0000000&| |i+0#00e0e07&|n|i|t|d|i|r|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|)+0#e000e06&| +0#0000000&@31
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|a|l@1| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@43
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|h|d|i|r| +0#0000000&|(+0#e000e06&|d+0#00e0e07&|i|r|)+0#e000e06&| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|n|f|i|r|m| +0#0000000&|(+0#e000e06&|m+0#00e0e07&|s|g|,+0#0000000&| |c+0#00e0e07&|h|o|i|c|e|s|,+0#0000000&| |d+0#00e0e07&|e|f|a|u|l|t|,+0#0000000&| |t+0#00e0e07&|y|p|e|)+0#e000e06&| +0#0000000&@32
+|c+0#af5f00255&|a|l@1| +0#0000000&|c+0#00e0e07&|o|p|y| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|d+0#00e0e07&|e|l|e|t|e| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|n|a|m|e|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|v|a|l| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@56
+@57|1|9|,|1| @9|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_02.dump b/runtime/syntax/testdir/dumps/vim_ex_call_02.dump
new file mode 100644
index 0000000..7306304
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_02.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|e+0#00e0e07&|v|a|l| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|)+0#e000e06&| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|e+0#00e0e07&|x|e|c|u|t|e| +0#0000000&|(+0#e000e06&|c+0#00e0e07&|o|m@1|a|n|d|)+0#e000e06&| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|i|l|t|e|r| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|f+0#00e0e07&|u|n|c|t|i|o|n| +0#0000000&|(+0#e000e06&|n+0#00e0e07&|a|m|e|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@39
+|c+0#af5f00255&|a|l@1| +0#0000000&|i+0#00e0e07&|n|s|e|r|t| +0#0000000&|(+0#e000e06&|o+0#00e0e07&|b|j|e|c|t|,+0#0000000&| |i+0#00e0e07&|t|e|m|,+0#0000000&| |i+0#00e0e07&|d|x|)+0#e000e06&| +0#0000000&@43
+>c+0#af5f00255&|a|l@1| +0#0000000&|j+0#00e0e07&|o|i|n| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |s+0#00e0e07&|e|p|)+0#e000e06&| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|1|,+0#0000000&| |e+0#00e0e07&|x|p|r|2|)+0#e000e06&| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|t|a|r|t|,+0#0000000&| |c+0#00e0e07&|o|u|n|t|)+0#e000e06&| +0#0000000&@38
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|o|d|e| +0#0000000&|(+0#e000e06&|e+0#00e0e07&|x|p|r|)+0#e000e06&| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|o|r|t| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |h+0#00e0e07&|o|w|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@47
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|p|l|i|t| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|i|n|g|,+0#0000000&| |p+0#00e0e07&|a|t@1|e|r|n|,+0#0000000&| |k+0#00e0e07&|e@1|p|e|m|p|t|y|)+0#e000e06&| +0#0000000&@35
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|u|b|s|t|i|t|u|t|e| +0#0000000&|(+0#e000e06&|s+0#00e0e07&|t|r|,+0#0000000&| |p+0#00e0e07&|a|t|,+0#0000000&| |s+0#00e0e07&|u|b|,+0#0000000&| |f+0#00e0e07&|l|a|g|s|)+0#e000e06&| +0#0000000&@36
+|c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|w|a|p|n|a|m|e| +0#0000000&|(+0#e000e06&|b+0#00e0e07&|u|f|)+0#e000e06&| +0#0000000&@55
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@64
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|r|g|1|)+0#e000e06&| +0#0000000&@60
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|a+0#00e0e07&|r|g|1|,+0#0000000&| |a+0#00e0e07&|r|g|2|)+0#e000e06&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|r+0#00e0e07&|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|a|l@1|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@39
+@57|3|7|,|1| @9|9|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_call_03.dump b/runtime/syntax/testdir/dumps/vim_ex_call_03.dump
new file mode 100644
index 0000000..857f319
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_call_03.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|r+0#00e0e07&|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|a|l@1|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@39
+>l+0#af5f00255&|e|t| +0#0000000&|r+0#00e0e07&|e|s| +0#0000000&|=+0#af5f00255&| +0#0000000&|c+0#00e0e07&|a|l@1| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|u|n|c|,+0#0000000&| |a+0#00e0e07&|r|g|l|i|s|t|,+0#0000000&| |d+0#00e0e07&|i|c|t|)+0#e000e06&| +0#0000000&@38
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump b/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump
deleted file mode 100644
index 39e47c1..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|c|a|t|c|h| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|"+0#0000e05&| |:|h|e|l|p| |:|c|a|t|c|h| +0#0000000&@60
-@75
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|:|I|n|t|e|r@1|u|p|t|$|/+0#e000e06&| +0#0000000&@8|"+0#0000e05&| |c|a|t|c|h| |i|n|t|e|r@1|u|p|t|s| |(|C|T|R|L|-|C|)| +0#0000000&@15
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|\+0#e000e06&|%|(|(+0#0000000&|\|a|\|+|)|\+0#e000e06&|)|\+0#0000000&|=|:|E|/+0#e000e06&| +0#0000000&@4|"+0#0000e05&| |c|a|t|c|h| |a|l@1| |V|i|m| |e|r@1|o|r|s| +0#0000000&@20
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|\+0#e000e06&|%|(|(+0#0000000&|\|a|\|+|)|\+0#e000e06&|)|\+0#0000000&|=|:|/+0#e000e06&| +0#0000000&@5|"+0#0000e05&| |c|a|t|c|h| |e|r@1|o|r|s| |a|n|d| |i|n|t|e|r@1|u|p|t|s| +0#0000000&@13
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|(|w|r|i|t|e|)|:|/+0#e000e06&| +0#0000000&@11|"+0#0000e05&| |c|a|t|c|h| |a|l@1| |e|r@1|o|r|s| |i|n| |:|w|r|i|t|e| +0#0000000&@14
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|\+0#e000e06&|%|(|(+0#0000000&|\|a|\|+|)|\+0#e000e06&|)|\+0#0000000&|=|:|E|1|2|3|:|/+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|a|t|c|h| |e|r@1|o|r| |E|1|2|3| +0#0000000&@24
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|m+0#0000000&|y|-|e|x|c|e|p|t|i|o|n|/+0#e000e06&| +0#0000000&@11|"+0#0000e05&| |c|a|t|c|h| |u|s|e|r| |e|x|c|e|p|t|i|o|n| +0#0000000&@20
-|c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|.+0#0000000&|*|/+0#e000e06&| +0#0000000&@21|"+0#0000e05&| |c|a|t|c|h| |e|v|e|r|y|t|h|i|n|g| +0#0000000&@24
-|c+0#af5f00255&|a|t|c|h| +0#0000000&@26|"+0#0000e05&| |s|a|m|e| |a|s| |/|.|*|/| +0#0000000&@28
-@75
-|"+0#0000e05&| |:|h|e|l|p| |:|t|r|y| +0#0000000&@62
-@75
-|t+0#af5f00255&|r|y| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&|1+0#e000002&|0@1| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|:|I|n|t|e|r@1|u|p|t|$|/+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@24
->t+0#af5f00255&|r|y| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|V|i|m|(|e|d|i|t|)|:|E|\|d|\|+|/+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|e|r@1|o|r|"| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@13
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|7|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_command_99.dump b/runtime/syntax/testdir/dumps/vim_ex_command_99.dump
deleted file mode 100644
index 96cfa16..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_command_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|c|o|m@1|a|n|d| |c|o|m@1|a|n|d| +0#0000000&@52
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|4|1|3|5| +0#0000000&@60
-@75
->c+0#af5f00255&|o|m| +0#0000000&|F|o@1| |c+0#af5f00255&|a|l@1| +0#0000000&|s+0#00e0e07&|y|s|t|e|m|(+0#0000000&|'+0#e000002&|l|s|'|)+0#0000000&| @49
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump
index f280535..fa7c153 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_05.dump
@@ -13,8 +13,8 @@
 |:|c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@64
 |:|c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@64
 |:|c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
-|:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
 |:|c+0#af5f00255&|l|a|s|t| +0#0000000&@68
 |:|c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@63
 |:|c+0#af5f00255&|l|i|s|t| +0#0000000&@68
+|:|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
 @57|9|1|,|1| @10|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump
index 1e7b7b5..d17f509 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_06.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|c+0#af5f00255&|l|i|s|t| +0#0000000&@68
-|:|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
+|:+0&#ffffff0|c+0#af5f00255&|l|o|s|e| +0#0000000&@68
 |:|c+0#af5f00255&|m|a|p| +0#0000000&@69
 |:|c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
 |:|c+0#af5f00255&|m|e|n|u| +0#0000000&@68
->:|c+0#af5f00255&|n|e|x|t| +0#0000000&@68
-|:|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+|:|c+0#af5f00255&|n|e|x|t| +0#0000000&@68
+>:|c+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
 |:|c+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
 |:|c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
 |:|c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
@@ -17,4 +16,5 @@
 |:|c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@65
 |:|c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@65
 |:|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@66
+|:|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
 @57|1|0|9|,|1| @9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump
index e5f9736..f35762b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_07.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@66
-|:|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
+|:+0&#ffffff0|c+0#af5f00255&|o|n|s|t| +0#0000000&@68
 |:|c+0#af5f00255&|o|p|e|n| +0#0000000&@68
 |:|c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
 |:|c+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
->:|c+0#af5f00255&|q|u|i|t| +0#0000000&@68
-|:|c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|c+0#af5f00255&|q|u|i|t| +0#0000000&@68
+>:|c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
 |:|c+0#af5f00255&|s|c|o|p|e| +0#0000000&@67
 |:|c+0#af5f00255&|s|t|a|g| +0#0000000&@68
 |:|c+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
@@ -17,4 +16,5 @@
 |:|d+0#af5f00255&|e|f| +0#0000000&@70
 |:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
 |:|d+0#af5f00255&|e|f|e|r| +0#0000000&@68
+|:|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
 @57|1|2|7|,|1| @8|1|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump
index 2f41043..49fabab 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_08.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|d+0#af5f00255&|e|f|e|r| +0#0000000&@68
-|:|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
+|:+0&#ffffff0|d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@63
 |:|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@62
 |:|d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@65
 |:|d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@63
->:|d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@66
-|:|d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@66
+|:|d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@66
+>:|d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@66
 |:|d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@64
 |:|d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@66
 |:|d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@64
@@ -17,4 +16,5 @@
 |:|d+0#af5f00255&|l|i|s|t| +0#0000000&@68
 |:|d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
 |:|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@64
+|:|d+0#af5f00255&|p| +0#0000000&@71
 @57|1|4|5|,|1| @8|1@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump
index ffe0524..b38d066 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_09.dump
@@ -1,10 +1,9 @@
-|:+0&#ffffff0|d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@64
-|:|d+0#af5f00255&|p| +0#0000000&@71
+|:+0&#ffffff0|d+0#af5f00255&|p| +0#0000000&@71
 |:|d+0#af5f00255&|r|o|p| +0#0000000&@69
 |:|d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
 |:|d+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
->:|e+0#af5f00255&|d|i|t| +0#0000000&@69
-|:|e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@66
+|:|e+0#af5f00255&|d|i|t| +0#0000000&@69
+>:|e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@66
 |:|e+0#af5f00255&|c|h|o| +0#0000000&@69
 |:|e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@62
 |:|e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@66
@@ -15,6 +14,7 @@
 |:|e+0#af5f00255&|l|s|e| +0#0000000&@69
 |:|e+0#af5f00255&|l|s|e|i|f| +0#0000000&@67
 |:|e+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
 |:|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
+|:|e+0#af5f00255&|n|d|i|f| +0#0000000&@68
+|:|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
 @57|1|6|3|,|1| @8|1|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump
index 22b28eb..3fb760c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_10.dump
@@ -1,15 +1,12 @@
-|:+0&#ffffff0|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@67
-|:|e+0#af5f00255&|n|d|i|f| +0#0000000&@68
-|:|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
+|:+0&#ffffff0|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@67
 |:|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@62
 |:|e+0#af5f00255&|n|d|t|r|y| +0#0000000&@67
->:|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@65
+|:|e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@65
 |:|e+0#af5f00255&|n|e|w| +0#0000000&@69
-|:|e+0#af5f00255&|v|a|l| +0#0000000&@69
+>:|e+0#af5f00255&|v|a|l| +0#0000000&@69
 |:|e+0#af5f00255&|x| +0#0000000&@71
 |:|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@66
 |:|e+0#af5f00255&|x|i|t| +0#0000000&@69
-|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
 |:|e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@66
 |:|f+0#af5f00255&|i|l|e| +0#0000000&@69
 |:|f+0#af5f00255&|i|l|e|s| +0#0000000&@68
@@ -17,4 +14,7 @@
 |:|f+0#af5f00255&|i|l|t|e|r| +0#0000000&@67
 |:|f+0#af5f00255&|i|n|d| +0#0000000&@69
 |:|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
+|:|f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@66
+|:|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@67
+|:|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
 @57|1|8|1|,|1| @8|1|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
index 7b9a19f..fda4e8f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_11.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
-|:|f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@66
-|:|f+0#af5f00255&|i|n|i|s|h| +0#0000000&@67
-|:|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
+|:+0&#ffffff0|f+0#af5f00255&|i|r|s|t| +0#0000000&@68
 |:|f+0#af5f00255&|i|x|d|e|l| +0#0000000&@67
->:|f+0#af5f00255&|o|l|d| +0#0000000&@69
+|:|f+0#af5f00255&|o|l|d| +0#0000000&@69
 |:|f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@64
 |:|f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@63
-|:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
+>:|f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@61
 |:|f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@65
 |:|f+0#af5f00255&|o|r| +0#0000000&@70
 |:|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@65
@@ -17,4 +14,7 @@
 |:|g+0#af5f00255&|u|i| +0#0000000&@70
 |:|g+0#af5f00255&|v|i|m| +0#0000000&@69
 |:|h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p| +0#0000000&@69
+|:|h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@64
+|:|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
 @57|1|9@1|,|1| @8|1|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump
index 03c5b96..3cbc546 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_12.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@65
-|:|h+0#af5f00255&|e|l|p| +0#0000000&@69
-|:|h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@64
-|:|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
+|:+0&#ffffff0|h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@65
 |:|h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@65
->:|h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@65
+|:|h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@65
 |:|h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@64
 |:|h+0#af5f00255&|i|d|e| +0#0000000&@69
-|:|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@66
+>:|h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@66
 |:|h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@63
 |:+0#af5f00255&|i|n|s|e|r|t| +0#0000000&@67
 | +0#e000002&@3|t|e|x|t| +0#0000000&@66
@@ -17,4 +14,7 @@
 |:|i+0#af5f00255&|j|u|m|p| +0#0000000&@68
 |:|i+0#af5f00255&|l|i|s|t| +0#0000000&@68
 |:|i+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|i+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
 @57|2|1|7|,|1| @8|1|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump
index 5671882..cc114cf 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_13.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|i+0#af5f00255&|m|a|p| +0#0000000&@69
-|:|i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-|:|i+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
+|:+0&#ffffff0|i+0#af5f00255&|m|p|o|r|t| +0#0000000&@67
 |:|i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
->:|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
+|:|i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@62
 |:|i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
 |:|i+0#af5f00255&|n|t|r|o| +0#0000000&@68
-|:|i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
+>:|i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
 |:|i+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
 |:|i+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
 |:|i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@64
@@ -17,4 +14,7 @@
 |:|k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@66
 |:|k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@64
 |:|k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@64
+|:|k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@61
+|:|l+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
 @57|2|3|5|,|1| @8|1|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump
index 1442dfd..9834f72 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_14.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@64
-|:|k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@61
-|:|l+0#af5f00255&|N|e|x|t| +0#0000000&@68
-|:|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
+|:+0&#ffffff0|l+0#af5f00255&|N|f|i|l|e| +0#0000000&@67
 |:|l+0#af5f00255&|i|s|t| +0#0000000&@69
->:|l+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
+|:|l+0#af5f00255&|a|b|o|v|e| +0#0000000&@67
 |:|l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@65
 |:|l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@63
-|:|l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
+>:|l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@65
 |:|l+0#af5f00255&|a|f|t|e|r| +0#0000000&@67
 |:|l+0#af5f00255&|a|s|t| +0#0000000&@69
 |:|l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@65
@@ -17,4 +14,7 @@
 |:|l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
 |:|l+0#af5f00255&|c|d| +0#0000000&@70
 |:|l+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-@57|2|5|3|,|1| @8|2|1|%| 
+|:|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
+|:|l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
+|:|l+0#af5f00255&|d|o| +0#0000000&@70
+@57|2|5|3|,|1| @8|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump
index d72931b..97c287a 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_15.dump
@@ -1,12 +1,9 @@
-|:+0&#ffffff0|l+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-|:|l+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
-|:|l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
-|:|l+0#af5f00255&|d|o| +0#0000000&@70
+|:+0&#ffffff0|l+0#af5f00255&|d|o| +0#0000000&@70
 |:|l+0#af5f00255&|f|d|o| +0#0000000&@69
->:|l+0#af5f00255&|e|f|t| +0#0000000&@69
+|:|l+0#af5f00255&|e|f|t| +0#0000000&@69
 |:|l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@64
 |:|l+0#af5f00255&|e|g|a|c|y| +0#0000000&@67
-|:|l+0#af5f00255&|e|t| +0#0000000&@70
+>:|l+0#af5f00255&|e|t| +0#0000000&@70
 |:|l+0#af5f00255&|e|x|p|r| +0#0000000&@68
 |:|l+0#af5f00255&|f|i|l|e| +0#0000000&@68
 |:|l+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
@@ -17,4 +14,7 @@
 |:|l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@65
 |:|l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@64
 |:|l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
+|:|l+0#af5f00255&@1| +0#0000000&@71
+|:|l+0#af5f00255&@1|a|s|t| +0#0000000&@68
+|:|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
 @57|2|7|1|,|1| @8|2@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump
index 31d88a6..cd1fb67 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_16.dump
@@ -1,15 +1,12 @@
-|:+0&#ffffff0|l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@65
-|:|l+0#af5f00255&@1| +0#0000000&@71
-|:|l+0#af5f00255&@1|a|s|t| +0#0000000&@68
-|:|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
+|:+0&#ffffff0|l+0#af5f00255&@1|i|s|t| +0#0000000&@68
 |:|l+0#af5f00255&|m|a|k|e| +0#0000000&@68
->:|l+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|l+0#af5f00255&|m|a|p| +0#0000000&@69
 |:|l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
 |:|l+0#af5f00255&|n|e|x|t| +0#0000000&@68
-|:|l+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
+>:|l+0#af5f00255&|n|e|w|e|r| +0#0000000&@67
 |:|l+0#af5f00255&|n|f|i|l|e| +0#0000000&@67
 |:|l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
-|:|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@63
+|"+0#0000e05&| |:|l|o|a|d|k|e|y|m|a|p| |"| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@33
 |:|l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@65
 |:|l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@64
 |:|l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@66
@@ -17,4 +14,7 @@
 |:|l+0#af5f00255&|o|p|e|n| +0#0000000&@68
 |:|l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
 |:|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
-@57|2|8|9|,|1| @8|2|4|%| 
+|:|l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|l+0#af5f00255&|s| +0#0000000&@71
+|:|l+0#af5f00255&|t|a|g| +0#0000000&@69
+@57|2|8|9|,|1| @8|2|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump
index 58d654d..38631f0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_17.dump
@@ -1,20 +1,20 @@
-|:+0&#ffffff0|l+0#af5f00255&|p|f|i|l|e| +0#0000000&@67
-|:|l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
-|:|l+0#af5f00255&|s| +0#0000000&@71
-|:|l+0#af5f00255&|t|a|g| +0#0000000&@69
+|:+0&#ffffff0|l+0#af5f00255&|t|a|g| +0#0000000&@69
 |:|l+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
->:|l+0#af5f00255&|u|a| +0#0000000&@70
+|:|l+0#af5f00255&|u|a| +0#0000000&@70
 |:|l+0#af5f00255&|u|a|d|o| +0#0000000&@68
 |:|l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@66
-|:|l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@65
+>:|l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@65
 |:|l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@62
 |:|l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@66
 |:|m+0#af5f00255&|o|v|e| +0#0000000&@69
 |:|m+0#af5f00255&|a|r|k| +0#0000000&@69
 |:|m+0#af5f00255&|a|k|e| +0#0000000&@69
-|"+0#0000e05&| |r|e|q|u|i|r|e|s| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| |t|o| |d|i|s|t|i|n|g|u|i|s|h| |f|r|o|m| |m|a|p|(|)| +0#0000000&@18
 |:|m+0#af5f00255&|a|p| +0#0000000&@70
 |:|m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@65
 |:|m+0#af5f00255&|a|r|k|s| +0#0000000&@68
 |:|m+0#af5f00255&|a|t|c|h| +0#0000000&@68
+|:|m+0#af5f00255&|e|n|u| +0#0000000&@69
+|:|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@60
+|:|m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@65
+|:|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
 @57|3|0|7|,|1| @8|2|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump
index a2539b5..87e4bbe 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_18.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|m+0#af5f00255&|a|t|c|h| +0#0000000&@68
-|:|m+0#af5f00255&|e|n|u| +0#0000000&@69
-|:|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@60
-|:|m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@65
-|:|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
->:|m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@64
+|:+0&#ffffff0|m+0#af5f00255&|k|e|x|r|c| +0#0000000&@67
+|:|m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@64
 |:|m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@66
 |:|m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@66
 |:|m+0#af5f00255&|k|v|i|e|w| +0#0000000&@67
-|:|m+0#af5f00255&|o|d|e| +0#0000000&@69
+>:|m+0#af5f00255&|o|d|e| +0#0000000&@69
 |:|m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@65
 |:|m+0#af5f00255&|z|f|i|l|e| +0#0000000&@67
 |:|n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@66
@@ -17,4 +13,8 @@
 |:|n+0#af5f00255&|e|w| +0#0000000&@70
 |:|n+0#af5f00255&|m|a|p| +0#0000000&@69
 |:|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-@57|3|2|5|,|1| @8|2|7|%| 
+|:|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@65
+|:|n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@64
+|:|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+@57|3|2|5|,|1| @8|2|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump
index b7f7203..595230c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_19.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-|:|n+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@65
-|:|n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@64
-|:|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
->:|n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@66
+|:+0&#ffffff0|n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@64
+|:|n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@66
 |:|n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@63
 |:|n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@63
 |:|n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@65
-|:|n+0#af5f00255&|o|r|m|a|l| +0#0000000&@67
+>:|n+0#af5f00255&|o|r|m|a|l| +0#0000000&@67
 |:|n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@63
 |:|n+0#af5f00255&|u|m|b|e|r| +0#0000000&@67
 |:|n+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
@@ -17,4 +13,8 @@
 |:|o+0#af5f00255&|m|a|p| +0#0000000&@69
 |:|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
 |:|o+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|o+0#af5f00255&|n|l|y| +0#0000000&@69
+|:|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
 @57|3|4|3|,|1| @8|2|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump
index cedd6ab..a78314f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_20.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|o+0#af5f00255&|m|e|n|u| +0#0000000&@68
-|:|o+0#af5f00255&|n|l|y| +0#0000000&@69
-|:|o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
-|:|o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-|:|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
->:|o+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:+0&#ffffff0|o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@66
+|:|o+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
 |:|o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
 |:|o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@64
 |:|p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@66
-|:|p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@62
+>:|p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@62
 |:|p+0#af5f00255&|c|l|o|s|e| +0#0000000&@67
 |:|p+0#af5f00255&|e|d|i|t| +0#0000000&@68
 |:|p+0#af5f00255&|e|r|l| +0#0000000&@69
@@ -17,4 +13,8 @@
 |:|p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@63
 |:|p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@63
 |:|p+0#af5f00255&|e|r|l|d|o| +0#0000000&@67
-@57|3|6|1|,|1| @8|3|0|%| 
+|:|p+0#af5f00255&|o|p| +0#0000000&@70
+|:|p+0#af5f00255&|o|p|u|p| +0#0000000&@68
+|:|p+0#af5f00255&@1|o|p| +0#0000000&@69
+|:|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
+@57|3|6|1|,|1| @8|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump
index b81c5ee..41608a3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_21.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|p+0#af5f00255&|e|r|l|d|o| +0#0000000&@67
-|:|p+0#af5f00255&|o|p| +0#0000000&@70
-|:|p+0#af5f00255&|o|p|u|p| +0#0000000&@68
-|:|p+0#af5f00255&@1|o|p| +0#0000000&@69
-|:|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
->:|p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@65
+|:+0&#ffffff0|p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@65
+|:|p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@65
 |:|p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@66
 |:|p+0#af5f00255&|t|a|g| +0#0000000&@69
 |:|p+0#af5f00255&|t|N|e|x|t| +0#0000000&@67
-|:|p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@66
+>:|p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@66
 |:|p+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
 |:|p+0#af5f00255&|t|l|a|s|t| +0#0000000&@67
 |:|p+0#af5f00255&|t|n|e|x|t| +0#0000000&@67
@@ -17,4 +13,8 @@
 |:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
 |:|p+0#af5f00255&|u|t| +0#0000000&@70
 |:|p+0#af5f00255&|w|d| +0#0000000&@70
+|:|p+0#af5f00255&|y|3| +0#0000000&@70
+|:|p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@66
+|:|p+0#af5f00255&|y|3|d|o| +0#0000000&@68
+|:|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
 @57|3|7|9|,|1| @8|3|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump
index 5007492..b9bd8ba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_22.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|p+0#af5f00255&|w|d| +0#0000000&@70
-|:|p+0#af5f00255&|y|3| +0#0000000&@70
-|:|p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@66
-|:|p+0#af5f00255&|y|3|d|o| +0#0000000&@68
-|:|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
->:|p+0#af5f00255&|y|t|h|o|n| +0#0000000&@67
+|:+0&#ffffff0|p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@66
+|:|p+0#af5f00255&|y|t|h|o|n| +0#0000000&@67
 |:|p+0#af5f00255&|y|d|o| +0#0000000&@69
 |:|p+0#af5f00255&|y|f|i|l|e| +0#0000000&@67
 |:|p+0#af5f00255&|y|x| +0#0000000&@70
-|:|p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@66
+>:|p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@66
 |:|p+0#af5f00255&|y|x|d|o| +0#0000000&@68
 |:|p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@66
 |:|q+0#af5f00255&|u|i|t| +0#0000000&@69
@@ -17,4 +13,8 @@
 |:|r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@66
 |:|r+0#af5f00255&|e|d|o| +0#0000000&@69
 |:|r+0#af5f00255&|e|d|i|r| +0#0000000&@68
-@57|3|9|7|,|1| @8|3@1|%| 
+|:|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
+|:|r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@61
+|:|r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@60
+|:|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
+@57|3|9|7|,|1| @8|3|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump
index 6baf838..0efa896 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_23.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|r+0#af5f00255&|e|d|i|r| +0#0000000&@68
-|:|r+0#af5f00255&|e|d|r|a|w| +0#0000000&@67
-|:|r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@61
-|:|r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@60
-|:|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
->:|r+0#af5f00255&|e|s|i|z|e| +0#0000000&@67
+|:+0&#ffffff0|r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@64
+|:|r+0#af5f00255&|e|s|i|z|e| +0#0000000&@67
 |:|r+0#af5f00255&|e|t|a|b| +0#0000000&@68
 |:|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@67
 |:|r+0#af5f00255&|e|w|i|n|d| +0#0000000&@67
-|:|r+0#af5f00255&|i|g|h|t| +0#0000000&@68
+>:|r+0#af5f00255&|i|g|h|t| +0#0000000&@68
 |:|r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@63
 |:|r+0#af5f00255&|u|b|y| +0#0000000&@69
 |:|r+0#af5f00255&|u|b|y|d|o| +0#0000000&@67
@@ -17,4 +13,8 @@
 |:|r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
 |:|s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@63
 |:|s+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@66
+|:|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
+|:|s+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
 @57|4|1|5|,|1| @8|3|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump
index 4c937c2..d066eba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_24.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|N|e|x|t| +0#0000000&@68
-|:|s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@66
-|:|s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@64
-|:|s+0#af5f00255&|a|l@1| +0#0000000&@69
-|:|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
->:|s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
+|:+0&#ffffff0|s+0#af5f00255&|a|v|e|a|s| +0#0000000&@67
+|:|s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@66
 |:|s+0#af5f00255&|b|N|e|x|t| +0#0000000&@67
 |:|s+0#af5f00255&|b|a|l@1| +0#0000000&@68
 |:|s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@66
-|:|s+0#af5f00255&|b|l|a|s|t| +0#0000000&@67
+>:|s+0#af5f00255&|b|l|a|s|t| +0#0000000&@67
 |:|s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@63
 |:|s+0#af5f00255&|b|n|e|x|t| +0#0000000&@67
 |:|s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@63
@@ -17,4 +13,8 @@
 |:|s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@60
 |:|s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@66
 |:|s+0#af5f00255&|e|t| +0#0000000&@70
-@57|4|3@1|,|1| @8|3|6|%| 
+|:|s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@62
+|:|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@64
+|:|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
+|:|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
+@57|4|3@1|,|1| @8|3|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump
index 6b40f2c..3875533 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_25.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|e|t| +0#0000000&@70
-|:|s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@62
-|:|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@64
-|:|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@65
-|:|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
->:|s+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
+|:+0&#ffffff0|s+0#af5f00255&|f|i|n|d| +0#0000000&@68
+|:|s+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
 |:|s+0#af5f00255&|h|e|l@1| +0#0000000&@68
 |:|s+0#af5f00255&|i|m|a|l|t| +0#0000000&@67
 |:|s+0#af5f00255&|i|g|n| +0#0000000&@69
-|:|s+0#af5f00255&|i|l|e|n|t| +0#0000000&@67
+>:|s+0#af5f00255&|i|l|e|n|t| +0#0000000&@67
 |:|s+0#af5f00255&|l|e@1|p| +0#0000000&@68
 |:|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@67
 |:|s+0#af5f00255&|l|a|s|t| +0#0000000&@68
@@ -17,4 +13,8 @@
 |:|s+0#af5f00255&|m|e|n|u| +0#0000000&@68
 |:|s+0#af5f00255&|m|i|l|e| +0#0000000&@68
 |:|s+0#af5f00255&|n|e|x|t| +0#0000000&@68
+|:|s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:|s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
+|:|s+0#af5f00255&|o|r|t| +0#0000000&@69
 @57|4|5|1|,|1| @8|3|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump
index f388e4f..0d8a2d2 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_26.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|n|e|x|t| +0#0000000&@68
-|:|s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@65
-|:|s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
-|:|s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-|:|s+0#af5f00255&|o|r|t| +0#0000000&@69
->:|s+0#af5f00255&|o|u|r|c|e| +0#0000000&@67
+|:+0&#ffffff0|s+0#af5f00255&|o|r|t| +0#0000000&@69
+|:|s+0#af5f00255&|o|u|r|c|e| +0#0000000&@67
 |:|s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@64
 |:|s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@64
 |:|s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@64
-|:|s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@64
+>:|s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@64
 |:|s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@62
 |:|s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@64
 |:|s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@63
@@ -17,4 +13,8 @@
 |:|s+0#af5f00255&|t|o|p| +0#0000000&@69
 |:|s+0#af5f00255&|t|a|g| +0#0000000&@69
 |:|s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@62
-@57|4|6|9|,|1| @8|3|9|%| 
+|:|s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@60
+|:|s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@61
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
+@57|4|6|9|,|1| @8|3|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump
index c2bba89..448d363 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_27.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@62
-|:|s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@60
-|:|s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@61
-|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
-|:|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
->:|s+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
+|:+0&#ffffff0|s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@63
+|:|s+0#af5f00255&|t|j|u|m|p| +0#0000000&@67
 |:|s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@65
 |:|s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@66
 |:|s+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
-|:|s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+>:|s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
 |:|s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@66
 |:|s+0#af5f00255&|v|i|e|w| +0#0000000&@68
 |:|s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@65
@@ -17,4 +13,8 @@
 |:|t+0#af5f00255&| +0#0000000&@72
 |:|t+0#af5f00255&|N|e|x|t| +0#0000000&@68
 |:|t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@65
+|:|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
 @57|4|8|7|,|1| @8|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump
index f575c6f..add5257 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_28.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@66
-|:|t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@65
-|:|t+0#af5f00255&|a|b|d|o| +0#0000000&@68
-|:|t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@66
-|:|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
->:|t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@65
+|:+0&#ffffff0|t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@65
 |:|t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@66
 |:|t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@66
 |:|t+0#af5f00255&|a|b|n|e|w| +0#0000000&@67
-|:|t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@66
+>:|t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@66
 |:|t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@66
 |:|t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@62
 |:|t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@64
@@ -17,4 +13,8 @@
 |:|t+0#af5f00255&|a|g|s| +0#0000000&@69
 |:|t+0#af5f00255&|c|d| +0#0000000&@70
 |:|t+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-@57|5|0|5|,|1| @8|4|2|%| 
+|:|t+0#af5f00255&|c|l| +0#0000000&@70
+|:|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
+|:|t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@66
+|:|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
+@57|5|0|5|,|1| @8|4|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump
index 261cf89..d5e29e4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_29.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|t+0#af5f00255&|c|h|d|i|r| +0#0000000&@67
-|:|t+0#af5f00255&|c|l| +0#0000000&@70
-|:|t+0#af5f00255&|c|l|d|o| +0#0000000&@68
-|:|t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@66
-|:|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
->:|t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@65
+|:+0&#ffffff0|t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@66
+|:|t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@65
 |:|t+0#af5f00255&|f|i|r|s|t| +0#0000000&@67
 |:|t+0#af5f00255&|h|r|o|w| +0#0000000&@68
 |:|t+0#af5f00255&|j|u|m|p| +0#0000000&@68
-|:|t+0#af5f00255&|l|a|s|t| +0#0000000&@68
+>:|t+0#af5f00255&|l|a|s|t| +0#0000000&@68
 |:|t+0#af5f00255&|l|m|e|n|u| +0#0000000&@67
 |:|t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@63
 |:|t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@65
@@ -17,4 +13,8 @@
 |:|t+0#af5f00255&|n|e|x|t| +0#0000000&@68
 |:|t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
 |:|t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@66
+|:|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
+|:|t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
+|:|t+0#af5f00255&|r|y| +0#0000000&@70
+|:|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
 @57|5|2|3|,|1| @8|4|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump
index d00225d..89aa266 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_30.dump
@@ -1,13 +1,9 @@
-|:+0&#ffffff0|t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@66
-|:|t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
-|:|t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@66
-|:|t+0#af5f00255&|r|y| +0#0000000&@70
-|:|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
->:|t+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:+0&#ffffff0|t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@66
+|:|t+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
 |:|t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
 |:|u+0#af5f00255&|n|d|o| +0#0000000&@69
 |:|u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@65
-|:|u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@65
+>:|u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@65
 |:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
 |:|u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@61
 |:|u+0#af5f00255&|n|h|i|d|e| +0#0000000&@67
@@ -17,4 +13,8 @@
 |:|u+0#af5f00255&|n|m|e|n|u| +0#0000000&@67
 |:|u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@65
 |:|u+0#af5f00255&|p|d|a|t|e| +0#0000000&@67
-@57|5|4|1|,|1| @8|4|5|%| 
+|:|v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@61
+|:|v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@66
+|:|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
+@57|5|4|1|,|1| @8|4@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump
index 3711988..6aab2b3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_31.dump
@@ -1,15 +1,9 @@
-|:+0&#ffffff0|u+0#af5f00255&|p|d|a|t|e| +0#0000000&@67
-|:|v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@61
-|:|v+0#af5f00255&|a|r| +0#0000000&@70
-|:|v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@66
-|:|v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@66
->:|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
+|:+0&#ffffff0|v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@65
 |:|v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@66
-|"+0#0000e05&| |:|v|i|m|9|s|c|r|i|p|t| +0#0000000&@61
 |:|v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@66
 |:|v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@63
 |:|v+0#af5f00255&|i|s|u|a|l| +0#0000000&@67
-|:|v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@66
+>:|v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@66
 |:|v+0#af5f00255&|i|e|w| +0#0000000&@69
 |:|v+0#af5f00255&|m|a|p| +0#0000000&@69
 |:|v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
@@ -17,4 +11,10 @@
 |:|v+0#af5f00255&|n|e|w| +0#0000000&@69
 |:|v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
 |:|v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-@57|5@1|9|,|1| @8|4|7|%| 
+|:|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
+|:|v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
+|:|w+0#af5f00255&|i|n|d|o| +0#0000000&@68
+|:|w+0#af5f00255&|r|i|t|e| +0#0000000&@68
+|:|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
+@57|5@1|9|,|1| @8|4|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump
index 25eecd9..9e2f45d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_32.dump
@@ -1,15 +1,9 @@
-|:+0&#ffffff0|v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
-|:|v+0#af5f00255&|s|p|l|i|t| +0#0000000&@67
-|:|v+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
-|:|v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
-|:|w+0#af5f00255&|i|n|d|o| +0#0000000&@68
->:|w+0#af5f00255&|r|i|t|e| +0#0000000&@68
-|:|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
+|:+0&#ffffff0|w+0#af5f00255&|N|e|x|t| +0#0000000&@68
 |:|w+0#af5f00255&|a|l@1| +0#0000000&@69
 |:|w+0#af5f00255&|h|i|l|e| +0#0000000&@68
 |:|w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@66
 |:|w+0#af5f00255&|i|n|c|m|d| +0#0000000&@67
-|:|w+0#af5f00255&|i|n|p|o|s| +0#0000000&@67
+>:|w+0#af5f00255&|i|n|p|o|s| +0#0000000&@67
 |:|w+0#af5f00255&|n|e|x|t| +0#0000000&@68
 |:|w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@64
 |:|w+0#af5f00255&|q| +0#0000000&@71
@@ -17,4 +11,10 @@
 |:|w+0#af5f00255&|u|n|d|o| +0#0000000&@68
 |:|w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@65
 |:|x+0#af5f00255&|i|t| +0#0000000&@70
-@57|5|7@1|,|1| @8|4|8|%| 
+|:|x+0#af5f00255&|a|l@1| +0#0000000&@69
+|:|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
+|:|x+0#af5f00255&|m|a|p| +0#0000000&@69
+|:|x+0#af5f00255&|m|e|n|u| +0#0000000&@68
+|:|x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@65
+|:|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+@57|5|7@1|,|1| @8|4|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
index 1339b80..6b423d0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_33.dump
@@ -1,15 +1,9 @@
-|:+0&#ffffff0|x+0#af5f00255&|i|t| +0#0000000&@70
-|:|x+0#af5f00255&|a|l@1| +0#0000000&@69
-|:|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@64
-|:|x+0#af5f00255&|m|a|p| +0#0000000&@69
-|:|x+0#af5f00255&|m|e|n|u| +0#0000000&@68
->:|x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@65
-|:|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
+|:+0&#ffffff0|x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@65
 |:|x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@64
 |:|x+0#af5f00255&|u|n|m|a|p| +0#0000000&@67
 |:|x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@66
 |:|y+0#af5f00255&|a|n|k| +0#0000000&@69
-|:|z+0#af5f00255&| +0#0000000&@72
+>:|z+0#af5f00255&| +0#0000000&@72
 @75
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)||+0#0000000&|h+0#af5f00255&|e|l|p| +0#0000000&@59
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@57
@@ -17,4 +11,10 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)||+0#0000000&| |h+0#af5f00255&|e|l|p| +0#0000000&@58
 @75
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |2+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
-@57|5|9|5|,|1| @8|5|0|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |3+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
+|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @55
+@4|t|e|x|t| @66
+|.+0#af5f00255&| +0#0000000&@73
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
+@57|5|9|5|,|1| @8|4|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump
index 2c442cb..ced1b52 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_34.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |2+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |3+0#af5f00255&|m|a|t|c|h| +0#0000000&@55
-|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a|p@1|e|n|d| @55
-@4|t|e|x|t| @66
->.+0#af5f00255&| +0#0000000&@73
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b@1|r|e|v|i|a|t|e| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|c|l|e|a|r| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|o|v|e|l|e|f|t| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|l@1| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|s| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|a|d@1| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|e|d|u|p|e| +0#0000000&@52
@@ -17,4 +11,10 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|e|d|i|t| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|d|o| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@52
-@57|6|1|3|,|1| @8|5|1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|s|c|i@1| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| ||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @36
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+@57|6|1|3|,|1| @8|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump
index fcc0eb0..c8fa150 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_35.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g@1|l|o|b|a|l| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|l|o|c|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|r|g|u|m|e|n|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|s|c|i@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|F|o@1| ||| |a+0#af5f00255&|u|g|r|o|u|p| +0#0000000&|E|N|D| @36
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|N|e|x|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l@1| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|d@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l|t| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|a|l|t| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|d|e|l|e|t|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|m+0#af5f00255&|s|w|i|n| +0#0000000&@49
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|e|h|a|v|e| +0#0000000&|x+0#af5f00255&|t|e|r|m| +0#0000000&@49
@@ -17,4 +11,10 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|l|a|s|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@52
-@57|6|3|1|,|1| @8|5|3|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@53
+@57|6|3|1|,|1| @8|5|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
index 816aed4..2b0c603 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_36.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|m|o|d|i|f|i|e|d| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|o|t|r|i|g|h|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|a|d@1| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|d|e|l| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|e|a|k|l|i|s|t| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|r|o|w|s|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|f@1|e|r|s| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|u|n|l|o|a|d| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |b+0#af5f00255&|w|i|p|e|o|u|t| +0#0000000&@53
 |"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
@@ -17,4 +11,10 @@
 @4|t|e|x|t| @66
 |.+0#af5f00255&| +0#0000000&@73
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@56
-@57|6|4|9|,|1| @8|5|4|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
+@57|6|4|9|,|1| @8|5|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump
index 4e7a780..83f1290 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_37.dump
@@ -1,15 +1,9 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|l@1| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|e|l|o|w| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
@@ -17,4 +11,10 @@
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&@1|l|o|s|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d| +0#0000000&@59
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d|o| +0#0000000&@58
-@57|6@1|7|,|1| @8|5|6|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|n|t|e|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|x|p|r| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|l|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
+@57|6@1|7|,|1| @8|5@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump
index 51f5a8c..0fba9d4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_38.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|d|o| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|d|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|n|t|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|e|x|p|r| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|l|e| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|a|n|g|e|s| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|d|i|r| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|p|a|t|h| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|e|c|k|t|i|m|e| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|e|a|r|j|u|m|p|s| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|i|s|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|o|s|e| +0#0000000&@56
-@57|6|8|5|,|1| @8|5|7|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+@57|6|8|5|,|1| @8|5|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump
index 35d89fb..d494887 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_39.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|o|s|e| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|x|t| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|y| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|d|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@50
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|l|o|r|s|c|h|e|m|e| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|c|l|e|a|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|m|p|i|l|e|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|t|i|n|u|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|f|i|r|m| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|s|t| +0#0000000&@56
-@57|7|0|3|,|1| @8|5|9|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|e|n| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|q|u|i|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|c|o|p|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@56
+@57|7|0|3|,|1| @8|5|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump
index a4c2e52..9179c26 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_40.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|n|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|o|p|e|n| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|q|u|i|t| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|c|o|p|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|s|t|a|g| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|e|t|e| +0#0000000&@55
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|e|t|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|b|u|g@1|r|e@1|d|y| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|e|r| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@51
-@57|7|2|1|,|1| @8|6|0|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@54
+@57|7|2|1|,|1| @8|5|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump
index f9fb600..7394fba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_41.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|c|o|m@1|a|n|d| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|l|m|a|r|k|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|u|p|d|a|t|e| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|g|e|t| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|o|f@1| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|a|t|c|h| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|p|u|t| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|s|p|l|i|t| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|f@1|t|h|i|s| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|g|r|a|p|h|s| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|p|l|a|y| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@50
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|j|u|m|p| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l| +0#0000000&@59
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|l|i|s|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|o|a|u|t|o|a|l@1| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|p| +0#0000000&@59
-@57|7|3|9|,|1| @8|6|2|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|r|o|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@50
+@57|7|3|9|,|1| @8|6|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump
index 12db3d0..6e0b583 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_42.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|p| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|r|o|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|d|i|t| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|a|r|l|i|e|r| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@50
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|c|o|n|s|o|l|e| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|e|r@1| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|h|l| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|m|s|g| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|n| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@51
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|c|h|o|w|i|n|d|o|w| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|l|s|e|i|f| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@56
-@57|7|5|7|,|1| @8|6|3|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|e|w| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@54
+@57|7|5|7|,|1| @8|6|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
index fd68f59..e8b1090 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_43.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|f| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|o|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|w|h|i|l|e| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|e|w| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|v|a|l| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|i|t| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|u|s|a|g|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|s| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|e|t|y|p|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|l|t|e|r| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|d| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@54
-@57|7@1|5|,|1| @8|6|5|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|r|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|x|d|e|l| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
+@57|7@1|5|,|1| @8|6|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump
index 34a09b1..bac0a9c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_44.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l@1|y| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|i|s|h| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|r|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|x|d|e|l| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|c|l|o|s|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o@1|p|e|n| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d@1|o|c|l|o|s|e|d| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|l|d|o|p|e|n| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|o|r| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|o|t|o| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|r|e|p|a|d@1| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|u|i| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |g+0#af5f00255&|v|i|m| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|a|r|d|c|o|p|y| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@57
-@57|7|9|3|,|1| @8|6@1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|d|e| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@51
+|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+@57|7|9|3|,|1| @8|6|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
index 25f608e..6d71599 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_45.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|c|l|o|s|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|f|i|n|d| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|g|r|e|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|e|l|p|t|a|g|s| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|g|h|l|i|g|h|t| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|d|e| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|i|s|t|o|r|y| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |h+0#af5f00255&|o|r|i|z|o|n|t|a|l| +0#0000000&@51
-|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
+|"+0#0000e05#ffffff0| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@67
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i|n|s|e|r|t| @55
 @4|t|e|x|t| @66
 |.+0#af5f00255&| +0#0000000&@73
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b@1|r|e|v| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|a|b|c|l|e|a|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|f| +0#0000000&@59
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|j|u|m|p| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|l|i|s|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p| +0#0000000&@57
-@57|8|1@1|,|1| @8|6|8|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|p|o|r|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|r|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+@57|8|1@1|,|1| @8|6|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump
index 662461b..d5fe918 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_46.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|m|p|o|r|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|a|b@1|r|e|v| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|r|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|a|b@1|r|e|v| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|o|i|n| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|u|m|p|s| +0#0000000&@56
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |j+0#af5f00255&|u|m|p|s| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&| +0#0000000&@60
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|a|l|t| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|m|a|r|k|s| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@52
-@57|8|2|9|,|1| @8|6|9|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|i|s|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
+@57|8|2|9|,|1| @8|6|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump
index 48dcb9c..b66d1b7 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_47.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p|j|u|m|p|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |k+0#af5f00255&|e@1|p@1|a|t@1|e|r|n|s| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|N|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|i|s|t| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|b|o|v|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|e|x|p|r| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|b|u|f@1|e|r| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|d@1|f|i|l|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|f|t|e|r| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|s|t| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|n|g|u|a|g|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|a|t|e|r| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|f|o|r|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|l|o|w| +0#0000000&@55
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|e|l|o|w| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|o|t@1|o|m| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|d| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-@57|8|4|7|,|1| @8|7|1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|d|o| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|g|a|c|y| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|t| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@56
+@57|8|4|7|,|1| @8|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump
index 6952669..08980e1 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_48.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|d|o| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|d|o| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|f|t|a|b|o|v|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|g|a|c|y| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|e|x|p|r| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|l|e| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|b|u|f@1|e|r| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|e|x|p|r| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|e|t|f|i|l|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|g|r|e|p|a|d@1| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|e|l|p|g|r|e|p| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@53
-@57|8|6|5|,|1| @8|7|3|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|a|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|i|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|k|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
+@57|8|6|5|,|1| @8|7|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump
index 3f47c96..c2052da 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_49.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|h|i|s|t|o|r|y| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|a|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&@1|i|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|k|e| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|e|w|e|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|f|i|l|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@51
+|"+0#0000e05&| |c|a|l@1| |F|o@1|(|)| ||| |l|o|a|d|k|e|y|m|a|p| |"| |d|i|s|a|b|l|e|d| |-| |r|u|n|s| |u|n|t|i|l| |E|O|F| +0#0000000&@21
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|a|d|v|i|e|w| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|m|a|r|k|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|c|k|v|a|r| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|l|d|e|r| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|o|p|e|n| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
-@57|8@1|3|,|1| @8|7|4|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|s| +0#0000000&@59
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|t|a|g| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@50
+@57|8@1|3|,|1| @8|7|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump
index 01a8246..529c91d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_50.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|p|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|s| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|t|a|g| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|u|a|f|i|l|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@50
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|v|i|m|g|r|e|p|a|d@1| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |l+0#af5f00255&|w|i|n|d|o|w| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|v|e| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|k|e| +0#0000000&@57
-|"+0#0000e05&| |r|e|q|u|i|r|e|s| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| |t|o| |d|i|s|t|i|n|g|u|i|s|h| |f|r|o|m| |m|a|p|(|)| +0#0000000&@18
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p| +0#0000000&@58
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|r|k|s| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|t|c|h| +0#0000000&@56
-@57|9|0|1|,|1| @8|7|6|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|e|x|r|c| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@53
+@57|9|0|1|,|1| @8|7|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump
index 0fb8f18..6b12992 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_51.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|a|t|c|h| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@48
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|e|s@1|a|g|e|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|e|x|r|c| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|e|s@1|i|o|n| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|s|p|e|l@1| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|m|r|c| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|k|v|i|e|w| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|o|d|e| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@53
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|s|c|h|e|m|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |m+0#af5f00255&|z|f|i|l|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|c|l|o|s|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|k|e|y| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|b|s|t|a|r|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|x|t| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|x|t| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|e|w| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-@57|9|1|9|,|1| @8|7@1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|m|a|l| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@51
+@57|9|1|9|,|1| @8|7|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump
index 810f100..1a03dbb 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_52.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&@1|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|a|u|t|o|c|m|d| +0#0000000&@52
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|a|p| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|h|l|s|e|a|r|c|h| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|a|b@1|r|e|v| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|e|m|e|n|u| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|r|m|a|l| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|o|s|w|a|p|f|i|l|e| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |n+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|l|d|f|i|l|e|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|e|n| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|e|n| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|e|n|u| +0#0000000&@56
-@57|9|3|7|,|1| @8|7|9|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|l|y| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
+@57|9|3|7|,|1| @8|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump
index 80238a6..76f4d20 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_53.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|l|y| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|p|t|i|o|n|s| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |o+0#af5f00255&|w|n|s|y|n|t|a|x| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|a|d@1| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|a|c|k|l|o|a|d|a|l@1| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|c|l|o|s|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|d|i|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|i|n|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|d|e|l| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|f|i|l|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|f|i|n|d| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|o|m|p|t|r|e|p|l| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l|d|o| +0#0000000&@55
-@57|9|5@1|,|1| @8|8|0|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p|u|p| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&@1|o|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|a|g| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|N|e|x|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
+@57|9|5@1|,|1| @8|7|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump
index 67137ba..b511392 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_54.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|e|r|l|d|o| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|o|p|u|p| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&@1|o|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|s|e|r|v|e| +0#0000000&@53
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|r|e|v|i|o|u|s| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|s|e|a|r|c|h| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|a|g| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|N|e|x|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|f|i|r|s|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|l|a|s|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|n|e|x|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|p|r|e|v|i|o|u|s| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|r|e|w|i|n|d| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|t| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|w|d| +0#0000000&@58
-@57|9|7|3|,|1| @8|8|2|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|f|i|l|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@56
+@57|9|7|3|,|1| @8|8|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump
index 361f834..1c4f533 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_55.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|w|d| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|3| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|3|f|i|l|e| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|d|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|f|i|l|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|t|h|o|n|x| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|d|o| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|y|x|f|i|l|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|u|i|t|a|l@1| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |q+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|a|d| +0#0000000&@57
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|a|d| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|c|o|v|e|r| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|o| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|i|r| +0#0000000&@56
-@57|9@1|1|,|1| @8|8|3|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|s|i|z|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|a|b| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@51
+@57|9@1|1|,|1| @8|8|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump
index ba57541..7401899 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_56.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|i|r| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|s|t|a|t|u|s| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|d|r|a|w|t|a|b|l|i|n|e| +0#0000000&@48
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|g|i|s|t|e|r|s| +0#0000000&@52
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|s|i|z|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|a|b| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|e|w|i|n|d| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|i|g|h|t|b|e|l|o|w| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|d|o| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|b|y|f|i|l|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|u|n|t|i|m|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |r+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|b|s|t|i|t|u|t|e| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|N|e|x|t| +0#0000000&@56
-@57|1|0@1|9|,|1| @7|8|5|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|l@1| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|v|e|a|s| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|a|l@1| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|l|a|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@51
+@57|1|0@1|9|,|1| @7|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump
index 031d9c4..a59f4a1 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_57.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|n|d|b|o|x| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|r|g|u|m|e|n|t| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|a|v|e|a|s| +0#0000000&@55
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|u|f@1|e|r| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|N|e|x|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|a|l@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|f|i|r|s|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|l|a|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@51
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|m|o|d|i|f|i|e|d| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|n|e|x|t| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|p|r|e|v|i|o|u|s| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|b|r|e|w|i|n|d| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|n|a|m|e|s| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@47
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&@47
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|r|i|p|t|v|e|r|s|i|o|n| +0#0000000&@48
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|c|s|c|o|p|e| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&@58
-@57|1|0|2|7|,|1| @7|8|6|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@50
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|n|d| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|h|e|l@1| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|m|a|l|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|g|n| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|l|e|n|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@56
+@57|1|0|2|7|,|1| @7|8|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump
index 1d24fd5..67e9545 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_58.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|f|i|l|e|t|y|p|e| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|n|d| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|h|e|l@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|m|a|l|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|g|n| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|i|l|e|n|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|e@1|p|!| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|l|a|s|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|g|i|c| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|e|n|u| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|m|i|l|e| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|e|x|t| +0#0000000&@56
-@57|1|0|4|5|,|1| @7|8@1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|r|t| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|u|r|c|e| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@50
+@57|1|0|4|5|,|1| @7|8|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump
index 920861c..1299076 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_59.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|m|a|g|i|c| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|r|t| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|o|u|r|c|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|d|u|m|p| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|g|o@1|d| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|i|n|f|o| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|a|r|e| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@50
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|r|e|p|a|l@1| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|u|n|d|o| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|e|l@1|w|r|o|n|g| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|l|i|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|g| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@50
-@57|1|0|6|3|,|1| @7|8|9|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@48
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@54
+@57|1|0|6|3|,|1| @7|8@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump
index 9733757..0818013 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_60.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|i|n|s|e|r|t| +0#0000000&@50
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|g|r|e|p|l|a|c|e| +0#0000000&@48
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|r|t|r|e|p|l|a|c|e| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|o|p|i|n|s|e|r|t| +0#0000000&@51
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|j|u|m|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|s|e|l|e|c|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|h|i|d|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|u|s|p|e|n|d| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|v|i|e|w| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|w|a|p|n|a|m|e| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|a|x| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|t|i|m|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|y|n|c|b|i|n|d| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&| +0#0000000&@60
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|N|e|x|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@54
-@57|1|0|8|1|,|1| @7|9|1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|w| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@54
+@57|1|0|8|1|,|1| @7|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump
index f278eb5..62ca86d 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_61.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|N|e|x|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|c|l|o|s|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|e|d|i|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|n|d| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|f|i|r|s|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|l|a|s|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|m|o|v|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|w| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|n|e|x|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@54
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|o|n|l|y| +0#0000000&@54
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|p|r|e|v|i|o|u|s| +0#0000000&@50
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|r|e|w|i|n|d| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b|s| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|b| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g| +0#0000000&@58
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|a|g|s| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|d| +0#0000000&@58
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-@57|1|0|9@1|,|1| @7|9|2|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|j|u|m|p| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@55
+@57|1|0|9@1|,|1| @7|9|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump
index 933f7a0..c81c02c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_62.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|h|d|i|r| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|c|l|f|i|l|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|a|r|o|f@1| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|e|r|m|i|n|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|f|i|r|s|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|j|u|m|p| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|a|s|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@55
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|m|e|n|u| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|n|o|r|e|m|e|n|u| +0#0000000&@51
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|l|u|n|m|e|n|u| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|e|n|u| +0#0000000&@56
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|m|e|n|u| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|e|x|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@54
-@57|1@2|7|,|1| @7|9|4|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|y| +0#0000000&@58
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
+@57|1@2|7|,|1| @7|9|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump
index f93ac7c..249c967 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_63.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|o|p|l|e|f|t| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|e|w|i|n|d| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|r|y| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|s|e|l|e|c|t| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|j|o|i|n| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|d|o|l|i|s|t| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|a|b@1|r|e|v|i|a|t|e| +0#0000000&@49
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|h|i|d|e| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|e|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|l|o|c|k|v|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|a|p| +0#0000000&@56
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|a|p| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|m|e|n|u| +0#0000000&@55
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|n|s|i|l|e|n|t| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|p|d|a|t|e| +0#0000000&@55
-@57|1@1|3|5|,|1| @7|9|6|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@49
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|s|u|a|l| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@57
+@57|1@1|3|5|,|1| @7|9|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump
index bf3df8d..11a5bc3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_64.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |u+0#af5f00255&|p|d|a|t|e| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|g|l|o|b|a|l|/|.+0#0000000&@2|/+0#af5f00255&| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|s|i|o|n| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|b|o|s|e| +0#0000000&@54
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|e|r|t|i|c|a|l| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|9|c|m|d| +0#0000000&@54
-|"+0#0000e05&| |c|a|l@1| |F|o@1|(|)| ||| |v|i|m|9|s|c|r|i|p|t| +0#0000000&@49
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|m|g|r|e|p|a|d@1| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|s|u|a|l| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|u|s|a|g|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@57
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|i|e|w| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p| +0#0000000&@57
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|m|e|n|u| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|e|w| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-@57|1@1|5|3|,|1| @7|9|7|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|d|o| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|r|i|t|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|N|e|x|t| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|a|l@1| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
+@57|1@1|5|3|,|1| @7|9|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump
index 0e96806..9dfb7f5 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_65.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|s|p|l|i|t| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|d|o| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|r|i|t|e| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|N|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|h|i|l|e| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|s|i|z|e| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|c|m|d| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
+|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q| +0#0000000&@59
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q|a|l@1| +0#0000000&@56
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|u|n|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
+>c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
 |c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@58
-@57|1@1|7|1|,|1| @7|9@1|%| 
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@56
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@57
+|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@60
+@75
+@57|1@1|7|1|,|1| @7|9|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump
index cfb1298..6dd455c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_66.dump
@@ -1,20 +1,20 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@56
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@60
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1@1|8|9|,|1| @7|B|o|t| 
+| +0&#ffffff0@74
+@75
+|"+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |o|n|l|y| +0#0000000&@56
+@75
+|:|a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@65
+>:|c+0#af5f00255&|l|a|s@1| +0#0000000&@68
+|:|d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@63
+|:|d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@62
+|:|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@65
+|:|e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@61
+|:|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@66
+|:|e+0#af5f00255&|n|u|m| +0#0000000&@69
+|:|e+0#af5f00255&|x|p|o|r|t| +0#0000000&@67
+|:|f+0#af5f00255&|i|n|a|l| +0#0000000&@68
+|:|i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@64
+|:|p+0#af5f00255&|u|b|l|i|c| +0#0000000&@67
+|:|s+0#af5f00255&|t|a|t|i|c| +0#0000000&@67
+|:|t+0#af5f00255&|y|p|e| +0#0000000&@69
+|:|v+0#af5f00255&|a|r| +0#0000000&@70
+@57|1@1|8|9|,|1| @7|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_67.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_67.dump
new file mode 100644
index 0000000..e276a66
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_67.dump
@@ -0,0 +1,20 @@
+|:+0&#ffffff0|v+0#af5f00255&|a|r| +0#0000000&@70
+@75
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |a+0#af5f00255&|b|s|t|r|a|c|t| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |c+0#af5f00255&|l|a|s@1| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|e|f|c|o|m|p|i|l|e| +0#0000000&@56
+>F|o@1|(+0#e000e06&|)| +0#0000000&||| |d+0#af5f00255&|i|s|a|s@1|e|m|b|l|e| +0#0000000&@55
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@58
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@59
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|d|i|n|t|e|r|f|a|c|e| +0#0000000&@54
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|n|u|m| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |e+0#af5f00255&|x|p|o|r|t| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |f+0#af5f00255&|i|n|a|l| +0#0000000&@61
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |i+0#af5f00255&|n|t|e|r|f|a|c|e| +0#0000000&@57
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |p+0#af5f00255&|u|b|l|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |s+0#af5f00255&|t|a|t|i|c| +0#0000000&@60
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |t+0#af5f00255&|y|p|e| +0#0000000&@62
+|F|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@63
+@75
+|~+0#4040ff13&| @73
+| +0#0000000&@56|1|2|0|7|,|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_68.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_68.dump
new file mode 100644
index 0000000..7e1be8b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_commands_68.dump
@@ -0,0 +1,20 @@
+|F+0&#ffffff0|o@1|(+0#e000e06&|)| +0#0000000&||| |v+0#af5f00255&|a|r| +0#0000000&@63
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|1|,|0|-|1| @5|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_commands_99.dump b/runtime/syntax/testdir/dumps/vim_ex_commands_99.dump
deleted file mode 100644
index 2c0e2ec..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_commands_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|c+0#af5f00255#ffffff0|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|i|n|p|o|s| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|n|e|x|t| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|p|r|e|v|i|o|u|s| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q| +0#0000000&@59
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|q|a|l@1| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|u|n|d|o| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |w+0#af5f00255&|v|i|m|i|n|f|o| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|i|t| +0#0000000&@58
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|a|l@1| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|a|p| +0#0000000&@57
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|m|e|n|u| +0#0000000&@56
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|r|e|s|t|o|r|e| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|a|p| +0#0000000&@53
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|n|o|r|e|m|e|n|u| +0#0000000&@52
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|a|p| +0#0000000&@55
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |x+0#af5f00255&|u|n|m|e|n|u| +0#0000000&@54
-|c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |y+0#af5f00255&|a|n|k| +0#0000000&@57
->c+0#af5f00255&|a|l@1| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&||| |z+0#af5f00255&| +0#0000000&@60
-@57|1@1|9|5|,|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump
new file mode 100644
index 0000000..2dc2425
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_01.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
+| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+@75
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
+| +0#0000e05&@1>#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|3| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump
deleted file mode 100644
index 90edc97..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|t|r|u|e| +0#0000000&@20
-@75
-|"+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-| +0#0000e05&@1|#| |p|r|e| |"+0#e000002&|s|t|r|i|n|g|"| +0#0000e05&|p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_05.dump b/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
index 2db207b..28b3259 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_05.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@74
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
+|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@55
 @75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
 @75
->"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
+> @74
+|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
 @75
 |d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@31
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
@@ -16,5 +17,4 @@
 @75
 @75
 |"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-@57|9|1|,|1| @9|9|4|%| 
+@57|9|0|,|0|-|1| @7|9|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_06.dump b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
new file mode 100644
index 0000000..723aade
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |c|o|m@1|e|n|t|s| +0#0000000&@64
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
+@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@56
+>e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|8|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_99.dump
deleted file mode 100644
index 9b4249f..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| |y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| |z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@31
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&| +0#0000000&@66
-@4|x+0#00e0e07&|:+0#0000000&| |b+0#00e0003&|o@1|l|,+0#0000000&| @62
-@4|y+0#00e0e07&| +0#0000000&|=+0#af5f00255&| +0#0000000&|4+0#e000002&|2|,+0#0000000&| @63
-@4|z+0#00e0e07&|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|z|e|d|"|)+0#e000e06&| +0#0000000&@52
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
-| +0#0000e05&@1|#| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@51
-@2|"+0#e000002&|u|s|e|l|e|s@1| |s|t|r|i|n|g|"| +0#0000000&@56
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-> @74
-@57|1|0|9|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
index 2cfdcd4..a186346 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_02.dump
@@ -1,20 +1,20 @@
-|"+0#0000e05#ffffff0| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@53
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r| @1|-@41
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)| |#| |c|o|m@1|e|n|t|-@41
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |n|u|m|b|e|r| |#| |c|o|m@1|e|n|t|-@33
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f|!| |F|o@1|(|)|:| |n|u|m|b|e|r|-@42
-| +0#0000000#ffffff0@74
+| +0&#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |g|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
 | +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |s|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
+>++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
 | +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |f|o@1|#|b|a|r|#|F|o@1|(|)|:| |n|u|m|b|e|r|-@35
 | +0#0000000#ffffff0@74
 |"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
 |++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |s|:|l|s|(|)|-@50
-| +0#0000000#ffffff0@56|3|7|,|1| @9|2|7|%| 
+| +0#0000000#ffffff0@74
+@75
+|"+0#0000e05&| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@60
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
+| +0#0000000#ffffff0@74
+@57|5|1|,|1| @9|4|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
index 6673415..58faca0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_03.dump
@@ -1,20 +1,20 @@
 | +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |s|:|F|o@1|(|)|:| |n|u|m|b|e|r|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |f|u|n|c|(|d|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,| |f|u|n|c|,| |b|o@1|l|,| |f|u|n|c|(|n|u|m|b|e|r|,| 
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |<|S|I|D|>|F|o@1|(|)|:| |n|u|m|b|e|r|-@38
+> @74
+|"+0#0000e05&| |:|e|n|d@1|e|f| |t|r|a|i|l|i|n|g| +0#0000000&@56
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |f|o@1|#|b|a|r|#|F|o@1|(|)|:| |n|u|m|b|e|r|-@35
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |s|:|l|s|(|)|-@50
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
 @75
-|"+0#0000e05&| |r|e|t|u|r|n| |t|y|p|e|s| +0#0000000&@60
+|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
 @75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|x|:| |b|o@1|l|,| |y| |=| |4|2|,| |z|:| |s|t|r|i|n|g| |=| |"|z|e|d|"|)|-@17
 | +0#0000000#ffffff0@74
-@57|5@1|,|1| @9|4@1|%| 
+@57|7|8|,|0|-|1| @7|6|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
index d2f047b..4a2f2aa 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_fold_04.dump
@@ -1,20 +1,20 @@
 | +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d|-@45
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |v|o|i|d| |#| |c|o|m@1|e|n|t|-@35
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |l|i|s|t|<|d|i|c|t|<|n|u|m|b|e|r|>@1|-@31
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|:| |f|u|n|c|(|d|i|c|t|<|l|i|s|t|<|n|u|m|b|e|r|>@1|,| |f|u|n|c|,| |b|o@1|l|,| |f|u|n|c|(|n|u|m|b|e|r|,| 
+@75
+|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
+> @74
+|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
 @75
-|"+0#0000e05&| |:|e|n|d@1|e|f| |t|r|a|i|l|i|n|g| +0#0000000&@56
+|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
 @75
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
 | +0#0000000#ffffff0@74
-@75
-@57|7|3|,|1| @9|6|2|%| 
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
+| +0#0000000#ffffff0@74
+@57|1|0|5|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump
deleted file mode 100644
index e2decdb..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_05.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-> @74
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|x|:| |b|o@1|l|,| |y| |=| |4|2|,| |z|:| |s|t|r|i|n|g| |=| |"|z|e|d|"|)|-@17
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@57|9|1|,|0|-|1| @7|8|2|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump
deleted file mode 100644
index 2997eb8..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_06.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
->++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-| +0#0000000&@56|1|0|9|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump
deleted file mode 100644
index b11b61e..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_07.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|2|7|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump
deleted file mode 100644
index 3020a24..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|-@52
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |d|e|f| |F|o@1|(|)|-@51
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|d|e|f| |F|o@1|(|)|-@50
-> +0#0000000#ffffff0@74
-@57|1|3|0|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
index 9f6d437..5180ea3 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_00.dump
@@ -2,7 +2,7 @@
 |#+0#0000e05&| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@46
 @75
 |c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
-@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @52
+@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@52
 @75
 @4|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|)| +0#0000000&@61
 @8|d+0#af5f00255&|e|f| +0#0000000&|N|a|m|e|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@48
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
new file mode 100644
index 0000000..a3d1c36
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
+@75
+@8|t+0#af5f00255&|h|i|s|.|n+0#0000000&|a|m|e| |=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
+@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
+|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
+> @74
+|e+0#af5f00255&|c|h|o| +0#0000000&|T|e|s|t|.|n|e|w|(+0#e000e06&|)| +0#0000000&@59
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump
deleted file mode 100644
index 15c078a..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#0000e05#ffffff0| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@46
-@75
-|c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
-@4|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @52
-@75
-@4|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|)| +0#0000000&@61
-@8|d+0#af5f00255&|e|f| +0#0000000&|N|a|m|e|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@48
-@12|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|G|i|v|e|N|a|m|e|(+0#e000e06&|)| +0#0000000&@43
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|a|n|y|"| +0#0000000&@46
-@12|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@51
-@75
-@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|G|i|v|e|N|a|m|e|(+0#e000e06&|)| +0#0000000&@45
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@75
-@8|t+0#af5f00255&|h|i|s|.|n+0#0000000&|a|m|e| |=+0#af5f00255&| +0#0000000&|N|a|m|e|(+0#e000e06&|)| +0#0000000&@48
-@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
-|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
-@75
->e+0#af5f00255&|c|h|o| +0#0000000&|T|e|s|t|.|n|e|w|(+0#e000e06&|)| +0#0000000&@59
-@57|2|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
index 3bcaccc..452fa61 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_00.dump
@@ -4,7 +4,7 @@
 | +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 | +0#0000e05#a8a8a8255@1|c+0#af5f00255#ffffff0|l|a|s@1| +0#0000000&|T|e|s|t| @62
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @50
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@50
 | +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 |++0#0000e05#a8a8a8255| |+|-@1| |1@1| |l|i|n|e|s|:| |d|e|f| |n|e|w|(|)|-@49
 | @1|e+0#af5f00255#ffffff0|n|d|c|l|a|s@1| +0#0000000&@64
diff --git a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump
deleted file mode 100644
index 84a08f8..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_nested_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#a8a8a8255@1|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@62
-| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|i|m|9| |:|d|e|f| |c|o|m@1|a|n|d| |(|n|e|s|t|e|d|)| +0#0000000&@44
-| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |'|f|'| +0#0000000&@29
-| +0#0000e05#a8a8a8255@1|#+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|c+0#af5f00255#ffffff0|l|a|s@1| +0#0000000&|T|e|s|t| @62
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|a|m|e|:+0#0000000&| |s|t|r|i|n|g| @50
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| |1@1| |l|i|n|e|s|:| |d|e|f| |n|e|w|(|)|-@49
-| @1|e+0#af5f00255#ffffff0|n|d|c|l|a|s@1| +0#0000000&@64
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1>e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|T|e|s|t|.|n|e|w|(+0#e000e06&|)| +0#0000000&@57
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2@1|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_echo_02.dump b/runtime/syntax/testdir/dumps/vim_ex_echo_02.dump
new file mode 100644
index 0000000..47be35b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_echo_02.dump
@@ -0,0 +1,20 @@
+|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|'+0#e000002&|e|n|d|'|:+0#0000000&| |1+0#e000002&|2|3|}+0#e000e06&| +0#0000000&@52
+@75
+|i+0#af5f00255&|f| +0#0000000&|1+0#e000002&|2|3| +0#0000000&@68
+@8|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|o@1|.+0#af5f00255&|e+0#00e0e07&|n|d|)+0#e000e06&| +0#0000000&@52
+|e+0#af5f00255&|l|s|e| +0#0000000&@70
+@8>e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@56
+|e+0#af5f00255&|n|d|i|f| +0#0000000&@69
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|2|-|9| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_echo_99.dump b/runtime/syntax/testdir/dumps/vim_ex_echo_99.dump
deleted file mode 100644
index db81b40..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_echo_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@4|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|4+0#e000002&|2| +0#0000000&@64
-@75
-|"+0#0000e05&| |:|e|c|h|o| |w|i|t|h|o|u|t| |{|e|x|p|r|}| +0#0000000&@52
-|e+0#af5f00255&|c|h|o||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@58
-@75
-|"+0#0000e05&| |t|r|a|i|l|i|n|g| |c|o|m@1|e|n|t| |n|e@1|d|s| ||| +0#0000000&@48
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@52
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|9@1|8|7| |(|p|a|r|e|n|t|h|e|s|i|s|e|d| |a|r|g|u|m|e|n|t| |-| |n|o|t| |a| |f|u|n|c|t|i|o|n| |c|a|l@1|)| +0#0000000&@14
-@75
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|'+0#e000002&|e|n|d|'|:+0#0000000&| |1+0#e000002&|2|3|}+0#e000e06&| +0#0000000&@52
-@75
-|i+0#af5f00255&|f| +0#0000000&|1+0#e000002&|2|3| +0#0000000&@68
-@8|e+0#af5f00255&|c|h|o| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|o@1|.+0#af5f00255&|e+0#00e0e07&|n|d|)+0#e000e06&| +0#0000000&@52
-|e+0#af5f00255&|l|s|e| +0#0000000&@70
-@8|e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|b|a|r|'| +0#0000000&@56
->e+0#af5f00255&|n|d|i|f| +0#0000000&@69
-@57|3|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_execute_99.dump b/runtime/syntax/testdir/dumps/vim_ex_execute_99.dump
deleted file mode 100644
index afc498c..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_execute_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|"+0#e000002&|F|o@1|(|)|"| +0#0000000&@59
-@75
-|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&@67
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|c|a|l@1|"| +0#0000000&@60
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|"+0#e000002&|F|o@1|(|)|"| +0#0000000&@59
-@75
-|"+0#0000e05&| |:|e|x|e|c|u|t|e| |w|i|t|h|o|u|t| |{|e|x|p|r|}| +0#0000000&@49
-|e+0#af5f00255&|x|e|c|u|t|e||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@55
-@75
-|"+0#0000e05&| |t|r|a|i|l|i|n|g| |c|o|m@1|e|n|t| |n|e@1|d|s| ||| +0#0000000&@48
-|e+0#af5f00255&|x|e|c|u|t|e| +0#0000000&|"+0#e000002&|f|o@1|"| +0#0000000&||| |"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@49
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|9@1|8|7| |(|p|a|r|e|n|t|h|e|s|i|s|e|d| |a|r|g|u|m|e|n|t| |-| |n|o|t| |a| |f|u|n|c|t|i|o|n| |c|a|l@1|)| +0#0000000&@14
-@75
-|"+0#0000e05&| +0#0000000&|F+0#0000001#ffff4012|I|X|M|E|:+0#e000e06#ffffff0| +0#0000e05&|e|x|e|c|u|t|e| |i|s| |e|x| |c|o|m@1|a|n|d| |n|o|t| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n| +0#0000000&@23
-|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&| +0#0000000&|{+0#e000e06&|'+0#e000002&|a|r|g|'|:+0#0000000&| |"+0#e000002&|c|a|l@1| |F|o@1|(|)|"|}+0#e000e06&| +0#0000000&@43
->e+0#00e0e07&|x|e|c|u|t|e| +0#0000000&|(+0#e000e06&|f+0#00e0e07&|o@1|.+0#af5f00255&|a+0#00e0e07&|r|g|)+0#e000e06&| +0#0000000&@57
-@57|4|1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
new file mode 100644
index 0000000..37d13e7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_10.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
+@75
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
+>d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
deleted file mode 100644
index b00e2ac..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|e+0#af5f00255#ffffff0|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
-@2|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
-@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-@75
-|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
-@75
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-> @74
-@57|1|8|2|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump
new file mode 100644
index 0000000..04f6fd2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|f|u|n|c|t|i|o|n| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t| |e|r@1|o|r|s| +0#0000000&@30
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump
new file mode 100644
index 0000000..3e5b4bd
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+>d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@75
+@57|1|9|,|1| @9|5|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump
new file mode 100644
index 0000000..0d9de4b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comment_errors_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|#+0#ffffff16#ff404010| |f|u|n| +0#0000000#ffffff0@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|"+0#ffffff16#ff404010| |d|e|f| +0#0000000#ffffff0@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|"+0#ffffff16#ff404010| |e|n|d@1|e|f| +0#0000000#ffffff0@34
+@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|#+0#ffffff16#ff404010| |e|n|d|f|u|n| +0#0000000#ffffff0@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&|-+0#af5f00255&|>|r+0#00e0e07&|e|v|e|r|s|e|(+0#e000e06&|)| +0#0000000&@43
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@48
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|d|e|l|f|u|n|c|t|i|o|n| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|'+0#e000002&| +0#0000000&@43
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|3| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump
new file mode 100644
index 0000000..f8c0ccc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|f|u|n|c|t|i|o|n| |a|n|d| |:|d|e|f| |t|a|i|l| |c|o|m@1|e|n|t|s| +0#0000000&@36
+|"+0#0000e05&| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|1|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|2|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&| +0#0000000&@64
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@8|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump
new file mode 100644
index 0000000..326a249
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|3+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|3|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+>d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@8|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|4|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|5|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@10|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@2|f+0#af5f00255&|u|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@10|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|5+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@23|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|T|e|s|t|5|(+0#e000e06&|)| +0#0000000&@56
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@25|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@75
+@57|1|9|,|1| @9|5|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump
new file mode 100644
index 0000000..8dcb0b9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_def_tail_comments_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|f+0#af5f00255&|u|n| +0#0000000&|s+0#e000e06&|:|T+0#0000000&|e|s|t|6|(+0#e000e06&|)| +0#0000000&|a+0#e000e06&|b|o|r|t| +0#0000000&@12|"+0#0000e05&| |f|u|n| +0#0000000&@37
+@2|d+0#af5f00255&|e|f| +0#0000000&|s+0#e000e06&|:|D+0#0000000&|o|T|e|s|t|6|(+0#e000e06&|)|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&@6|#+0#0000e05&| |d|e|f| +0#0000000&@37
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|6+0#e000002&| +0#0000000&@62
+@2|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@23|#+0#0000e05&| |e|n|d@1|e|f| +0#0000000&@34
+@2>r+0#af5f00255&|e|t|u|r|n| +0#0000000&|s|:|D|o|T|e|s|t|6|(+0#e000e06&|)| +0#0000000&@54
+|e+0#af5f00255&|n|d|f|u|n| +0#0000000&@25|"+0#0000e05&| |e|n|d|f|u|n| +0#0000000&@34
+@75
+|f+0#af5f00255&|o|r| +0#0000000&|d+0#00e0e07&| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|r+0#00e0e07&|a|n|g|e|(+0#e000e06&|1+0#e000002&|,+0#0000000&| |6+0#e000002&|)+0#e000e06&|-+0#af5f00255&|>|r+0#00e0e07&|e|v|e|r|s|e|(+0#e000e06&|)| +0#0000000&@43
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|e|c|h|o| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|(+0#e000002&|)|'| +0#0000000&@48
+@2|e+0#af5f00255&|x|e|c| +0#0000000&|$+0#e000002&|'|d|e|l|f|u|n|c|t|i|o|n| |s|:|T|e|s|t|{+0#e000e06&|d+0#00e0e07&|}+0#e000e06&|'+0#e000002&| +0#0000000&@43
+|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|3| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
index 17e220f..0144e3c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_02.dump
@@ -1,15 +1,9 @@
 | +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o|{|"|o|"|}|(|)|-@42
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|o|{|"|o|"|}|(|)|-@38
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |{|"|F|"|}|{|"|o|"|}|{|"|o|"|}|(|)|-@34
-| +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
 |"+0#0000e05&| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@53
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| @1|-@44
-| +0#0000000#ffffff0@74
+> +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |"| |c|o|m@1|e|n|t|-@36
 | +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)|-@45
@@ -17,4 +11,10 @@
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |g|:|F|o@1|(|)|-@44
 | +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|F|o@1|(|)|-@44
-| +0#0000000#ffffff0@56|3|7|,|1| @9|1|4|%| 
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
+| +0#0000000#ffffff0@74
+|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
+@57|4|7|,|0|-|1| @7|1|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
index b229e6c..dd8a282 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_03.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| @1|-@44
+|"+0#0000e05#ffffff0| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |"| |c|o|m@1|e|n|t|-@36
+@75
+|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
+> @74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)|-@45
-> +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |g|:|F|o@1|(|)|-@44
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|F|o@1|(|)|-@44
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
 | +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |c|l|o|s|u|r|e|-@38
 | +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
-@57|5@1|,|0|-|1| @7|2@1|%| 
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
+| +0#0000000#ffffff0@56|7|8|,|0|-|1| @7|3|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
index d9aa1c9..fb05a00 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_04.dump
@@ -1,20 +1,20 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |<|S|I|D|>|F|o@1|(|)|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |f|o@1|#|b|a|r|#|F|o@1|(|)|-@38
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
 | +0#0000000#ffffff0@74
-|"+0#0000e05&| |s|a|m|e| |n|a|m|e| |a|s| |a|n| |E|x| |c|o|m@1|a|n|d| +0#0000000&@46
->++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |s|:|l|s|(|)|-@45
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
+> +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
 | +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |m|o|d|i|f|i|e|r|s| +0#0000000&@63
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |c|l|o|s|u|r|e|-@37
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
+@75
+|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
-| +0#0000000#ffffff0@56|7|3|,|1| @9|3|2|%| 
+@57|1@1|2|,|0|-|1| @6|5|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
index 989c504..88ca355 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_05.dump
@@ -1,20 +1,20 @@
 | +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |"| |c|o|m@1|e|n|t|-@30
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e|-@40
+@75
+|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
+> @74
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
 | +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |a|b|o|r|t|-@40
+|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |d|i|c|t|-@41
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |c|l|o|s|u|r|e|-@38
+|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
+@75
+|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
-| +0#0000000#ffffff0@74
-@57|9|1|,|1| @9|4|2|%| 
+@57|1|4|3|,|0|-|1| @6|7|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
index f6619c2..a2f73a0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_06.dump
@@ -1,20 +1,20 @@
 | +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@21
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e|-@39
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |a|b|o|r|t|-@39
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |d|i|c|t|-@40
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |c|l|o|s|u|r|e|-@37
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
-| +0#0000000#ffffff0@74
 @75
-|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
+|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
 @75
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
+>d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
+|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
+@75
+@75
+|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
+@75
+|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
 |++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@56|1|0|9|,|1| @8|5|2|%| 
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+| +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+| +0#0000000#ffffff0@56|1|8|0|,|1| @8|9|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
index 8e84214..7a93653 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_fold_07.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n|!| |F|o@1|(|)| |r|a|n|g|e| |a|b|o|r|t| |d|i|c|t| |c|l|o|s|u|r|e|-@20
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |:|e|n|d|f|u|n|c|t|i|o|n| |t|r|a|i|l|i|n|g| +0#0000000&@51
-> @74
-|++0#0000e05#a8a8a8255|-@1| @1|4| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
+> +0#0000000#ffffff0@74
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
 | +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@57|1|2|7|,|0|-|1| @6|6|3|%| 
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|2|1|9|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
deleted file mode 100644
index fb482ff..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_08.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |p|a|r|a|m|e|t|e|r|s| +0#0000000&@62
-@75
->++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y|,| |z|,| |.@2|)|-@34
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-@57|1|4|5|,|3|-|1| @6|7|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
deleted file mode 100644
index 4b6a2d2..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_09.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|x|,| |y| |=| |4|2|,| |z| |=| |"|z|e|d|"|)|-@26
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|-@47
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |c|o|m@1|e|n|t|s| +0#0000000&@64
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@75
-|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
-@75
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-@57|1|6|3|,|7|-|1| @6|7|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
deleted file mode 100644
index 2e986c4..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_10.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |d|e|l|e|t|e| |f|u|n|c|t|i|o|n| +0#0000000&@57
-@75
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|F|o@1| @59
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
->d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1| @58
-|d+0#af5f00255&|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-@75
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-@57|1|8|1|,|1| @8|9|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
deleted file mode 100644
index 174e250..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_11.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1|9@1|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
deleted file mode 100644
index d68f8a1..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_12.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
->++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-| +0#0000000#ffffff0@74
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|2|1|7|,|5|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump
deleted file mode 100644
index 04aa4ba..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|d+0#af5f00255#ffffff0|e|l|f|u|n|c|t|i|o|n| +0#0000000&|f|o@1|.+0#af5f00255&|b+0#0000000&|a|r| @55
-@75
-@75
-|"+0#0000e05&| |f|o|l|d|-|r|e|g|i|o|n| |e|n|d|i|n|g| +0#0000000&@54
-@75
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|3| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|6| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|5| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|o@1|(|)|-@46
-| +0#0000000#ffffff0@74
-|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |:|f|u|n|c|t|i|o|n| |F|o@1|(|)|-@45
-> +0#0000000#ffffff0@74
-@57|2@1|3|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump b/runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump
new file mode 100644
index 0000000..e60a277
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_nested_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|F|u|n|D|(+0#e000e06&|)| +0#0000000&@55
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|A|(+0#e000e06&|)| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|B|(+0#e000e06&|)| +0#0000000&@63
+>e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|C|(+0#e000e06&|)| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|7|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump
deleted file mode 100644
index 6ef83ef..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_nested_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|d+0#af5f00255&|e|f| +0#0000000&|D|o|F|u|n|C|(+0#e000e06&|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@50
-@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&@54
-@4|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@64
-@75
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|F|u|n|C|(+0#e000e06&|)| +0#0000000&@55
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@59
-@4|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|D|o|F|u|n|D|(+0#e000e06&|)| +0#0000000&@53
-@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|"+0#e000002&|.@3|"| +0#0000000&@53
-@4|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@59
-@75
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|D|o|F|u|n|D|(+0#e000e06&|)| +0#0000000&@55
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|A|(+0#e000e06&|)| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|B|(+0#e000e06&|)| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|C|(+0#e000e06&|)| +0#0000000&@63
->e+0#af5f00255&|c|h|o| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@63
-@57|3|8|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump
deleted file mode 100644
index ad1fc05..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_function_nested_fold_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|i|m| |:|d|e|f| |a|n|d| |:|f|u|n|c|t|i|o|n| |c|o|m@1|a|n|d|s| |(|n|e|s|t|e|d|)| +0#0000000&@30
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |'|f|'| +0#0000000&@29
-| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@34
-| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |d|e|f| |F|u|n|A|(|)|:| |s|t|r|i|n|g|-@40
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |d|e|f| |F|u|n|B|(|)|:| |s|t|r|i|n|g|-@40
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|u|n|C|(|)|-@43
-| @1| +0#0000000#ffffff0@72
-|++0#0000e05#a8a8a8255| |+|-@1| @1|7| |l|i|n|e|s|:| |f|u|n|c|t|i|o|n| |F|u|n|D|(|)|-@43
-| @1| +0#0000000#ffffff0@72
-| +0#0000e05#a8a8a8255@1|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|A|(+0#e000e06&|)| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|B|(+0#e000e06&|)| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|C|(+0#e000e06&|)| +0#0000000&@61
-| +0#0000e05#a8a8a8255@1>e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|F|u|n|D|(+0#e000e06&|)| +0#0000000&@61
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|4|0|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
new file mode 100644
index 0000000..5d45c19
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_highlight_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
+@6|\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@59
+@75
+|h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@59
+@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
+@6>\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@46
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|7| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump b/runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump
deleted file mode 100644
index dbd86d4..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_highlight_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@58
-@75
-|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@64
-@6|\+0#e000e06&| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&@57
-@6|\+0#e000e06&| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@45
-@75
-|h+0#af5f00255&|i| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&|t+0#00e0003&|e|r|m|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&|c+0#00e0003&|t|e|r|m|f|g|=+0#0000000&|C+0#e000002&|y|a|n| +0#0000000&|g+0#00e0003&|u|i|f|g|=+0#0000000&|#+0#e000002&|8|0|a|0|f@1| +0#0000000&|g+0#00e0003&|u|i|=+0#0000000&|b+0#e000e06&|o|l|d| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@5
-@75
-|h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
-@6|\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&@59
-@75
-|h+0#af5f00255&|i| +0#0000000&|d+0#00e0003&|e|f|a|u|l|t| |l|i|n|k| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|F+0#00e0003&|o@1| +0#0000000&@63
-@6>\+0#e000e06&| +0#0000000&|C+0#00e0003&|o|m@1|e|n|t| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@46
-@57|5@1|,|7| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump
new file mode 100644
index 0000000..d7bfb6b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_00.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1>"+0&#ffffff0| |V|i|m| |:|l|e|t| |h|e|r|e|d|o|c| |c|o|m@1|a|n|d| +0#0000000&@46
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|f|o|l|d|i|n|g| |=| |"+0#e000002&|h|"| +0#0000000&@29
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l| |f|d|c|=|2| |f|d|l|=|9@1| |f|d|m|=|s|y|n|t|a|x| +0#0000000&@27
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@55
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |t|r|i|m| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump
new file mode 100644
index 0000000..623dc27
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_01.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |t|r|i|m| +0#0000000&@66
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| >l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|1| +0#0000000&@65
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|2| +0#0000000&@65
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|1| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|2| +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@57
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+@57|1|9|,|1| @10|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump
new file mode 100644
index 0000000..9135666
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_02.dump
@@ -0,0 +1,20 @@
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1>l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@47
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@59
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@45
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|0+0#e000002&|}+0#e000e06&| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|1+0#e000002&|}+0#e000e06&| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+@57|3|7|,|3| @9|1|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump
new file mode 100644
index 0000000..4bd2857
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_03.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |n|o| |i|n|t|e|r|p|o|l|a|t|i|o|n| |(|e|s|c|a|p|e|d| |{| |a|n|d| |}|)| +0#0000000&@36
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| >l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@47
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|5@1|,|1| @9|2|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump
new file mode 100644
index 0000000..b763e64
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_04.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@45
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |0|}+0#e000e06&@1| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{+0#e000e06&@1|1+0#e000002&| |+| |1|}+0#e000e06&@1| +0#0000000&@55
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |n|o| |i|n|t|e|r|p|o|l|a|t|i|o|n| +0#0000000&@54
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |0|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |1|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@55
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |0|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|{|1| |+| |1|}| +0#0000000&@61
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|7|3|,|0|-|1| @7|3|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump
new file mode 100644
index 0000000..e7b8a55
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_05.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{|1| |+| |0|}| +0#0000000&@59
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|l|i|n|e|{|1| |+| |1|}| +0#0000000&@59
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{|1| |+| |0|}| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|l|i|n|e|{|1| |+| |1|}| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r| |m|u|s|t| |n|o|t| |b|e| |f|o|l@1|o|w|e|d| |b|y| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@25
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| |E+0#e000002#ffffff0|N|D| | +0#0000000&@68
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|9|1|,|0|-|1| @7|4|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump
new file mode 100644
index 0000000..6ed3eb5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_06.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"| |E|N|D| |"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |E|N|D| +0#0000000&@57
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0|E|N|D| | +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1|E|N|D| | +0#0000000&@66
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| | +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r| |m|u|s|t| |b|e| |v|e|r|t|i|c|a|l@1|y| |a|l|i|g|n|e|d| |w|i|t|h| |:|l|e|t| |(|i|f| |p|r|e|c|e|d|e|d| |b|y| |w|h|i|t|e|s|p
+| +0&#a8a8a8255@1|a+0&#ffffff0|c|e|)| +0#0000000&@68
+@57|1|0|9|,|0|-|1| @6|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump
new file mode 100644
index 0000000..85bb2f3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_07.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r| |m|u|s|t| |b|e| |v|e|r|t|i|c|a|l@1|y| |a|l|i|g|n|e|d| |w|i|t|h| |:|l|e|t| |(|i|f| |p|r|e|c|e|d|e|d| |b|y| |w|h|i|t|e|s|p
+| +0&#a8a8a8255@1|a+0&#ffffff0|c|e|)| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@44
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@1>E|N|D| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| +0#0000000&@65
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@43
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@52
+||+0#0000e05#a8a8a8255| |E+0#e000002#ffffff0|N|D| | +0#0000000&@68
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+@57|1|2|5|,|3| @8|6|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump
new file mode 100644
index 0000000..16149fe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_08.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| +0#0000000&@65
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1>"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@41
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@3|E|N|D| | +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@4|E|N|D| +0#0000000&@64
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@41
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@4|E|N|D| | +0#0000000&@63
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+@57|1|4|3|,|3| @8|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump
new file mode 100644
index 0000000..fbb7d9d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_09.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@1|E|N|D| +0#0000000&@67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D| |"|]|)| +0#0000000&@41
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| |E+0#e000002#ffffff0|N|D| | +0#0000000&@68
+||+0#0000e05#a8a8a8255| >E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0|E|N|D| +0#0000000&@68
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|"+0#0000e05&| |a|s@1|e|r|t|_|e|q|u|a|l|(|f|o@1|,| |[|"|E|N|D|"|]|)| +0#0000000&@42
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@1|l+0#af5f00255&|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |E|N|D| +0#0000000&@50
+||+0#0000e05#a8a8a8255| | +0#e000002#ffffff0@2|E|N|D| +0#0000000&@66
+||+0#0000e05#a8a8a8255| |E+0#e000e06#ffffff0|N|D| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r|s| +0#0000000&@59
+@57|1|6|1|,|1| @8|8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
new file mode 100644
index 0000000..93db587
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_10.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|n|d| |m|a|r|k|e|r|s| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@48
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| >!+0#e000e06#ffffff0|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@47
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |0+0#e000e06#ffffff0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |A|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@47
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|1| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |l+0#e000002#ffffff0|i|n|e|2| +0#0000000&@67
+||+0#0000e05#a8a8a8255| |A+0#e000e06#ffffff0|!|@|#|$|%|^|&|*|(|)|_|+| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|"+0&#ffffff0| |e|r@1|o|r| |-| |l|e|a|d|i|n|g| |l|o|w|e|r|c|a|s|e| |c|h|a|r|a|c|t|e|r| +0#0000000&@35
+| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#af5f00255&|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
+@57|1|7|9|,|1| @8|9|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
new file mode 100644
index 0000000..f63b3b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_let_heredoc_11.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1|l+0#af5f00255#ffffff0|e|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#af5f00255&|<@1| +0#0000000&|a+0#af5f00255&|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@47
+| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e|1| @67
+| +0#0000e05#a8a8a8255@1|l+0#0000000#ffffff0|i|n|e|2| @67
+| +0#0000e05#a8a8a8255@1|a+0#af5f00255#ffffff0|!|@+0#0000000&|#|$|%+0#af5f00255&|^+0#0000000&|&|*+0#af5f00255&|(+0#e000e06&|)|_+0#0000000&|++0#af5f00255&| +0#0000000&@59
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|6|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump
new file mode 100644
index 0000000..bda8d79
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| +0#0000000&@49
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+@75
+|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@64
+@75
+|"+0#0000e05&| |L|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@60
+@75
+@2|"+0#0000e05&| |A|n|o|t|h|e|r| |l|i|n|e| |c|o|m@1|e|n|t| +0#0000000&@50
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
+@75
+|"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
+|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
+|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
+|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-|@+0#4040ff13&@2
+| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump
new file mode 100644
index 0000000..2fb05a7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_01.dump
@@ -0,0 +1,20 @@
+|'+0&#ffffff0|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| +0#0000000&@33
+@75
+|"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| +0#0000000&@56
+|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| +0#0000000&@2
+|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| +0#0000000&@4
+><+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
+|x|a|d|e|c|i|m|a|l| +0#0000000&@65
+@75
+|"+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@43
+|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@15|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
+|n|t| +0#0000000&@72
+|\|"| |“| @26|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
+@1|e|n|t| +0#0000000&@70
+|:| |"| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
+@1|e|n|t| +0#0000000&@70
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump
new file mode 100644
index 0000000..6649475
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_bar_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| |(|a|f|t|e|r| |"+0#e000002&|||"|)+0#0000e05&| +0#0000000&@37
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|.@2|"| +0#0000000&||| |l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@51
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump
new file mode 100644
index 0000000..f0e5adc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_loadkeymap_after_colon_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|l|o|a|d|k|e|y|m|a|p| |c|o|m@1|a|n|d| |(|a|f|t|e|r| |"+0#e000002&|:|"|)+0#0000e05&| +0#0000000&@37
+@75
+|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
+@75
+|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|:|k|e|y|m|a|p|_|n|a|m|e| +0#0000000&|=+0#af5f00255&| +0#0000000&|"+0#e000002&|s|y|n|t|a|x|-|t|e|s|t|"| +0#0000000&@41
+@75
+|:|l+0#af5f00255&|o|a|d|k|e|y|m|a|p| +0#0000000&@63
+@75
+|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| +0#0000000&@54
+@75
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
index 371c1ce..763e641 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_00.dump
@@ -5,9 +5,6 @@
 |m+0#af5f00255&|a|p| +0#0000000&@71
 |m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |r|h|s| @63
 @75
-|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@51
-|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@50
-@75
 |m+0#af5f00255&|a|p|c|l|e|a|r| +0#0000000&@1|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |m+0#af5f00255&|a|p|c|l|e|a|r|!| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |n+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
@@ -17,4 +14,7 @@
 |o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
+|c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
+|t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
+@75
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_01.dump b/runtime/syntax/testdir/dumps/vim_ex_map_01.dump
index 7b43533..0d9edd4 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_01.dump
@@ -1,12 +1,9 @@
-|v+0#af5f00255#ffffff0|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
-|x+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
-|s+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
-|o+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
+|o+0#af5f00255#ffffff0|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |i+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
->l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
+|l+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |c+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
 |t+0#af5f00255&|m|a|p|c|l|e|a|r| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&@56
-@75
+> @74
 @75
 |"+0#0000e05&| |:|h|e|l|p| |m|a|p|-|b|a|r| +0#0000000&@59
 @75
@@ -17,4 +14,7 @@
 |"+0#0000e05&| |^|V||| @6|a|l|w|a|y|s|,| |i|n| |V|i|m| |a|n|d| |V|i| +0#0000000&@41
 |m+0#af5f00255&|a|p| +0#0000000&|_|l| |:|!|l|s| |^+0#0000e05&|V||+0#0000000&| |m|o|r|e|^|M|:|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@37
 @75
-@57|1|9|,|1| @9|1|9|%| 
+|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |:|s|e|a|r|c|h|(|'|f|o@1|\@1|||b|a|r|'|)|<+0#e000e06&|C|R|>|:+0#0000000&|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@27
+@75
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_02.dump b/runtime/syntax/testdir/dumps/vim_ex_map_02.dump
index c598781..58ec003 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_02.dump
@@ -1,12 +1,9 @@
 | +0&#ffffff0@74
-|m+0#af5f00255&|a|p| +0#0000000&|l|h|s| |:|s|e|a|r|c|h|(|'|f|o@1|\@1|||b|a|r|'|)|<+0#e000e06&|C|R|>|:+0#0000000&|e|c|h|o| |"|r|h|s|"|<+0#e000e06&|C|R|>| +0#0000000&@27
-@75
-@75
 |"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |R|H|S| +0#0000000&@59
-> @74
+@75
 |m+0#af5f00255&|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|b+0#0000000&|a|z| @59
 @2|\+0#e000e06&| +0#0000000&|:|e|c|h|o| |(|<+0#e000e06&|b|a|r|>| +0#0000000&@58
-@2|\+0#e000e06&| +0#0000000&@71
+@2>\+0#e000e06&| +0#0000000&@71
 @2|\+0#e000e06&|'+0#0000000&|b|a|r|'|)|<+0#e000e06&|c|r|>| +0#0000000&@61
 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
 @75
@@ -17,4 +14,7 @@
 |m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67
 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
 @2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60
-@57|3|7|,|0|-|1| @7|4|5|%| 
+@75
+|m+0#af5f00255&|a|p| +0#0000000&|l|h|s|^+0#0000e05&|V| +0#0000000&@65
+@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
+@57|3|7|,|3| @9|3|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_03.dump b/runtime/syntax/testdir/dumps/vim_ex_map_03.dump
index 4ad6e82..62966be 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_03.dump
@@ -1,12 +1,9 @@
-| +0&#ffffff0@1|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60
-@75
-|m+0#af5f00255&|a|p| +0#0000000&|l|h|s|^+0#0000e05&|V| +0#0000000&@65
-@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
+| +0&#ffffff0@1|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
 @2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60
-> @74
+@75
 |m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|s| @64
 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
-@2|\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60
+@2>\+0#e000e06&| +0#0000000&|e|c|h|o| |"|f|o@1|"| @60
 @75
 |m+0#af5f00255&|a|p| +0#0000000&|l|^+0#0000e05&|V| +0#0000000&|h|s| @64
 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
@@ -17,4 +14,7 @@
 @75
 |m+0#af5f00255&|a|p| +0#0000000&|l|h|s| @67
 @2|"+0#0000e05&|\| |c|o|m@1|e|n|t| |(|m|a|t|c|h|e|s| |a|s| |R|H|S| |b|u|t| |h|a|r|m|l|e|s@1|)| +0#0000000&@32
-@57|5@1|,|0|-|1| @7|7|2|%| 
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|l|e|a|r|"| +0#0000000&@62
+@75
+@75
+@57|5@1|,|3| @9|5|6|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_04.dump b/runtime/syntax/testdir/dumps/vim_ex_map_04.dump
index 254fc91..7f12539 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_map_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_04.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|"+0#0000e05&|\| |c|o|m@1|e|n|t| |(|m|a|t|c|h|e|s| |a|s| |R|H|S| |b|u|t| |h|a|r|m|l|e|s@1|)| +0#0000000&@32
-|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|l|e|a|r|"| +0#0000000&@62
+| +0&#ffffff0@74
+|"+0#0000e05&| |D|i|f@1|e|r|e|n|t|i|a|t|e| |m|a|p|(|)| |f|r|o|m| |:|m|a|p| +0#0000000&@43
 @75
+|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@46
 @75
-|"+0#0000e05&| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59
-> @74
-|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|f+0#0000000&|o@1| |:|e|c|h|o| |c|a|l@1|(| @42
-@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
-@2|\+0#e000e06&| +0#0000000&|{|x|-|>|x|}|,| @63
-@2|\+0#e000e06&| +0#0000000&|[|'|f|o@1|'|]|)|<+0#e000e06&|c|r|>| +0#0000000&@58
+>c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@51
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@50
 @75
-|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|b+0#0000000&|a|r| |:|e|c|h|o| |(| @46
-@2|\+0#e000e06&| +0#0000000&@71
-@2|\+0#e000e06&| +0#0000000&|'|b|a|r|'|)|<+0#e000e06&|c|r|>| +0#0000000&@60
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+@2|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@44
+@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@49
+@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|p| +0#0000000&|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@48
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
 @75
-@75
-|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000000&@64
-|"+0#0000e05&| @2|/|a|u|t|o|l|o|a|d|/|n|e|t|r|w|.|v|i|m| +0#0000000&@51
-@75
-@57|7|3|,|0|-|1| @7|9|8|%| 
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+@2|m+0#af5f00255&|a|p| +0#0000000&|(| |:|e|c|h|o| |"|o|p|e|n|-|p|a|r|e|n|"|<+0#e000e06&|C|R|>| +0#0000000&@44
+@2|m+0#00e0e07&|a|p|(+0#e000e06&|l+0#00e0e07&|i|s|t|,+0#0000000&| |'+0#e000002&|v|:|v|a|l|'|)+0#e000e06&| +0#0000000&@54
+| +0#0000e05&@1|#| |:|m|a|p| |L|H|S|=|(|l|i|s|t|,| |R|H|S|=|'|v|:|v|a|l|'|)| +0#0000000&@42
+@2|m+0#af5f00255&|a|p| +0#0000000&|(|l|i|s|t|,| |'|v|:|v|a|l|'|)| @53
+@57|7|3|,|1| @9|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_05.dump b/runtime/syntax/testdir/dumps/vim_ex_map_05.dump
new file mode 100644
index 0000000..4bb04c0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|m+0#af5f00255&|a|p| +0#0000000&|(|l|i|s|t|,| |'|v|:|v|a|l|'|)| @53
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@75
+@75
+|"+0#0000e05&| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59
+> @74
+|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|f+0#0000000&|o@1| |:|e|c|h|o| |c|a|l@1|(| @42
+@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
+@2|\+0#e000e06&| +0#0000000&|{|x|-|>|x|}|,| @63
+@2|\+0#e000e06&| +0#0000000&|[|'|f|o@1|'|]|)|<+0#e000e06&|c|r|>| +0#0000000&@58
+@75
+|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|b+0#0000000&|a|r| |:|e|c|h|o| |(| @46
+@2|\+0#e000e06&| +0#0000000&@71
+@2|\+0#e000e06&| +0#0000000&|'|b|a|r|'|)|<+0#e000e06&|c|r|>| +0#0000000&@60
+@75
+@75
+|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000000&@64
+|"+0#0000e05&| @2|/|a|u|t|o|l|o|a|d|/|n|e|t|r|w|.|v|i|m| +0#0000000&@51
+@75
+@57|9|1|,|0|-|1| @7|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_06.dump b/runtime/syntax/testdir/dumps/vim_ex_map_06.dump
new file mode 100644
index 0000000..35e9022
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_map_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+>i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|m|a|p|t|o|(+0#e000e06&|'+0#e000002&|<|P|l|u|g|>|N|e|t|r|w|O|p|e|n|F|i|l|e|'|)+0#e000e06&| +0#0000000&@9|||n+0#af5f00255&|m|a|p| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|<+0#e000e06&|n|o|w|a|i
+|t|>| +0#0000000&|%| |<+0#e000e06&|P|l|u|g|>|N+0#0000000&|e|t|r|w|O|p|e|n|F|i|l|e|||e+0#af5f00255&|n|d|i|f| +0#0000000&@44
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|0|5|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_map_99.dump b/runtime/syntax/testdir/dumps/vim_ex_map_99.dump
deleted file mode 100644
index 37ee7cf..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_map_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-@75
-|"+0#0000e05&| |I|s@1|u|e| @1|#|1|2|6|7|2| +0#0000000&@59
-@75
-|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|f+0#0000000&|o@1| |:|e|c|h|o| |c|a|l@1|(| @42
-@2|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@62
-@2|\+0#e000e06&| +0#0000000&|{|x|-|>|x|}|,| @63
-@2|\+0#e000e06&| +0#0000000&|[|'|f|o@1|'|]|)|<+0#e000e06&|c|r|>| +0#0000000&@58
-@75
-|n+0#af5f00255&@1|o|r|e|m|a|p| +0#0000000&|<+0#e000e06&|l|e|a|d|e|r|>|b+0#0000000&|a|r| |:|e|c|h|o| |(| @46
-@2|\+0#e000e06&| +0#0000000&@71
-@2|\+0#e000e06&| +0#0000000&|'|b|a|r|'|)|<+0#e000e06&|c|r|>| +0#0000000&@60
-@75
-@75
-|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000000&@64
-|"+0#0000e05&| @2|/|a|u|t|o|l|o|a|d|/|n|e|t|r|w|.|v|i|m| +0#0000000&@51
-@75
->i+0#af5f00255&|f| +0#0000000&|!+0#af5f00255&|h+0#00e0e07&|a|s|m|a|p|t|o|(+0#e000e06&|'+0#e000002&|<|P|l|u|g|>|N|e|t|r|w|O|p|e|n|F|i|l|e|'|)+0#e000e06&| +0#0000000&@9|||n+0#af5f00255&|m|a|p| +0#0000000&|<+0#e000e06&|b|u|f@1|e|r|>| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|<+0#e000e06&|n|o|w|a|i
-|t|>| +0#0000000&|%| |<+0#e000e06&|P|l|u|g|>|N+0#0000000&|e|t|r|w|O|p|e|n|F|i|l|e|||e+0#af5f00255&|n|d|i|f| +0#0000000&@44
-@57|8|7|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_match_00.dump b/runtime/syntax/testdir/dumps/vim_ex_match_00.dump
new file mode 100644
index 0000000..c36d37f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_match_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|m|a|t|c|h|,| |:|2|m|a|t|c|h| |a|n|d| |:|3|m|a|t|c|h| |c|o|m@1|a|n|d|s| +0#0000000&@32
+@75
+|m+0#af5f00255&|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@54
+|m+0#af5f00255&|a|t|c|h| +0#0000000&@69
+|m+0#af5f00255&|a|t|c|h| +0#0000000&|n+0#00e0003&|o|n|e| +0#0000000&@64
+@75
+|2+0#af5f00255&|m|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@53
+|2+0#af5f00255&|m|a|t|c|h| +0#0000000&@68
+|2+0#af5f00255&|m|a|t|c|h| +0#0000000&|n+0#00e0003&|o|n|e| +0#0000000&@63
+@75
+|3+0#af5f00255&|m|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@53
+|3+0#af5f00255&|m|a|t|c|h| +0#0000000&@68
+|3+0#af5f00255&|m|a|t|c|h| +0#0000000&|n+0#00e0003&|o|n|e| +0#0000000&@63
+@75
+@75
+|"+0#0000e05&| |D|i|f@1|e|r|e|n|t|i|a|t|e| |m|a|p|(|)| |f|r|o|m| |:|m|a|p| +0#0000000&@43
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@44
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@43
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_match_01.dump b/runtime/syntax/testdir/dumps/vim_ex_match_01.dump
new file mode 100644
index 0000000..815ed68
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_match_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@75
+|"+0#0000e05&| |D|i|f@1|e|r|e|n|t|i|a|t|e| |m|a|p|(|)| |f|r|o|m| |:|m|a|p| +0#0000000&@43
+@75
+|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@44
+>c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@43
+@75
+|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
+@2|m+0#af5f00255&|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@52
+@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@42
+@2|c+0#af5f00255&|a|l@1| +0#0000000&|m+0#00e0e07&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@41
+|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+@75
+|d+0#af5f00255&|e|f| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@65
+@2|m+0#af5f00255&|a|t|c|h| +0#0000000&|F+0#00e0003&|o@1|G|r|o|u|p| +0#0000000&|/+0#e000e06&|F+0#0000000&|o@1|/+0#e000e06&| +0#0000000&@52
+@2|m+0#af5f00255&|a|t|c|h|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@47
+| +0#0000e05&@1|#| |E|r@1|o|r|:| |b|a|d| |:|m|a|t|c|h| |c|o|m@1|a|n|d| |-| |t|r|a|i|l|i|n|g| |c|h|a|r|a|c|t|e|r|s| +0#0000000&@23
+@2|m+0#af5f00255&|a|t|c|h| +0#0000000&|(+0#e000e06&|h+0#00e0e07&|a|y|s|t|a|c|k|,+0#0000000&| |'+0#e000002&|n|e@1|d|l|e|'|)+0#e000e06&| +0#0000000&@46
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+@57|1|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump
index 2ef89ec..2ba8749 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_03.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@7|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
+| +0&#ffffff0@7|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
 @75
 |a+0#af5f00255&|n| +0#0000000&|<+0#e000e06&|s|i|l|e|n|t|>| +0#0000000&|1+0#e000002&|0|.|3@1|0| +0#0000000&|&+0#e000e06&|F|i|l|e|.|&|C|l|o|s|e|<|T|a|b|>|:|c|l|o|s|e| +0#0000000&|:|i|f| |w|i|n|h|e|i|g|h|t|(|2|)| |<| |0| |&@1| |t|a|b|p|a|g|e|w
 |i|n@1|r|(|2|)| |=@1| |0| |<+0#e000e06&|B|a|r|>| +0#0000000&@56
-@8|\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |e|n|e|w| |<+0#e000e06&|B|a|r|>| +0#0000000&@44
-@8>\+0#e000e06&| +0#0000000&|e|l|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@54
+@8>\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |e|n|e|w| |<+0#e000e06&|B|a|r|>| +0#0000000&@44
+@8|\+0#e000e06&| +0#0000000&|e|l|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@54
 @8|\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |c|l|o|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@43
 @8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
 @75
@@ -16,5 +17,4 @@
 @8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
 @8|\+0#e000e06&| +0#0000000&@2|c|o|n|f|i|r|m| |c|l|o|s|e| |<+0#e000e06&|B|a|r|>| +0#0000000&@43
 @8|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
-@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
-@57|5@1|,|2|-|9| @7|7|1|%| 
+@57|5|4|,|2|-|9| @7|7|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
index ad079e6..7bc4ebd 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_04.dump
@@ -1,9 +1,11 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@7|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@56
+@8|\+0#e000e06&| +0#0000000&|e|n|d|i|f|<+0#e000e06&|C|R|>| +0#0000000&@55
+@75
 @75
 |"+0#0000e05&| |p|o|p|u|p| |m|e|n|u|s| +0#0000000&@61
-|p+0#af5f00255&|o|p|u|p| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
+>p+0#af5f00255&|o|p|u|p| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
 |p+0#af5f00255&|o|p|u|p|!| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
-> @74
+@75
 @75
 |"+0#0000e05&| |I|s@1|u|e| |#|1|4|2|3|0| +0#0000000&@60
 @75
@@ -15,6 +17,4 @@
 @12|H|i|s|t|o|r|y|J|u|m|p|(+0#e000e06&|r+0#00e0e07&|e|s|.+0#af5f00255&|t+0#00e0e07&|e|x|t|)+0#e000e06&| +0#0000000&@41
 @8|}+0#e000e06&|)| +0#0000000&@64
 |e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|p+0#af5f00255&|o|p|u|p|\+0#e000e06&|.|F|i|l|t|e|r|M|e|n|u|<|T|a|b|>|F|i|l|t|e|r|(|)|<|C|R|>| +0#0000000&@40
-@57|7|3|,|0|-|1| @7|9|8|%| 
+@57|7|1|,|1| @9|9|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_05.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_05.dump
new file mode 100644
index 0000000..4d9e9cc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_menu_05.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&@68
+@75
+|p+0#af5f00255&|o|p|u|p|\+0#e000e06&|.|F|i|l|t|e|r|M|e|n|u|<|T|a|b|>|F|i|l|t|e|r|(|)|<|C|R|>| +0#0000000&@40
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|8|7|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menu_99.dump b/runtime/syntax/testdir/dumps/vim_ex_menu_99.dump
deleted file mode 100644
index 80608b7..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_menu_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |p|o|p|u|p| |m|e|n|u|s| +0#0000000&@61
-|p+0#af5f00255&|o|p|u|p| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&@1||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
-|p+0#af5f00255&|o|p|u|p|!| +0#0000000&|&+0#e000e06&|F|o@1| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@50
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|4|2|3|0| +0#0000000&@60
-@75
-|"+0#0000e05&| |a| |m|e|n|u| |i|t|e|m| |n|a|m|e| |c|a|n@1|o|t| |s|t|a|r|t| |w|i|t|h| |'|.|'| +0#0000000&@34
-@75
-|e+0#af5f00255&|x|p|o|r|t| +0#0000000&|d+0#af5f00255&|e|f| +0#0000000&|H|i|s|t|o|r|y|J|u|m|p|M|e|n|u|(+0#e000e06&|)| +0#0000000&@46
-@4|p+0#af5f00255&|o|p|u|p|.|F+0#0000000&|i|l|t|e|r|M|e|n|u|(+0#e000e06&|"+0#e000002&|J|u|m|p| |h|i|s|t|o|r|y|"|,+0#0000000&| |d+0#00e0e07&|i|r|_|h|i|s|t|,+0#0000000&| @28
-@8|(+0#e000e06&|r+0#00e0e07&|e|s|,+0#0000000&| |_+0#00e0e07&|)+0#e000e06&| +0#0000000&|=+0#af5f00255&|>| +0#0000000&|{+0#e000e06&| +0#0000000&@53
-@12|H|i|s|t|o|r|y|J|u|m|p|(+0#e000e06&|r+0#00e0e07&|e|s|.+0#af5f00255&|t+0#00e0e07&|e|x|t|)+0#e000e06&| +0#0000000&@41
-@8|}+0#e000e06&|)| +0#0000000&@64
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|p+0#af5f00255&|o|p|u|p|\+0#e000e06&|.|F|i|l|t|e|r|M|e|n|u|<|T|a|b|>|F|i|l|t|e|r|(|)|<|C|R|>| +0#0000000&@40
-> @74
-@57|8|7|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump b/runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump
new file mode 100644
index 0000000..06d85e9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_menutranslate_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@54
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5|1|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump b/runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump
deleted file mode 100644
index 7f6ccfc..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_menutranslate_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|m+0#af5f00255#ffffff0|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@61
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|o+0#0000000&@1|\+0#e000e06&| |b+0#0000000&|a|r| @57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|u+0#0000000&|b|a|r| ||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@47
-@75
-|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@61
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|o+0#0000000&@1|\+0#e000e06&| |b+0#0000000&|a|r| @57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|u+0#0000000&|b|a|r||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@48
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@75
-|m+0#af5f00255&|e|n|u|t|r|a|n|s|l|a|t|e| +0#0000000&@61
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|o+0#0000000&@1|\+0#e000e06&| |b+0#0000000&|a|r| @57
-@6|"+0#0000e05&|\| |c|o|m@1|e|n|t| +0#0000000&@58
-@6|\+0#e000e06&| +0#0000000&|&+0#e000e06&|F|u+0#0000000&|b|a|r| @60
-@6|\+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@54
-> @74
-@57|5|1|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump
new file mode 100644
index 0000000..5bf3cf1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_01.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
+| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+@75
+|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
+| +0#0000e05&@1>#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
+|}+0#e000e06&| +0#0000000&@73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|9|,|3| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump
deleted file mode 100644
index 8559c6c..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|v|i|m|s|y|n|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s| |=| |v|:|f|a|l|s|e| +0#0000000&@19
-@75
-|"+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@55
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
-@2|"+0#0000e05&| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@65
-| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@75
-|c+0#af5f00255&|o|m@1|a|n|d| +0#0000000&|F|o@1| |{+0#e000e06&| +0#0000000&@61
-| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
-|}+0#e000e06&| +0#0000000&@73
-@75
-|a+0#af5f00255&|u|t|o|c|m|d| +0#0000000&|B+0#00e0003&|u|f|N|e|w|F|i|l|e| +0#0000000&|*| |{+0#e000e06&| +0#0000000&@52
-| +0#0000e05&@1|#| |p|r|e| |"|s|t|r|i|n|g|"| |p|o|s|t| +0#0000000&@53
->}+0#e000e06&| +0#0000000&@73
-@57|2|0|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_00.dump b/runtime/syntax/testdir/dumps/vim_ex_set_00.dump
new file mode 100644
index 0000000..3f0471b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |:|s|e|t| |c|o|m@1|a|n|d| +0#0000000&@56
+@75
+|s+0#af5f00255&|e|t| +0#0000000&@71
+|s+0#af5f00255&|e|t|!| +0#0000000&@70
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@67
+|s+0#af5f00255&|e|t|!| +0#0000000&|a+0#e000e06&|l@1| +0#0000000&@66
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|e|r|m|c|a|p| +0#0000000&@63
+|s+0#af5f00255&|e|t|!| +0#0000000&|t+0#e000e06&|e|r|m|c|a|p| +0#0000000&@62
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|?| +0#0000000&@64
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h| +0#0000000&@65
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|n+0#e000e06&|o|a|l@1|o|w|r|e|v|i|n|s| +0#0000000&@57
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1|o|w|r|e|v|i|n|s|!| +0#0000000&@58
+|s+0#af5f00255&|e|t| +0#0000000&|i+0#e000e06&|n|v|a|l@1|o|w|r|e|v|i|n|s| +0#0000000&@56
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&| +0#0000000&@64
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&|v|i| +0#0000000&@62
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_01.dump b/runtime/syntax/testdir/dumps/vim_ex_set_01.dump
new file mode 100644
index 0000000..012170e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1|o|w|r|e|v|i|n|s|!| +0#0000000&@58
+|s+0#af5f00255&|e|t| +0#0000000&|i+0#e000e06&|n|v|a|l@1|o|w|r|e|v|i|n|s| +0#0000000&@56
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&| +0#0000000&@64
+>s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&|v|i| +0#0000000&@62
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|&|v|i|m| +0#0000000&@61
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l@1|&| +0#0000000&@66
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|=+0#af5f00255&|1+0#0000000&|2|8| @61
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|:+0#af5f00255&|1+0#0000000&|2|8| @61
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h| +0#0000000&|=+0#af5f00255&|1+0#0000000&|2|8| @60
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h| +0#0000000&|:+0#af5f00255&|1+0#0000000&|2|8| @60
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|++0#af5f00255&|=|9+0#0000000&|6| @61
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|^+0#af5f00255&|=|2+0#0000000&| @62
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|-+0#af5f00255&|=|9+0#0000000&|6| @61
+@57|1|9|,|1| @9|1|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_02.dump b/runtime/syntax/testdir/dumps/vim_ex_set_02.dump
new file mode 100644
index 0000000..d6328d2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_02.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0|e|t| +0#0000000&|a+0#e000e06&|l|e|p|h|-+0#af5f00255&|=|9+0#0000000&|6| @61
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|a|c|k|s|p|a|c|e|++0#af5f00255&|=|n+0#0000000&|o|s|t|o|p| @53
+|s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|a|c|k|s|p|a|c|e|^+0#af5f00255&|=|n+0#0000000&|o|s|t|o|p| @53
+|s+0#af5f00255&|e|t| +0#0000000&|b+0#e000e06&|a|c|k|s|p|a|c|e|-+0#af5f00255&|=|n+0#0000000&|o|s|t|o|p| @53
+> @74
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|i| +0#0000000&|n+0#e000e06&|o|s|i| +0#0000000&|s+0#e000e06&|w|=+0#af5f00255&|3+0#0000000&| |t+0#e000e06&|w|=+0#af5f00255&|3+0#0000000&| @53
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|<|t+0#e000e06&|_|#|4|>+0#0000000&|=|^|[|O|t| |"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@51
+|s+0#af5f00255&|e|t| +0#0000000&|<|M|-|b|>|=|^|[|b| @2|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000000#ffffff0@51
+@75
+|s+0#af5f00255&|e|t|l|o|c|a|l| +0#0000000&|a+0#e000e06&|u|t|o|r|e|a|d| +0#0000000&@57
+|s+0#af5f00255&|e|t|g|l|o|b|a|l| +0#0000000&|n+0#e000e06&|o|a|u|t|o|r|e|a|d| +0#0000000&@54
+|s+0#af5f00255&|e|t| +0#0000000&|a+0#e000e06&|u|t|o|r|e|a|d|<| +0#0000000&@61
+@75
+@75
+|"+0#0000e05&| |:|h|e|l|p| |o|p|t|i|o|n|-|b|a|c|k|s|l|a|s|h| +0#0000000&@50
+@75
+|"+0#0000e05&| |W|h|e|n| |s|e|t@1|i|n|g| |o|p|t|i|o|n|s| |u|s|i|n|g| |||:|l|e|t||| |a|n|d| |||l|i|t|e|r|a|l|-|s|t|r|i|n|g|||,| |y|o|u| |n|e@1|d| |t|o| |u|s|@+0#4040ff13&@2
+| +0#0000000&@56|3|7|,|0|-|1| @7|4|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_03.dump b/runtime/syntax/testdir/dumps/vim_ex_set_03.dump
new file mode 100644
index 0000000..fb013bc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_03.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |W|h|e|n| |s|e|t@1|i|n|g| |o|p|t|i|o|n|s| |u|s|i|n|g| |||:|l|e|t||| |a|n|d| |||l|i|t|e|r|a|l|-|s|t|r|i|n|g|||,| |y|o|u| |n|e@1|d| |t|o| |u|s|e| |o
+|n|e| +0#0000000&@72
+|"+0#0000e05&| |f|e|w|e|r| |l|a|y|e|r| |o|f| |b|a|c|k|s|l|a|s|h|.| |A| |f|e|w| |e|x|a|m|p|l|e|s|:| +0#0000000&@31
+|s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|\| |f|i|l|e| @5|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e| |f|i|l|e|"| +0#0000000&@22
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|m|a|k|e|p|r|g|=+0#af5f00255&|'+0#e000002&|m|a|k|e| |f|i|l|e|'| +0#0000000&@3|"+0#0000e05&| |(|s|a|m|e| |a|s| |a|b|o|v|e|)| +0#0000000&@29
+>s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|\@2| |f|i|l|e| @3|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e|\| |f|i|l|e|"| +0#0000000&@21
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|\| |/|u|s|r|/|t|a|g|s| @3|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s|"| +0#0000e05&|a|n|d| |"+0#e000002&|/|u|s|r|/|t|a|g|s|"| +0#0000000&@11
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|\@2| |f|i|l|e| @6|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s| |f|i|l|e|"| +0#0000000&@22
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|a|g|s|=+0#af5f00255&|'+0#e000002&|t|a|g|s|\| |f|i|l|e|'| +0#0000000&@5|"+0#0000e05&| |(|s|a|m|e| |a|s| |a|b|o|v|e|)| +0#0000000&@29
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|,+0#e000e06&|f+0#0000000&|i|l|e| @6|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e|,|f|i|l|e|"| +0#0000000&@22
+|s+0#af5f00255&|e|t| +0#0000000&|m+0#e000e06&|a|k|e|p|r|g|=+0#af5f00255&|m+0#0000000&|a|k|e|\@1|,+0#e000e06&|f+0#0000000&|i|l|e| @4|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|m|a|k|e|\|,|f|i|l|e|"| +0#0000000&@21
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|,+0#e000e06&|f+0#0000000&|i|l|e| @9|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s|"| +0#0000e05&|a|n|d| |"+0#e000002&|f|i|l|e|"| +0#0000000&@16
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|a|g|s|=+0#af5f00255&|t+0#0000000&|a|g|s|\@1|,+0#e000e06&|f+0#0000000&|i|l|e| @7|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|t|a|g|s|,|f|i|l|e|"| +0#0000000&@22
+|l+0#af5f00255&|e|t| +0#0000000&|&+0#00e0e07&|t|a|g|s|=+0#af5f00255&|'+0#e000002&|t|a|g|s|\|,|f|i|l|e|'| +0#0000000&@5|"+0#0000e05&| |(|s|a|m|e| |a|s| |a|b|o|v|e|)| +0#0000000&@29
+@75
+|"+0#0000e05&| |T|h|i|s| |e|x|a|m|p|l|e| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|||t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@15
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|i|t|l|e|s|t|r|i|n|g|=+0#af5f00255&|h+0#0000000&|i|\|||t|h|e|r|e| @49
+|"+0#0000e05&| |T|h|i|s| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|"| +0#0000e05&|a|n|d| |'|i|c|o|n|s|t|r|i|n|g|'| |t|o| |"+0#e000002&|t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@1
+@57|5|4|,|1| @9|6|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_04.dump b/runtime/syntax/testdir/dumps/vim_ex_set_04.dump
new file mode 100644
index 0000000..6280f6a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_04.dump
@@ -0,0 +1,20 @@
+|"+0#0000e05#ffffff0| |T|h|i|s| |s|e|t|s| |t|h|e| |'|t|i|t|l|e|s|t|r|i|n|g|'| |o|p|t|i|o|n| |t|o| |"+0#e000002&|h|i|"| +0#0000e05&|a|n|d| |'|i|c|o|n|s|t|r|i|n|g|'| |t|o| |"+0#e000002&|t|h|e|r|e|"|:+0#0000e05&| +0#0000000&@1
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|i|t|l|e|s|t|r|i|n|g|=+0#af5f00255&|h+0#0000000&|i|||s+0#af5f00255&|e|t| +0#0000000&|i+0#e000e06&|c|o|n|s|t|r|i|n|g|=+0#af5f00255&|t+0#0000000&|h|e|r|e| @35
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|d+0#e000e06&|i|r|=+0#af5f00255&|\+0#0000000&@1|m|a|c|h|i|n|e|\|p|a|t|h| @5|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|\@1|m|a|c|h|i|n|e|\|p|a|t|h|"| +0#0000000&@17
+|s+0#af5f00255&|e|t| +0#0000000&|d+0#e000e06&|i|r|=+0#af5f00255&|\+0#0000000&@3|m|a|c|h|i|n|e|\@1|p|a|t|h| @2|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|\@1|m|a|c|h|i|n|e|\|p|a|t|h|"| +0#0000000&@17
+>s+0#af5f00255&|e|t| +0#0000000&|d+0#e000e06&|i|r|=+0#af5f00255&|\+0#0000000&@1|p|a|t|h|\@1|f|i|l|e| @7|"+0#0000e05&| |r|e|s|u|l|t|s| |i|n| |"+0#e000002&|\@1|p|a|t|h|\|f|i|l|e|"| +0#0000e05&|(|w|r|o|n|g|!|)| +0#0000000&@11
+@75
+@75
+|"+0#0000e05&| |:|h|e|l|p| |:|s|e|t|_|e|n|v| +0#0000000&@58
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|t+0#e000e06&|e|r|m|=+0#af5f00255&|$+0#e000e06&|T|E|R|M|.+0#0000000&|n|e|w| @56
+|s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|/+0#0000000&|u|s|r|/|$+0#e000e06&|I|N|C|L|U|D|E|,|$|H|O|M|E|/+0#0000000&|i|n|c|l|u|d|e|,+0#e000e06&|.+0#0000000&| @36
+@75
+@75
+|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |:|s|e|t| |a|n|d| |o|p|t|i|o|n| |v|a|l|u|e|s| +0#0000000&@40
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @54
+@6|"+0#0000e05&|\| |d|e|f| |i|s| |t|h|e| |'|d|e|f|i|n|e|'| |o|p|t|i|o|n| +0#0000000&@39
+@6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|e|f|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @51
+@57|7|2|,|1| @9|8|9|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_set_05.dump b/runtime/syntax/testdir/dumps/vim_ex_set_05.dump
new file mode 100644
index 0000000..3f67529
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_set_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|d+0#e000e06&|e|f|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @51
+@75
+|s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&|a+0#0000000&|b|c|,+0#e000e06&| +0#0000000&@61
+@6|"+0#0000e05&|\| |d|e|f| |i|s| |a| |'|p|a|t|h|'| |d|i|r|e|c|t|o|r|y| |v|a|l|u|e| +0#0000000&@34
+@6|\+0#e000e06&|d+0#0000000&|e|f|,+0#e000e06&|g+0#0000000&|h|i| @60
+> @74
+|s+0#af5f00255&|e|t| +0#0000000&|p+0#e000e06&|a|t|h|=+0#af5f00255&| +0#0000000&@65
+@6|"+0#0000e05&|\| |d|e|f| |i|s| |a| |'|p|a|t|h|'| |d|i|r|e|c|t|o|r|y| |v|a|l|u|e| +0#0000000&@34
+@6|\+0#e000e06&|a+0#0000000&|b|c|,+0#e000e06&|d+0#0000000&|e|f| @60
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|9|0|,|0|-|1| @7|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump b/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump
deleted file mode 100644
index 4fc3d5e..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|s|l|e@1|p| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|s+0#af5f00255&|l|e@1|p| +0#0000000&@7|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |o|n|e| |s|e|c|o|n|d| +0#0000000&@39
-|5+0#e000002&| +0#0000000&|s+0#af5f00255&|l|e@1|p| +0#0000000&@5|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |f|i|v|e| |s|e|c|o|n|d|s| +0#0000000&@37
-|s+0#af5f00255&|l|e@1|p| +0#0000000&|1+0#e000002&|0@1|m| +0#0000000&@2|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
-|1+0#e000002&|0@1| +0#0000000&|s+0#af5f00255&|l|e@1|p| +0#0000000&|m+0#e000002&| +0#0000000&@1|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
-@75
-|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@6|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |o|n|e| |s|e|c|o|n|d| +0#0000000&@39
-|5+0#e000002&| +0#0000000&|s+0#af5f00255&|l|e@1|p|!| +0#0000000&@4|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |f|i|v|e| |s|e|c|o|n|d|s| +0#0000000&@37
-|s+0#af5f00255&|l|e@1|p|!| +0#0000000&|1+0#e000002&|0@1|m| +0#0000000&@1|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
->1+0#e000002&|0@1| +0#0000000&|s+0#af5f00255&|l|e@1|p|!| +0#0000000&|m+0#e000002&| +0#0000000&|"+0#0000e05&| |s|l|e@1|p| |f|o|r| |1|0@1| |m|i|l@1|i|s|e|c|o|n|d|s| +0#0000000&@33
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|1@1|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
new file mode 100644
index 0000000..f19c40e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_08.dump
@@ -0,0 +1,20 @@
+|d+0#af5f00255#ffffff0|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|)| +0#0000000&@64
+@2|s|t|r|[|s|]| @66
+@2|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@66
+|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
+> @74
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4@1|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
deleted file mode 100644
index 6864a4a..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| +0#0000000&|F+0#0000001#ffff4012|I|X|M|E|:+0#e000e06#ffffff0| +0#0000e05&|t|r|a|i|l|i|n|g| |c|o|m@1|e|n|t|,| |n|o| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@34
-|s+0#af5f00255&|"+0#0000000&| |c|o|m@1|e|n|t| @64
-|s+0#af5f00255&||+0#0000000&| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@61
-@75
-|s+0#af5f00255&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@63
-|s+0#af5f00255&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|F|o@1|"| +0#0000000&@60
-@75
-@75
-|"+0#0000e05&| |I|s@1|u|e| |#|1|3|8@1|3| +0#0000000&@60
-@75
-|s|t|r|[|s|]| @68
-|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@68
-@75
-|d+0#af5f00255&|e|f| +0#0000000&|T|e|s|t|(+0#e000e06&|)| +0#0000000&@64
-@2|s|t|r|[|s|]| @66
-@2|s|t|r|(+0#e000e06&|s+0#00e0e07&|)+0#e000e06&| +0#0000000&@66
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-> @74
-@57|1|4@1|,|0|-|1| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
index 800e4a7..bef158c 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_01.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
 @6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
-@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41
+@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41
 @6|"+0#0000e05&|\| |n|e|x|t|g|r|o|u|p| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|n+0#e000e06&|e|x|t|g|r|o|u|p|=|t+0#0000000&|e|s|t|N|e|x|t|0|,|@|t|e|s|t|C|l|u|s|t|e|r| @34
 @6|"+0#0000e05&|\| |t|r|a|n|s|p|a|r|e|n|t| |o|p|t|i|o|n| +0#0000000&@47
@@ -16,5 +17,4 @@
 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
 @6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
 @6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
-@57|1|9|,|7| @10|8|%| 
+@57|1|8|,|7| @10|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
index 54d8734..3ff2aba 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_02.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
+| +0&#ffffff0@5|"+0#0000e05&|\| |k|e|y|w|o|r|d| |1| +0#0000000&@56
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|1| @58
 @6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |2| +0#0000000&@56
 @6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|2| @58
 @6|"+0#0000e05&|\| |k|e|y|w|o|r|d| |3| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
-> @74
+@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|3| @58
+@75
 |s+0#af5f00255&|y|n| +0#0000000&|m+0#00e0003&|a|t|c|h| +0#0000000&|t+0#00e0003&|e|s|t|M|a|t|c|h| +0#0000000&@55
 @6|"+0#0000e05&|\| |M|A|T|C|H| |P|A|T@1|E|R|N| +0#0000000&@52
 @6|"+0#0000e05&|\| |p|a|t@1|e|r|n| |s|t|a|r|t| +0#0000000&@52
@@ -16,5 +17,4 @@
 | +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|3|a| |.|*| |p|a|t|3|b| +0#0000000&@53
 | +0#e000002&@5|"+0#0000e05&|\| |p|a|t@1|e|r|n| |e|n|d| +0#0000000&@54
 | +0#e000002&@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@57|3|7|,|0|-|1| @7|1|9|%| 
+@57|3|6|,|7| @9|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
index f0a2481..59d9562 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_03.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+| +0#e000002#ffffff0@5|\+0#e000e06&|/+0#e000002&| +0#0000000&@66
+@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
 @6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
 @6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
-@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
-@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
+@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&@57
 @6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d|i|n| |o|p|t|i|o|n| +0#0000000&@47
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d|i|n|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|r| @41
@@ -16,5 +17,4 @@
 @6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
 @6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@57|5@1|,|7| @9|3|1|%| 
+@57|5|4|,|7| @9|3|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
index 2298efb..4022b48 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_04.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
+| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
+@6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
 @6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28
 @6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
-@6|\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
-@6>"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
+@6>\+0#e000e06&| +0#0000000&|f+0#e000e06&|o|l|d| +0#0000000&@62
+@6|"+0#0000e05&|\| |d|i|s|p|l|a|y| |o|p|t|i|o|n| +0#0000000&@51
 @6|\+0#e000e06&| +0#0000000&|d+0#e000e06&|i|s|p|l|a|y| +0#0000000&@59
 @6|"+0#0000e05&|\| |e|x|t|e|n|d| |o|p|t|i|o|n| +0#0000000&@52
 @6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|t|e|n|d| +0#0000000&@60
@@ -16,5 +17,4 @@
 @6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
 @6|"+0#0000e05&|\| |s|t|a|r|t| |o|p|t|i|o|n| +0#0000000&@53
 @6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45
-@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
-@57|7|3|,|7| @9|4|2|%| 
+@57|7|2|,|7| @9|4|1|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
index 66a6b73..c4c4994 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_05.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#00e0003&|t|a|r|t|=|"+0#e000002&|s|t|a|r|t|-|p|a|t@1|e|r|n|"| +0#0000000&@45
+@6|"+0#0000e05&|\| |s|k|i|p| |o|p|t|i|o|n| +0#0000000&@54
 @6|\+0#e000e06&| +0#0000000&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&@47
 @6|"+0#0000e05&|\| |e|n|d| |o|p|t|i|o|n| +0#0000000&@55
 @6|\+0#e000e06&| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a|t@1|e|r|n|"| +0#0000000&@49
-@6|"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
-@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
+@6>"+0#0000e05&|\| |c|o|n|c|e|a|l| |o|p|t|i|o|n| +0#0000000&@51
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l| +0#0000000&@59
 @6|"+0#0000e05&|\| |c@1|h|a|r| |o|p|t|i|o|n| +0#0000000&@53
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&@1|h|a|r|=|&+0#e000002&| +0#0000000&@59
 @6|"+0#0000e05&|\| |c|o|n|t|a|i|n|e|d| |o|p|t|i|o|n| +0#0000000&@49
@@ -16,5 +17,4 @@
 @6|\+0#e000e06&| +0#0000000&|t+0#e000e06&|r|a|n|s|p|a|r|e|n|t| +0#0000000&@55
 @6|"+0#0000e05&|\| |s|k|i|p|w|h|i|t|e| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
-@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
-@57|9|1|,|7| @9|5|3|%| 
+@57|9|0|,|7| @9|5|3|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
index 12c1fbe..6c5e4ce 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_06.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@57
+@6|"+0#0000e05&|\| |s|k|i|p|e|m|p|t|y| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|e|m|p|t|y| +0#0000000&@57
 @6|"+0#0000e05&|\| |s|k|i|p|n|l| |o|p|t|i|o|n| +0#0000000&@52
 @6|\+0#e000e06&| +0#0000000&|s+0#e000e06&|k|i|p|n|l| +0#0000000&@60
-@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
-@6>\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28
+@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2| @28
 @6|"+0#0000e05&|\| |o|n|e|l|i|n|e| |o|p|t|i|o|n| +0#0000000&@51
 @6|\+0#e000e06&| +0#0000000&|o+0#e000e06&|n|e|l|i|n|e| +0#0000000&@59
 @6|"+0#0000e05&|\| |f|o|l|d| |o|p|t|i|o|n| +0#0000000&@54
@@ -16,5 +17,4 @@
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|c|e|a|l|e|n|d|s| +0#0000000&@55
 @6|"+0#0000e05&|\| |e|x|c|l|u|d|e|n|l| |o|p|t|i|o|n| +0#0000000&@49
 @6|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
-@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
-@57|1|0|9|,|7| @8|6|5|%| 
+@57|1|0|8|,|7| @8|6|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
index d7d1055..2f66e98 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_07.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|e+0#e000e06&|x|c|l|u|d|e|n|l| +0#0000000&@57
+@6|"+0#0000e05&|\| |k|e@1|p|e|n|d| |o|p|t|i|o|n| +0#0000000&@51
 @6|\+0#e000e06&| +0#0000000&|k+0#e000e06&|e@1|p|e|n|d| +0#0000000&@59
 @75
 |s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6>"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
+@6>"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
+@6|"+0#0000e05&|\| |c|o|n|t|a|i|n|s| |o|p|t|i|o|n| +0#0000000&@50
 @6|\+0#e000e06&| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|s|=|t+0#0000000&|e|s|t|C|o|n|t|a|i|n|e|d|1|,|t|e|s|t|C|o|n|t|a|i|n|e|d|2|,|t|e|s|t|C|o|n|t|a|i|n|e|d|3| @13
 @75
 |s+0#af5f00255&|y|n| +0#0000000&|c+0#00e0003&|l|u|s|t|e|r| +0#0000000&|t+0#00e0003&|e|s|t|C|l|u|s|t|e|r| +0#0000000&@51
@@ -16,5 +17,4 @@
 @75
 |"+0#0000e05&| |m|u|l|t|i|l|i|n|e| |g|r|o|u|p| |l|i|s|t| +0#0000000&@52
 @75
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
-@57|1|2|7|,|7| @8|7|6|%| 
+@57|1|2|6|,|7| @8|7|5|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
index 4042d33..db2d97b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_08.dump
@@ -1,9 +1,10 @@
-|s+0#af5f00255#ffffff0|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
+| +0&#ffffff0@74
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|0| +0#0000000&|k|e|y|w|o|r|d| @45
 |s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|1| +0#0000000&|k|e|y|w|o|r|d| @45
 |s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|2| +0#0000000&|k|e|y|w|o|r|d| @45
 |s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|3| +0#0000000&|k|e|y|w|o|r|d| @45
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|4| +0#0000000&|k|e|y|w|o|r|d| @45
->s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|5| +0#0000000&|k|e|y|w|o|r|d| @45
+>s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|4| +0#0000000&|k|e|y|w|o|r|d| @45
+|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|5| +0#0000000&|k|e|y|w|o|r|d| @45
 |s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|6| +0#0000000&|k|e|y|w|o|r|d| @45
 |s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|7| +0#0000000&|k|e|y|w|o|r|d| @45
 |s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|N|e|x|t|8| +0#0000000&|k|e|y|w|o|r|d| @45
@@ -16,5 +17,4 @@
 @6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|0| |,| |t|e|s|t|N|e|x|t|1| |,| @43
 @6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
 @6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
-@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
-@57|1|4|5|,|1| @8|8|7|%| 
+@57|1|4@1|,|1| @8|8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
index 5240e4e..6295921 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
@@ -1,9 +1,10 @@
-| +0&#ffffff0@5|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
+| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|[|2|-|8|]|.|*| |,| @49
+@6|"+0#0000e05&|\| |a| |c|o|m@1|e|n|t| +0#0000000&@56
 @6|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r| |s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
 @6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
 @6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
-@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
+@6>\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
+@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
 @75
 @75
 |"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48
@@ -16,5 +17,4 @@
 @2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#0000000&| @25
 @4|"+0#0000e05&| |.@2| +0#0000000&@65
 @2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-@2|"+0#0000e05&| |.@2| +0#0000000&@67
-@57|1|6|3|,|7| @8|9@1|%| 
+@57|1|6|2|,|7| @8|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
new file mode 100644
index 0000000..c33c082
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
+@2|"+0#0000e05&| |.@2| +0#0000000&@67
+>e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|7@1|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
deleted file mode 100644
index c06ac66..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&| +0#0000000&|t|e|s|t|N|e|x|t|9| |,| |@|t|e|s|t|C|l|u|s|t|e|r| |s+0#e000e06&|k|i|p|w|h|i|t|e| +0#0000000&@32
-@6|"+0#0000e05&|\| |K|E|Y|W|O|R|D|S| |L|I|S|T| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|4| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|5| @58
-@6|\+0#e000e06&| +0#0000000&|k|e|y|w|o|r|d|6| @58
-@75
-@75
-|"+0#0000e05&| |l|e|a|k|i|n|g| |c|o|n|t|a|i|n|e|d| |g|r|o|u|p|s| +0#0000000&@48
-@75
-|"+0#0000e05&| +0#0000000&|E+0#e000e06&|x|a|m|p|l|e|:| +0#0000e05&|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|z|s|h|.|v|i|m| +0#0000000&@41
-|"+0#0000e05&| @2|"+0#e000002&|c|l|u|s|t|e|r|"| +0#0000e05&|s|h|o|u|l|d| |n|o|t| |b|e| |h|i|g|h|l|i|g|h|t|e|d| |o|u|t|s|i|d|e| |o|f| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d|s| +0#0000000&@7
-@75
-|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|s+0#e000e06&|:|C+0#0000000&|o|n|t|a|i|n|e|d|G|r|o|u|p|(+0#e000e06&|)| +0#0000000&@46
-@2|"+0#0000e05&| |.@2| +0#0000000&@67
-@2|f+0#af5f00255&|o|r| +0#0000000&|c+0#00e0e07&|l|u|s|t|e|r| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|[|'+0#e000002&|m|a|r|k|d|o|w|n|H|i|g|h|l|i|g|h|t|_|z|s|h|'|,+0#0000000&| |'+0#e000002&|z|s|h|'|]+0#0000000&| @25
-@4|"+0#0000e05&| |.@2| +0#0000000&@65
-@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-@2|"+0#0000e05&| |.@2| +0#0000000&@67
->e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
-@57|1|7@1|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump b/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump
deleted file mode 100644
index b53fff4..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |V|i|m| |:|t|h|r|o|w| |c|o|m@1|a|n|d| +0#0000000&@54
-@75
-|"+0#0000e05&| |:|h|e|l|p| |:|t|h|r|o|w| +0#0000000&@60
-@75
->t+0#af5f00255&|r|y| +0#0000000&||| |t+0#af5f00255&|h|r|o|w| +0#0000000&|"+0#e000002&|o@1|p|s|"| +0#0000000&||| |c+0#af5f00255&|a|t|c|h| +0#0000000&|/+0#e000e06&|^+0#0000000&|o@1|/+0#e000e06&| +0#0000000&||| |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|c|a|u|g|h|t|"| +0#0000000&||| |e+0#af5f00255&|n|d|t|r|y| +0#0000000&@17
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_01.dump b/runtime/syntax/testdir/dumps/vim_expr_01.dump
index 383c730..f1a7330 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_01.dump
@@ -1,10 +1,13 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| |\|f| |\|n| |\|r| |\|t| |\@1
+| +0&#ffffff0@74
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6| +0#e000002&|-| |\+0#e000e06&|3|1| +0#e000002&|-| |\+0#e000e06&|3| +0#e000002&|-| |\+0#e000e06&|x|1|f| +0#e000002&|-| |\+0#e000e06&|x|f| +0#e000002&|-| |\+0#e000e06&|X|1|F| +0#e000002&|-| |\+0#e000e06&|X|F| +0#e000002&|-| |\+0#e000e06&|u|0|2|a|4| +0#e000002&|-| |\+0#e000e06&|U|0@4|2|a|4| +0#e000002&|-| |\+0#e000e06&|b
+| +0#e000002&|-| |\+0#e000e06&|e| +0#e000002&|-| |\+0#e000e06&|f| +0#e000002&|-| |\+0#e000e06&|n| +0#e000002&|-| |\+0#e000e06&|r| +0#e000002&|-| |\+0#e000e06&|t| +0#e000002&|-| |\+0#e000e06&@1| +0#e000002&|-| |\+0#e000e06&|"| +0#e000002&|-| |\+0#e000e06&|<|C|-|W|>|"+0#e000002&| +0#0000000&@29
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|\|3|1|6| |\|3|1| |\|3| |\|x|1|f| |\|x|f| |\|X|1|F| |\|X|F| |\|u|0|2|a|4| |\|U|0@4|2|a|4| |\|b| |\|e| |\|f| |\|n| |\|r| |\|t| |\@1
 | |\|"| |\|<|C|-|W|>|'| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| |\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| |\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| |\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
+>e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|\+0#e000e06&|3|1|6|0+0#e000002&| |-| |\+0#e000e06&|x|1|f|0+0#e000002&| |-| |\+0#e000e06&|X|1|F|0+0#e000002&| |-| |\+0#e000e06&|u|0|2|a|4|0+0#e000002&| |-| |\+0#e000e06&|U|0@4|2|a|4|0+0#e000002&|"| +0#0000000&@21
 @75
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|a|>|"+0#e000002&| +0#0000000&@61
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|a|>|"+0#e000002&| +0#0000000&@60
->e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|"+0#e000002&| +0#0000000&@61
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|"+0#e000002&| +0#0000000&@60
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|C|-|>@1|>+0#e000002&|"| +0#0000000&@60
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|\+0#e000e06&|<|*|C|-|>@1|>+0#e000002&|"| +0#0000000&@59
@@ -14,7 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|'+0#e000002&|D|o|n|'@1|t| |h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|'| +0#0000000&@22
 |e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|D|o|n|'|t| |h|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:| |{@1| |{|1| |+| |2|}| |}@1|"| +0#0000000&@23
 |e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| |'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| |"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
-|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
-@57|1|9|,|1| @9|2|4|%| 
+@57|1|5|,|1| @9|2|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_02.dump b/runtime/syntax/testdir/dumps/vim_expr_02.dump
index 97a621d..516a691 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_02.dump
@@ -1,9 +1,13 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |N|u|m|b|e|r| +0#0000000&@66
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|'+0#e000002&|f|o@1|'|:+0#0000000&| |'+0#e000002&|b|a|r|'|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|'|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\|t|{+0#e000e06&@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|'|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|'+0#e000002&| +0#0000000&@6
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|{|"+0#e000002&|f|o@1|"|:+0#0000000&| |"+0#e000002&|b|a|r|"|}+0#e000e06&|)| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@8
+|e+0#af5f00255&|c|h|o| +0#0000000&|$+0#e000002&|"|H|i|g|h|l|i|g|h|t| |i|n|t|e|r|p|o|l|a|t|i|o|n|:|\+0#e000e06&|t|{@1| +0#e000002&|{+0#e000e06&| +0#0000000&|$+0#e000002&|"|n|e|s|t|e|d|:| |{+0#e000e06&@1| +0#e000002&|{+0#e000e06&|1+0#e000002&| +0#0000000&|++0#af5f00255&| +0#0000000&|2+0#e000002&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&|}+0#e000e06&| +0#e000002&|}+0#e000e06&@1|"+0#e000002&| +0#0000000&@6
+@75
+>"+0#0000e05&| |N|u|m|b|e|r| +0#0000000&@66
 @75
 |"+0#0000e05&| |H|e|x|a|d|e|c|i|m|a|l| +0#0000000&@61
 |e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|x|F@1| +0#0000000&@64
->e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|X|F@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|X|F@1| +0#0000000&@64
 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|x|F@1| +0#0000000&@64
 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|X|F@1| +0#0000000&@64
 @75
@@ -13,8 +17,4 @@
 @75
 |"+0#0000e05&| |O|c|t|a|l| +0#0000000&@67
 |e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|3|7@1| +0#0000000&@64
-|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|o|3|7@1| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|O|3|7@1| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|3|7@1| +0#0000000&@64
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
-@57|3|7|,|1| @9|5|8|%| 
+@57|3@1|,|1| @9|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_03.dump b/runtime/syntax/testdir/dumps/vim_expr_03.dump
index 41f062f..5300116 100644
--- a/runtime/syntax/testdir/dumps/vim_expr_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_expr_03.dump
@@ -1,9 +1,13 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|O|3|7@1| +0#0000000&@63
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&@1|0+0#e000002&|3|7@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|o|3|7@1| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|O|3|7@1| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|3|7@1| +0#0000000&@64
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|o|3|7@1| +0#0000000&@63
+>e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|O|3|7@1| +0#0000000&@63
 @75
 |"+0#0000e05&| |B|i|n|a|r|y| +0#0000000&@66
 |e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|b|1@7| +0#0000000&@58
->e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
+|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|b|1@7| +0#0000000&@58
 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|B|1@7| +0#0000000&@58
 @75
@@ -13,8 +17,4 @@
 |e+0#af5f00255&|c|h|o| +0#0000000&|5+0#e000002&@1|.|0| +0#0000000&@65
 |e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|.|1|2|3| +0#0000000&@63
 |e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|0|E|-|6| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@58
-@75
-|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
-@57|5@1|,|1| @9|9|2|%| 
+@57|5|1|,|1| @9|8|4|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_04.dump b/runtime/syntax/testdir/dumps/vim_expr_04.dump
new file mode 100644
index 0000000..4cb0891
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_expr_04.dump
@@ -0,0 +1,20 @@
+|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@61
+|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|0|E|-|6| +0#0000000&@63
+|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@58
+@75
+|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
+>e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z| +0#0000000&@67
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|E|D|0|1|5|D|A|F| +0#0000000&@55
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|.|E|D|0|1|.|5|D|A|F| +0#0000000&@53
+|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|.|0@1|.|E|D|.|0|1|.|5|D|.|A|F| +0#0000000&@50
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|6|9|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_expr_99.dump b/runtime/syntax/testdir/dumps/vim_expr_99.dump
deleted file mode 100644
index e9ba266..0000000
--- a/runtime/syntax/testdir/dumps/vim_expr_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|e+0#af5f00255#ffffff0|c|h|o| +0#0000000&@1|0+0#e000002&|b|1@7| +0#0000000&@58
-|e+0#af5f00255&|c|h|o| +0#0000000&@1|0+0#e000002&|B|1@7| +0#0000000&@58
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|b|1@7| +0#0000000&@58
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|B|1@7| +0#0000000&@58
-@75
-|"+0#0000e05&| |F|l|o|a|t| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|2|3|.|4|5|6| +0#0000000&@62
-|e+0#af5f00255&|c|h|o| +0#0000000&|++0#af5f00255&|0+0#e000002&|.|0@2|1| +0#0000000&@62
-|e+0#af5f00255&|c|h|o| +0#0000000&|5+0#e000002&@1|.|0| +0#0000000&@65
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|0+0#e000002&|.|1|2|3| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|2|3|4|e|0|3| +0#0000000&@61
-|e+0#af5f00255&|c|h|o| +0#0000000&|1+0#e000002&|.|0|E|-|6| +0#0000000&@63
-|e+0#af5f00255&|c|h|o| +0#0000000&|-+0#af5f00255&|3+0#e000002&|.|1|4|1|6|e|+|8@1| +0#0000000&@58
-@75
-|"+0#0000e05&| |B|l|o|b| +0#0000000&@68
-|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z| +0#0000000&@67
-|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|E|D|0|1|5|D|A|F| +0#0000000&@55
-|e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|0@1|.|E|D|0|1|.|5|D|A|F| +0#0000000&@53
->e+0#af5f00255&|c|h|o| +0#0000000&|0+0#e000002&|z|F@1|.|0@1|.|E|D|.|0|1|.|5|D|.|A|F| +0#0000000&@50
-@57|7|2|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_09.dump b/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
new file mode 100644
index 0000000..d7fc77d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_key_notation_09.dump
@@ -0,0 +1,20 @@
+|<+0#e000e06#ffffff0|s|f|i|l|e|>| +0#0000000&@67
+|<+0#e000e06&|s|t|a|c|k|>| +0#0000000&@67
+|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&@66
+|<+0#e000e06&|s|l|n|u|m|>| +0#0000000&@67
+|<+0#e000e06&|s|f|l|n|u|m|>| +0#0000000&@66
+><+0#e000e06&|c|l|i|e|n|t|>| +0#0000000&@66
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|6|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_key_notation_99.dump b/runtime/syntax/testdir/dumps/vim_key_notation_99.dump
deleted file mode 100644
index 67dac5f..0000000
--- a/runtime/syntax/testdir/dumps/vim_key_notation_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#e000e06#ffffff0|I|g|n|o|r|e|>| +0#0000000&@66
-|<+0#e000e06&|C|m|d|>| +0#0000000&@69
-|<+0#e000e06&|S|c|r|i|p|t|C|m|d|>| +0#0000000&@63
-|<+0#e000e06&|F|o|c|u|s|G|a|i|n|e|d|>| +0#0000000&@61
-|<+0#e000e06&|F|o|c|u|s|L|o|s|t|>| +0#0000000&@63
-@75
-|<+0#e000e06&|c|w|o|r|d|>| +0#0000000&@67
-|<+0#e000e06&|c|W|O|R|D|>| +0#0000000&@67
-|<+0#e000e06&|c|e|x|p|r|>| +0#0000000&@67
-|<+0#e000e06&|c|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|a|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|a|b|u|f|>| +0#0000000&@68
-|<+0#e000e06&|a|m|a|t|c|h|>| +0#0000000&@66
-|<+0#e000e06&|s|f|i|l|e|>| +0#0000000&@67
-|<+0#e000e06&|s|t|a|c|k|>| +0#0000000&@67
-|<+0#e000e06&|s|c|r|i|p|t|>| +0#0000000&@66
-|<+0#e000e06&|s|l|n|u|m|>| +0#0000000&@67
-|<+0#e000e06&|s|f|l|n|u|m|>| +0#0000000&@66
-><+0#e000e06&|c|l|i|e|n|t|>| +0#0000000&@66
-@57|1|6|3|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_00.dump b/runtime/syntax/testdir/dumps/vim_keymap_00.dump
deleted file mode 100644
index 2c43e3d..0000000
--- a/runtime/syntax/testdir/dumps/vim_keymap_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
->"+0#0000e05#ffffff0| |V|i|m| |K|e|y|m|a|p| |f|i|l|e| |f|o|r| |s|y|n|t|a|x| |t|e|s|t|i|n|g| @38
-@75
-@75
-@46| +0#0000000&@28
-@75
-@75
-|"+0#0000e05&| +0#0000000&|M+0#e000e06&|a|i|n|t|a|i|n|e|r|:| +0#0000e05&@2|D|o|u|g| |K|e|a|r|n|s| |<|d|o|u|g|k|e|a|r|n|s|@|g|m|a|i|l|.|c|o|m|>| @24
-@60| +0#0000000&@14
-|"+0#0000e05&| +0#0000000&|L+0#e000e06&|a|s|t| |C|h|a|n|g|e|d|:| +0#0000e05&|2|0|2|3| |N|o|v| |2|1| @47
-@75
-@75
-@46| +0#0000000&@28
-@75
-@75
-@75
-@75
-|s+0#af5f00255&|c|r|i|p|t|e|n|c|o|d|i|n|g| +0#0000000&|u|t|f|-+0#af5f00255&|8+0#e000002&| +0#0000000&@54
-@75
-|@+0#4040ff13&@2| @71
-| +0#0000000&@56|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_01.dump b/runtime/syntax/testdir/dumps/vim_keymap_01.dump
deleted file mode 100644
index a07bfc4..0000000
--- a/runtime/syntax/testdir/dumps/vim_keymap_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-@75
-|a| |A| @3|B+0#0000e05&|a|s|i|c| |m|a|p@1|i|n|g| @38| +0#0000000&@15
-|'|a| |á| @2|M+0#0000e05&|o|r|e| |t|h|a|n| |o|n|e| |c|h|a|r| |i|n| |f|i|r|s|t| |c|o|l|u|m|n| @10| +0#0000000&@22
-@75
->"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| @56
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| @2
-@75
-@75
-@46| +0#0000000&@28
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| @4
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| @50| +0#0000000&@14
-@75
-|"+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| @30| +0#0000000&@12
-|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@15|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-@57|1|9|,|1| @9|8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_04.vim b/runtime/syntax/testdir/dumps/vim_keymap_04.vim
new file mode 100644
index 0000000..546837c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_keymap_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[“�]+?+ge
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_99.dump b/runtime/syntax/testdir/dumps/vim_keymap_99.dump
deleted file mode 100644
index 1b27d57..0000000
--- a/runtime/syntax/testdir/dumps/vim_keymap_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@74
-|"+0#0000e05&| |S|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| @56
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|6|2|>| +0#0000000&@5|B| @14|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |-| |d|e|c|i|m|a|l| @2
-@75
-@75
-@46| +0#0000000&@28
-|c| @13|<+0#e000e06&|c|h|a|r|-|0|1|0|3|>| +0#0000000&@4|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |R|H|S| |-| |o|c|t|a|l| @4
-@60| +0#0000000&@14
-|<+0#e000e06&|c|h|a|r|-|0|x|0@1|6|4|>| +0#0000000&@1|<+0#e000e06&|c|h|a|r|-|0|x|0@1|4@1|>| +0#0000000&@2|S+0#0000e05&|p|e|c|i|a|l| |n|o|t|a|t|i|o|n| |a|l@1|o|w|e|d| |i|n| |L|H|S| |a|n|d| |R|H|S| |-| |h|e
-|x|a|d|e|c|i|m|a|l| @50| +0#0000000&@14
-@75
-|"+0#0000e05&| |V|i|m|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| |c|h|a|r|a|c|t|e|r|s| @30| +0#0000000&@12
-|#| |<+0#e000e06&|c|h|a|r|-|0|x|0@1|a|3|>| +0#0000000&@15|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e
-|n|t| +0#0000000&@72
-|\|"| |“| @26|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
-@1|e|n|t| | +0#0000000&@69
->:| |"| @27|L+0#0000e05&|i|n|e| |s|h|o|u|l|d| |n|o|t| |m|a|t|c|h| |a|s| |a| |l|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m
-@1|e|n|t| +0#0000000&@70
-@57|2|7|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_keymap_99.vim b/runtime/syntax/testdir/dumps/vim_keymap_99.vim
deleted file mode 100644
index 546837c..0000000
--- a/runtime/syntax/testdir/dumps/vim_keymap_99.vim
+++ /dev/null
@@ -1,2 +0,0 @@
-" Replace known non-Latin-1 characters.
-%s+[“�]+?+ge
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
deleted file mode 100644
index 3e2c83d..0000000
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+0#e000e06&|)| +0#0000000&@66
-@75
-|l+0#af5f00255&|e|t| +0#0000000&|d+0#00e0e07&|i|c|t| +0#0000000&|=+0#af5f00255&| +0#0000000&|#+0#e000e06&|{| +0#0000000&@61
-@6|"+0#0000e05&|\| |p|a|i|r| |1| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |1+0#e000002&|,+0#0000000&| @61
-@6|"+0#0000e05&|\| |p|a|i|r| |2| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |2+0#e000002&|,+0#0000000&| @61
-@6|"+0#0000e05&|\| |p|a|i|r| |3| +0#0000000&@59
-@6|\+0#e000e06&| +0#0000000&|c+0#00e0e07&|:+0#0000000&| |3+0#e000002&| +0#0000000&@62
-@6|\+0#e000e06&|}| +0#0000000&@66
-@75
-|l+0#af5f00255&|e|t| +0#0000000&|a+0#00e0e07&|r@1|a|y| +0#0000000&|=+0#af5f00255&| +0#0000000&|[| @61
-@6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|1+0#e000002&|,+0#0000000&| @64
-@6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|2+0#e000002&|,+0#0000000&| @64
-@6|"+0#0000e05&|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
-@6|\+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@65
-@6>\+0#e000e06&|]+0#0000000&| @66
-@57|4|9|,|7| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_new_99.dump b/runtime/syntax/testdir/dumps/vim_new_99.dump
deleted file mode 100644
index a9fe50f..0000000
--- a/runtime/syntax/testdir/dumps/vim_new_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|v+0#af5f00255#ffffff0|i|m|9|s|c|r|i|p|t| +0#0000000&@64
-@75
-|#+0#0000e05&| |V|i|m| |:|n|e|w| |c|o|m@1|a|n|d| |a|n|d| |c|l|a|s@1| |c|o|n|s|t|r|u|c|t|o|r|s|.| +0#0000000&@32
-|c+0#af5f00255&|l|a|s@1| +0#0000000&|T|e|s|t| @64
-@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|)| +0#0000000&@57
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|O|t|h|e|r|(+0#e000e06&|)| +0#0000000&@52
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-@8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|y|e|t|a|n|o|t|h|e|r|(+0#e000e06&|)| +0#0000000&@47
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-|e+0#af5f00255&|n|d|c|l|a|s@1| +0#0000000&@66
-@75
-|T|e|s|t|.+0#af5f00255&|n+0#0000000&|e|w|(+0#e000e06&|)| +0#0000000&@64
-|T|e|s|t|.+0#af5f00255&|n+0#0000000&|e|w|O|t|h|e|r|(+0#e000e06&|)| +0#0000000&@59
-|T|e|s|t|.+0#af5f00255&|n+0#0000000&|e|w|y|e|t|a|n|o|t|h|e|r|(+0#e000e06&|)| +0#0000000&@54
-|n+0#af5f00255&|e|w| +0#0000000&@71
->q+0#af5f00255&|u|i|t| +0#0000000&@70
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|1|7|,|1| @9|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_00.dump b/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
index 8089fc1..00c6cb4 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_00.dump
@@ -4,8 +4,8 @@
 @75
 |#+0#0000e05&| |V|i|m| |||b|u|i|l|t|i|n|-|o|b|j|e|c|t|-|m|e|t|h|o|d|s||| |a|n|d| |n|a|m|e|s|a|k|e| |b|u|i|l|t|i|n| |f|u|n|c|t|i|o|n|s|.| +0#0000000&@12
 |c+0#af5f00255&|l|a|s@1| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t| @55
-@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |a|n|y| @47
-@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |a|n|y| @47
+@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@47
+@8|p+0#af5f00255&|u|b|l|i|c| +0#0000000&|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y| +0#0000000&@47
 @75
 @8|d+0#af5f00255&|e|f| +0#0000000&|n|e|w|(+0#e000e06&|a+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|,+0#0000000&| |b+0#00e0e07&|:+0#0000000&| |a+0#00e0003&|n|y|)+0#e000e06&| +0#0000000&@43
 @16|t+0#af5f00255&|h|i|s|.|a| +0#0000000&|=+0#af5f00255&| +0#0000000&|a+0#af5f00255&| +0#0000000&@48
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_02.dump b/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
index 7fd4942..d1c24f1 100644
--- a/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_02.dump
@@ -9,9 +9,9 @@
 @8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
 |e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@67
 @75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b|o@1|l| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s|t|r|i|n|g| |=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
 |e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|1| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@32
 |e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&@24
 |e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_03.dump b/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
new file mode 100644
index 0000000..538ba4f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_object_methods_03.dump
@@ -0,0 +1,20 @@
+|c+0#af5f00255#ffffff0|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n|e|w|(+0#e000e06&|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|2|:+0#0000000&| |b+0#00e0003&|o@1|l| +0#0000000&|=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|p+0#0000000&|a|i|r|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@44
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|2|:+0#0000000&| |n+0#00e0003&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&@45
+|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|2|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&@42
+|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|2| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&@51
+>e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&@44
+|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&@27
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|5@1|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_object_methods_99.dump b/runtime/syntax/testdir/dumps/vim_object_methods_99.dump
deleted file mode 100644
index b69bf91..0000000
--- a/runtime/syntax/testdir/dumps/vim_object_methods_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@7|d+0#af5f00255&|e|f| +0#0000000&|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)|:+0#0000000&| |s+0#00e0003&|t|r|i|n|g| +0#0000000&@46
-@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0e07&|h|i|s|.+0#af5f00255&|n+0#0000000&|a|m|e| @42
-@8|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@60
-|e+0#af5f00255&|n|d|e|n|u|m| +0#0000000&@67
-@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|1|:+0#0000000&| |b|o@1|l| |=+0#af5f00255&| +0#0000000&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|1|:+0#0000000&| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@27
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|1|:+0#0000000&| |s|t|r|i|n|g| |=+0#af5f00255&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|M+0#00e0e07&|a|r|k|e|r|E|n|u|m|T|e|s|t|.+0#af5f00255&|I+0#00e0e07&|N|S|T|A|N|C|E|)+0#e000e06&| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|1| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@32
-|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|0+0#e000002&| +0#0000000&@24
-|e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|1| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|M|a|r|k|e|r|E|n|u|m|T|e|s|t|.|I|N|S|T|A|N|C|E|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|I|N|S|T|A|N|C|E|'| +0#0000000&@3
-@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|p+0#00e0e07&|a|i|r|:+0#0000000&| |P|a|i|r|C|l|a|s@1|T|e|s|t| |=+0#af5f00255&| +0#0000000&|P|a|i|r|C|l|a|s@1|T|e|s|t|.|n|e|w|(+0#e000e06&|0+0#e000002&|,+0#0000000&| |1+0#e000002&|)+0#e000e06&| +0#0000000&@23
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|b+0#00e0e07&|2|:+0#0000000&| |b|o@1|l| |=+0#af5f00255&| +0#0000000&|!+0#af5f00255&|p+0#0000000&|a|i|r|.|e+0#0000001#ffff4012|m|p|t|y|(+0#e000e06#ffffff0|)| +0#0000000&@44
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|n+0#00e0e07&|2|:+0#0000000&| |n+0#af5f00255&|u|m|b|e|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|p|a|i|r|.|l+0#0000001#ffff4012|e|n|(+0#e000e06#ffffff0|)| +0#0000000&@45
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|s+0#00e0e07&|2|:+0#0000000&| |s|t|r|i|n|g| |=+0#af5f00255&| +0#0000000&|p|a|i|r|.|s+0#0000001#ffff4012|t|r|i|n|g|(+0#e000e06#ffffff0|)| +0#0000000&@42
-|e+0#af5f00255&|c|h|o| +0#0000000&|b+0#00e0e07&|2| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|!+0#af5f00255&|e+0#00e0e07&|m|p|t|y|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&@51
-|e+0#af5f00255&|c|h|o| +0#0000000&|n+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|l+0#00e0e07&|e|n|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|2+0#e000002&| +0#0000000&@44
->e+0#af5f00255&|c|h|o| +0#0000000&|s+0#00e0e07&|2| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&|&+0#af5f00255&@1| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|(+0#e000e06&|p+0#00e0e07&|a|i|r|)+0#e000e06&| +0#0000000&|=+0#af5f00255&@1| +0#0000000&|'+0#e000002&|(|0|,| |1|)|'| +0#0000000&@27
-@57|5|6|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/vim_shebang_99.dump b/runtime/syntax/testdir/dumps/vim_shebang_99.dump
deleted file mode 100644
index 0102412..0000000
--- a/runtime/syntax/testdir/dumps/vim_shebang_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|#+0#e000e06#ffffff0|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000&@53
-@75
-|"+0#0000e05&| |V|i|m| |s|h|e|b|a|n|g| |l|i|n|e| +0#0000000&@56
-@75
->#+0#ffffff16#ff404010|!|/|u|s|r|/|b|i|n|/|e|n|v| |v|i|m| |-|S| +0#0000000#ffffff0@53
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|5|,|1| @10|A|l@1| 
diff --git a/runtime/syntax/testdir/dumps/vim_variables_99.dump b/runtime/syntax/testdir/dumps/vim_variables_99.dump
deleted file mode 100644
index 003603e..0000000
--- a/runtime/syntax/testdir/dumps/vim_variables_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|.+0#e000002#ffffff0@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |t|r|i|m| |e|v|a|l| |E|N|D| +0#0000000&@47
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|=+0#e000e06&|<@1| |e|v|a|l| |t|r|i|m| |E|N|D| +0#0000000&@47
-|.+0#e000002&@2| +0#0000000&@71
-|E+0#e000e06&|N|D| +0#0000000&@71
-@75
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&@65
-|c+0#af5f00255&|o|n|s|t| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|b|a|r| @61
-@75
-|"+0#0000e05&| |:|f|o|r| +0#0000000&@68
-@75
-|f+0#af5f00255&|o|r| +0#0000000&|f+0#00e0e07&|o@1| +0#0000000&|i+0#af5f00255&|n| +0#0000000&|e|x|p|r| @59
-|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-@75
-|f+0#af5f00255&|o|r| +0#0000000&|[|f+0#00e0e07&|o@1|,+0#0000000&| |b+0#00e0e07&|a|r|]+0#0000000&| |i+0#af5f00255&|n| +0#0000000&|e|x|p|r| @52
->e+0#af5f00255&|n|d|f|o|r| +0#0000000&@68
-@57|1|3|8|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_00.dump b/runtime/syntax/testdir/dumps/yaml.yaml_00.dump
deleted file mode 100644
index 3b8fd81..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-><+0#0000e05#ffffff0|!|D|O|C|T|Y|P|E| |h|t|m|l|>| +0#0000000&@59
-|<+0#00e0e07&|h+0#af5f00255&|t|m|l|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|c+0#00e0003&|h|a|r|s|e|t|=+0#00e0e07&|"+0#e000002&|U|T|F|-|8|"|>+0#00e0e07&| +0#0000000&@52
-|<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|~+0#e000e06&|/|D|r|o|p|b|o|x|/|c|p@1|/|v|i|m|/|r|u|n|t|i|m|e|/|s|y|n|t|a|x|/|t|e|s|t|d|i|r|/|i|n|p|u|t|/|y|a|m|l|.|y|a|m|l|.|h|t|m|l|<+0#00e0e07&|/|t+0#af5f00255&|i|t|l|e
-|>+0#00e0e07&| +0#0000000&@73
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|G|e|n|e|r|a|t|o|r|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|V|i|m|/|9|.|1|"|>+0#00e0e07&| +0#0000000&@33
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|p|l|u|g|i|n|-|v|e|r|s|i|o|n|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|v|i|m|9|.|0|_|v|2|"|>+0#00e0e07&| +0#0000000&@26
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|s|y|n|t|a|x|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|y|a|m|l|"|>+0#00e0e07&| +0#0000000&@39
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|s|e|t@1|i|n|g|s|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|u|s|e|_|c|s@1|,|n|o|_|f|o|l|d|c|o|l|u|m|n|,|e|x|p|a|n|d|_|t|a|b|s|,|p|r|e|_|w|r|a|p|,|p
-|r|e|v|e|n|t|_|c|o|p|y|=|,|u|s|e|_|i|n|p|u|t|_|f|o|r|_|p|c|=|n|o|n|e|"|>+0#00e0e07&| +0#0000000&@38
-|<+0#00e0e07&|m+0#af5f00255&|e|t|a| +0#00e0e07&|n+0#00e0003&|a|m|e|=+0#00e0e07&|"+0#e000002&|c|o|l|o|r|s|c|h|e|m|e|"| +0#00e0e07&|c+0#00e0003&|o|n|t|e|n|t|=+0#00e0e07&|"+0#e000002&|l|a|n|d|s|c|a|p|e|"|>+0#00e0e07&| +0#0000000&@29
-|<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#0000e05&|!|-@1| +0#0000000&@70
-|p+0#af5f00255&|r|e| +0#0000000&|{+0#00e0e07&| +0#0000000&|w+0#00e0003&|h|i|t|e|-|s|p|a|c|e|:+0#0000000&| |p+0#e000002&|r|e|-|w|r|a|p|;+0#0000000&| |f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |m+0#e000002&|o|n|o|s|p|a|c|e|;+0#0000000&| |c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@5|;+0#0000000&| |b+0#00e0003&|a|c|k|g|r
-|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@5|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@52
-|b+0#af5f00255&|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |m+0#e000002&|o|n|o|s|p|a|c|e|;+0#0000000&| |c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@5|;+0#0000000&| |b+0#00e0003&|a|c|k|g|r|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@5|;+0#0000000&| |}+0#00e0e07&
-|*+0#af5f00255&| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|s|i|z|e|:+0#0000000&| |1+0#e000002&|e|m|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@53
-|.+0#00e0e07&|I|d|e|n|t|i|f|i|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|8|7|d|7|f@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@43
-@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_01.dump b/runtime/syntax/testdir/dumps/yaml.yaml_01.dump
deleted file mode 100644
index 027a3c3..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|b+0#af5f00255#ffffff0|o|d|y| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|f|a|m|i|l|y|:+0#0000000&| |m+0#e000002&|o|n|o|s|p|a|c|e|;+0#0000000&| |c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@5|;+0#0000000&| |b+0#00e0003&|a|c|k|g|r|o|u|n|d|-|c|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@5|;+0#0000000&| |}+0#00e0e07&
-|*+0#af5f00255&| +0#0000000&|{+0#00e0e07&| +0#0000000&|f+0#00e0003&|o|n|t|-|s|i|z|e|:+0#0000000&| |1+0#e000002&|e|m|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@53
-|.+0#00e0e07&|I|d|e|n|t|i|f|i|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|8|7|d|7|f@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@43
-|.+0#00e0e07&|S|t|a|t|e|m|e|n|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|5|f|d|7|0@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@44
-|.+0#00e0e07&|P|r|e|P|r|o|c| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|0@1|a|f@2|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@46
->.+0#00e0e07&|T|y|p|e| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@1|5|f@2|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@49
-|.+0#00e0e07&|S|p|e|c|i|a|l|C|h|a|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@1|8|7|0@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@42
-|.+0#00e0e07&|C|o|m@1|e|n|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|7|6|7|6|7|6|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@46
-|.+0#00e0e07&|S|t|r|i|n|g| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|f@1|a|f|5|f|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@47
-|.+0#00e0e07&|N|u|m|b|e|r| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|5|f|d|7|f@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@47
-|.+0#00e0e07&|F|l|o|a|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|5|f@2|a|f|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@48
-|.+0#00e0e07&|C|o|n|s|t|a|n|t| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|8|7|a|f@2|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@45
-|.+0#00e0e07&|S|p|e|c|i|a|l| +0#0000000&|{+0#00e0e07&| +0#0000000&|c+0#00e0003&|o|l|o|r|:+0#0000000&| |#+0#e000002&|d|7|a|f|0@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@46
-|-+0#0000e05&@1|>| +0#0000000&@71
-|<+0#00e0e07&|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|/|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|p+0#af5f00255&|r|e| +0#00e0e07&|i+0#00e0003&|d|=+0#00e0e07&|'+0#e000002&|v|i|m|C|o|d|e|E|l|e|m|e|n|t|'|>+0#00e0e07&| +0#0000000&@49
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|%+0#0000000&|Y|A|M|L|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|.|2|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@6
-@57|1|9|,|1| @10|9|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_02.dump b/runtime/syntax/testdir/dumps/yaml.yaml_02.dump
deleted file mode 100644
index b0037c8..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_02.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|%+0#0000000&|T|A|G|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|!+0#0000000&@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@4|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|t+0#0000000&|a|g|:|y|a|m|l|.|o|r|g|,|2|0@1|2|:|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |s|e|c|o|n|d|a|r
-|y| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@55
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|%+0#0000000&|T|A|G|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|!+0#0000000&|y|a|m|l|!|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|t+0#0000000&|a|g|:|y|a|m|l|.|o|r|g|,|2|0@1|2|:|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |n|a|m|e|d| |t|a
-|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@59
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|P|r|e|P|r|o|c|"|>+0#00e0e07&|-+0#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@42
-><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|!+0#0000000&|s|t|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1
-|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|0+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |p|r|i|m|a|r|y| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@1
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|!+0#0000000&@1|s|t|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s
-@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|0+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@3|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |s|e|c|o|n|d|a|r|y| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|!+0#0000000&|y|a|m|l|!|s|t|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&
-|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|0+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |n|a|m|e|d| |t|a|g| |h|a|n|d|l|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@3
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|P|r|e|P|r|o|c|"|>+0#00e0e07&|-+0#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@42
-@75
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|o@1|l|e|a|n|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|f+0#0000000&|a|l|s|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&
-|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|t+0#0000000&|r|u|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|F+0#0000000&|A|L|S|E|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o
-|@+0#4040ff13&@2| @71
-| +0#0000000&@56|3|7|,|1| @9|2|1|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_03.dump b/runtime/syntax/testdir/dumps/yaml.yaml_03.dump
deleted file mode 100644
index d16656d..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_03.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|i+0#0000000&|n|f|i|n|i|t|y|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|i|n|f|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o
-|a|t|"|>+0#00e0e07&|-+0#0000000&|.|I|n|f|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|++0#0000000&|.|I|N|F|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/
-|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|n+0#0000000&|o|t| |a| |n|u|m|b|e|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|n|a|n|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&
-|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|N|a|N|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|F|l|o|a|t|"|>+0#00e0e07&|.+0#0000000&|N|A|N|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&
-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@67
-> @74
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|p+0#0000000&|l|a|i|n| |s|t|r|i|n|g|s|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|a| |b| |c| @34
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|a| |*| |b| |&+0#e000e06&|a|m|p|;| +0#0000000&|c| |@| |d|#| |e| |:| |f|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m
-@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@51
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|{@1| |f|(|'| |'|)| |}@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#|8|2|3|4
-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|d+0#0000000&|o|u|b|l|e| |q|u|o|t|e|d| |s|t|r|i|n|g|s|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&
-|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@66
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-|@+0#4040ff13&@2| @71
-| +0#0000000&@56|5@1|,|0|-|1| @7|3@1|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_04.dump b/runtime/syntax/testdir/dumps/yaml.yaml_04.dump
deleted file mode 100644
index 6a3aecf..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_04.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|<+0#00e0e07#ffffff0|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |f|o|l|d|e|d| |s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&
-|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|g|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@34
-@2|f|o@1| @69
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@52
-@75
-@4><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|n+0#0000000&|u|l@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@45
-@75
-@2|&+0#e000e06&|q|u|o|t|;|q+0#0000000&|u|x|&+0#e000e06&|q|u|o|t|;| +0#0000000&@57
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |l|i|t|e|r|a|l| |s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&
-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&||+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@36
-@2|f|o@1| @69
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@52
-@75
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|n|s|t|a|n|t|"|>+0#00e0e07&|n+0#0000000&|u|l@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@45
-@75
-@57|7|3|,|5| @9|4|5|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_05.dump b/runtime/syntax/testdir/dumps/yaml.yaml_05.dump
deleted file mode 100644
index c94413e..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_05.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |l|i|t|e|r|a|l| |s
-|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&||+0#0000000&|+|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<
-|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@36
-@6|f|o@1| @65
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@48
-@2><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&||+0#0000000&|-|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a
-|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#|1@1|5|1|7|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@47
-@6|f|o@1| |&+0#e000e06&|q|u|o|t|;|\+0#0000000&|&+0#e000e06&|q|u|o|t|;| +0#0000000&@51
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@48
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |i|n|d|e|n|t|a|t|i|o|n| |i|n|d|i|c|a|t|o|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e
-|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@60
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|l|o|c|k| |f|o|l|d|e|d| |s|t
-|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|g|t|;|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n
-|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@34
-@5|f|o@1| @66
-@5|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|1+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@49
-@57|9|1|,|3| @9|5|7|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_06.dump b/runtime/syntax/testdir/dumps/yaml.yaml_06.dump
deleted file mode 100644
index dcd2e6a..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_06.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|e+0#0000000&|m|p|t|y| |m|a|p@1|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a
-|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|}|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@40
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |s|e|q|u|e|n|c|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a
-|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|f+0#0000000&|o@1|,| |b|a|r|,| |b|a|z|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n
-|>+0#00e0e07&| +0#0000000&@73
-@2><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |m|a|p@1|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n
-|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l
-|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|r|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&
-|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|q|u|x|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|}+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@22
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@3|f|o@1| @67
-@4|b|a|r| @67
-@4|b|a|z| @67
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|d+0#0000000&|o|u|b|l|e| |q|u|o|t|e|d| |<+0#00e0e07&|/|s+0#af5f00255&|p
-|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|C|h|a|r|"|>+0#00e0e07&|\+0#0000000&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&| +0#0000000&|s|t|r|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p
-|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|&+0#e000e06&|q|u|o|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@47
-@4|f|o@1| @67
-@4|b|a|r| @67
-@57|1|0|9|,|3| @8|6|9|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_07.dump b/runtime/syntax/testdir/dumps/yaml.yaml_07.dump
deleted file mode 100644
index 6ba7ff1..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_07.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|l|o|w| |c|o|l@1|e|c|t|i|o|n|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&
-|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a
-|n|>+0#00e0e07&| +0#0000000&@72
-@4|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|{|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1
-|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@52
-@6><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|r|i|n|g|"|>+0#00e0e07&|'+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@48
-@8|q|u|x|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |n|o|t| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@20
-@6|'|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@28
-@4|}|]|}|]| @66
-@75
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|e+0#0000000&|x|p|l|i|c|i|t| |m|a|p@1|i|n|g|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p
-|a|n|>+0#00e0e07&| +0#0000000&@71
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|o@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|r|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|o@1| @5
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|r| @34
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|z| @5
-@57|1|2|7|,|7| @8|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_08.dump b/runtime/syntax/testdir/dumps/yaml.yaml_08.dump
deleted file mode 100644
index e2d7018..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_08.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|o|n|e| @36
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|2+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@10
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|N|u|m|b|e|r|"|>+0#00e0e07&|3+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@21
-@8|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|t|h|r|e@1| @30
-@6><+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|t|a|t|e|m|e|n|t|"|>+0#00e0e07&|-+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&
-|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|4+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i
-|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|o|u|r|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&
-|5+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|f|i|v|e|,| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|?+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@35
-@8|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|6+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|C|o|m@1|e|n|t|"|>+0#00e0e07&| +0#0000000&|#| |c|o|m@1|e|n|t|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@39
-@8|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|7+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a
-|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|s+0#0000000&|e|v|e|n|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|}+0#0000000&@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@12
-@75
-|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|m+0#0000000&|a|p@1|i|n|g| |m|e|r|g|e|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&
-| +0#0000000&@1|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|&+0#e000e06&|a|m|p|;|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@47
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|b|a|z| @1
-@57|1|4|5|,|7| @8|9|2|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml.yaml_99.dump b/runtime/syntax/testdir/dumps/yaml.yaml_99.dump
deleted file mode 100644
index 7467b76..0000000
--- a/runtime/syntax/testdir/dumps/yaml.yaml_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@3|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|&+0#e000e06&|a|m|p|;|b+0#0000000&|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@45
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|f+0#0000000&|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p
-|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i
-|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@62
-@4|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|q+0#0000000&|u|x|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@5
-@6|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|l|t|;|&|l|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&
-|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T
-|y|p|e|"|>+0#00e0e07&|*+0#0000000&|b|a|r|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|]+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@28
-@2|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|b+0#0000000&|a|z|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&
-|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|{+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|l|t|;|&|l|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p
-|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|,+0#0000000&| |<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|I|d|e|n|t|i|f|i|e|r|"|>+0#00e0e07&|q+0#0000000&|u
-|x|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|[+0#0000000&|{|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n
-| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|&+0#e000e06&|l|t|;|&|l|t|;|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|:+0#0000000&|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&|<+0#00e0e07&|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1
-|=+0#00e0e07&|"+0#e000002&|T|y|p|e|"|>+0#00e0e07&|*+0#0000000&|f|o@1|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&|<|s+0#af5f00255&|p|a|n| +0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|S|p|e|c|i|a|l|"|>+0#00e0e07&|}+0#0000000&|]|}|<+0#00e0e07&|/|s+0#af5f00255&|p|a|n|>+0#00e0e07&| +0#0000000&@23
-|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|/|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|/|h+0#af5f00255&|t|m|l|>+0#00e0e07&| +0#0000000&@67
-><+0#0000e05&|!|-@1| |v|i|m|:| |s|e|t| |f|o|l|d|m|e|t|h|o|d|=|m|a|n|u|a|l| |:| |-@1|>| +0#0000000&@37
-@57|1|6|2|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/yaml_01.dump b/runtime/syntax/testdir/dumps/yaml_01.dump
index ae84e98..bbef58c 100644
--- a/runtime/syntax/testdir/dumps/yaml_01.dump
+++ b/runtime/syntax/testdir/dumps/yaml_01.dump
@@ -11,10 +11,10 @@
 @75
 |p+0#00e0e07&|l|a|i|n| |s|t|r|i|n|g|s|:+0#e000e06&| +0#0000000&@60
 @2|-+0#af5f00255&| +0#0000000&|a| |b| |c| @65
-@2|-+0#af5f00255&| +0#0000000&|a| |*| |b| |&| |c| |@| |d|#| |e| |:| |f| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@40
+@2|-+0#af5f00255&| +0#0000000&|a|:|b| |&| |c| |@| |d|#| |e| |*| |f| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@42
 @2|-+0#af5f00255&| +0#0000000&|{@1| |f|(|'| |'|)| |}@1| +0#0000e05&|#|8|2|3|4| +0#0000000&@52
 |d+0#00e0e07&|o|u|b|l|e| |q|u|o|t|e|d| |s|t|r|i|n|g|s|:+0#e000e06&| +0#0000000&@52
 @2|-+0#af5f00255&| +0#0000000&|"+0#e000002&@1| +0#0000000&@68
 @2|-+0#af5f00255&| +0#0000000&|"+0#e000002&|a| |b| |c|"|:+0#e000e06&| +0#0000000&|"+0#e000002&|d| |e| |f|"| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@44
 @2|-+0#af5f00255&| +0#0000000&|"+0#e000002&|\+0#e000e06&@2|"|\|a|\|b|\|f|\|n|\|r|\|t|\|v|\|0|\|_|\| |\|N|\|L|\|P|\|x|4|1|\|u|0@1|4|1|\|U|0@5|4|1|"+0#e000002&| +0#0000000&@18
-@57|1|9|,|1| @9|1|2|%| 
+@57|1|9|,|1| @9|1@1|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml_03.dump b/runtime/syntax/testdir/dumps/yaml_03.dump
index 4d1466e..2ca0df0 100644
--- a/runtime/syntax/testdir/dumps/yaml_03.dump
+++ b/runtime/syntax/testdir/dumps/yaml_03.dump
@@ -17,4 +17,4 @@
 @5|b|a|r|:| |1| @63
 @2|-+0#af5f00255&| +0#0000000&|b+0#00e0e07&|l|o|c|k| |l|i|t|e|r|a|l| |s|t|r|i|n|g|:+0#e000e06&| +0#0000000&||+0#e000e06&|1|-| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@35
 @5|f|o@1| @66
-@57|5@1|,|7| @9|4|5|%| 
+@57|5@1|,|7| @9|4@1|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml_04.dump b/runtime/syntax/testdir/dumps/yaml_04.dump
index 2503470..3eda526 100644
--- a/runtime/syntax/testdir/dumps/yaml_04.dump
+++ b/runtime/syntax/testdir/dumps/yaml_04.dump
@@ -17,4 +17,4 @@
 | +0#e000002&@3|f|o@1| +0#0000000&@67
 | +0#e000002&@3|b|a|r| +0#0000000&@67
 | +0#e000002&@3|b|a|z|"| +0#0000000&@66
-@57|7|3|,|0|-|1| @7|6|2|%| 
+@57|7|3|,|0|-|1| @7|6|1|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml_05.dump b/runtime/syntax/testdir/dumps/yaml_05.dump
index d64c48b..570bdc0 100644
--- a/runtime/syntax/testdir/dumps/yaml_05.dump
+++ b/runtime/syntax/testdir/dumps/yaml_05.dump
@@ -6,9 +6,10 @@
 @2>i+0#00e0e07&|n|s|i|d|e| |b|l|o|c|k| |m|a|p@1|i|n|g|:+0#e000e06&| +0#0000000&@51
 @4|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|{+0#e000e06&|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z|}+0#e000e06&| +0#0000000&@55
 @4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|[+0#e000e06&|"+0#e000002&|f|o@1|"|:+0#e000e06&| +0#0000000&|{+0#e000e06&|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|q|u|x|}+0#e000e06&|]| +0#0000000&@46
-@2|f+0#00e0e07&|l|o|w| |c|o|l@1|e|c|t|i|o|n|:+0#e000e06&| +0#0000000&|[+0#e000e06&|f+0#0000000&|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@41
+@2|f+0#00e0e07&|l|o|w|:|c|o|l@1|e|c|t|i|o|n|:+0#e000e06&| +0#0000000&|[+0#e000e06&|f+0#0000000&|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@41
 @4|,| |{+0#e000e06&|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@50
-@6|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|'+0#e000002&| +0#0000000&@62
+@6|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&@64
+@6|'+0#e000002&| +0#0000000&@67
 | +0#e000002&@7|q|u|x| |#| |n|o|t| |c|o|m@1|e|n|t| +0#0000000&@49
 | +0#e000002&@5|'| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
 @4|}+0#e000e06&|]|}|]| +0#0000000&@66
@@ -16,5 +17,4 @@
 |e+0#00e0e07&|x|p|l|i|c|i|t| |m|a|p@1|i|n|g|:+0#e000e06&| +0#0000000&@57
 @2|?+0#e000e06&| +0#0000000&|f|o@1| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
 @2|:+0#e000e06&| +0#0000000&|b|a|r| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
-@2|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
-@57|9|1|,|3| @9|7|8|%| 
+@57|9|1|,|3| @9|7@1|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml_06.dump b/runtime/syntax/testdir/dumps/yaml_06.dump
index f6c83c2..30ea7ff 100644
--- a/runtime/syntax/testdir/dumps/yaml_06.dump
+++ b/runtime/syntax/testdir/dumps/yaml_06.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@1|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
+| +0&#ffffff0@1|:+0#e000e06&| +0#0000000&|b|a|r| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@57
+@2|?+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|f|o@1| @65
 @4|-+0#af5f00255&| +0#0000000&|b|a|r| @65
 @2|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|b|a|z| @65
 @4|-+0#af5f00255&| +0#0000000&|q|u|x| @65
-@2|?+0#e000e06&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@61
-@2>:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
+@2>?+0#e000e06&| +0#0000000&|[+0#e000e06&|1+0#e000002&|,+0#0000000&| |2+0#e000002&|,+0#0000000&| |3+0#e000002&|]+0#e000e06&| +0#0000000&@61
+@2|:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
 @4|:+0#e000e06&| +0#0000000&|o|n|e| @65
 @4|?+0#e000e06&| +0#0000000&|2+0#e000002&| +0#0000000&@67
 @4|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|?+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@63
 @8|:+0#e000e06&| +0#0000000&|t|h|r|e@1| @59
 @6|-+0#af5f00255&| +0#0000000&|{+0#e000e06&|?|4+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|o|u|r|,| |?+0#e000e06&| +0#0000000&|5+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|i|v|e|,| |?+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@33
 @8|6+0#00e0e07&|:+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@54
-@8|{+0#e000e06&|7+0#00e0e07&|:+0#e000e06&|s+0#0000000&|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
+@8|{+0#e000e06&|7+0#0000000&|:|s|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
 @75
 |m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
 @2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
 @4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
 @2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
-@57|1|0|9|,|3| @8|9|5|%| 
+@57|1|0|9|,|3| @8|9|4|%| 
diff --git a/runtime/syntax/testdir/dumps/yaml_07.dump b/runtime/syntax/testdir/dumps/yaml_07.dump
index a21684f..ff6d9a2 100644
--- a/runtime/syntax/testdir/dumps/yaml_07.dump
+++ b/runtime/syntax/testdir/dumps/yaml_07.dump
@@ -1,13 +1,9 @@
-| +0&#ffffff0@74
-|m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
-@2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
-@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
-@2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4><+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
+| +0&#ffffff0@1|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
+@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
 @4|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|&+0#00e0003&|b|a|r| +0#0000000&@61
 @6|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|]+0#e000e06&| +0#0000000&@57
 @4|q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&@66
-@6|<+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
+@6><+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
 @2|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|{+0#e000e06&|<@1|:| +0#0000000&|*+0#00e0003&|f|o@1|,+0#0000000&| |q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{|<@1| +0#0000000&|:+0#e000e06&| +0#0000000&|*+0#00e0003&|f|o@1|}+0#e000e06&|]|}| +0#0000000&@37
 |~+0#4040ff13&| @73
 |~| @73
@@ -17,4 +13,8 @@
 |~| @73
 |~| @73
 |~| @73
-| +0#0000000&@56|1|2|7|,|5| @8|B|o|t| 
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2|7|,|7| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/yaml_99.dump b/runtime/syntax/testdir/dumps/yaml_99.dump
deleted file mode 100644
index e81b373..0000000
--- a/runtime/syntax/testdir/dumps/yaml_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@1|:+0#e000e06&| +0#0000000&|?+0#e000e06&| +0#0000000&|1+0#e000002&| +0#0000000&@67
-@4|:+0#e000e06&| +0#0000000&|o|n|e| @65
-@4|?+0#e000e06&| +0#0000000&|2+0#e000002&| +0#0000000&@67
-@4|:+0#e000e06&| +0#0000000&|-+0#af5f00255&| +0#0000000&|?+0#e000e06&| +0#0000000&|3+0#e000002&| +0#0000000&@63
-@8|:+0#e000e06&| +0#0000000&|t|h|r|e@1| @59
-@6|-+0#af5f00255&| +0#0000000&|{+0#e000e06&|?|4+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|o|u|r|,| |?+0#e000e06&| +0#0000000&|5+0#00e0e07&|:+0#e000e06&| +0#0000000&|f|i|v|e|,| |?+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@33
-@8|6+0#00e0e07&|:+0#e000e06&| +0#0000e05&|#| |c|o|m@1|e|n|t| +0#0000000&@54
-@8|{+0#e000e06&|7+0#00e0e07&|:+0#e000e06&|s+0#0000000&|e|v|e|n|}+0#e000e06&@1| +0#0000000&@56
-@75
-|m+0#00e0e07&|a|p@1|i|n|g| |m|e|r|g|e|:+0#e000e06&| +0#0000000&@60
-@2|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|&+0#00e0003&|f|o@1| +0#0000000&@63
-@4|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&|b|a|z| @62
-@2|b+0#00e0e07&|a|r|:+0#e000e06&| +0#0000000&@68
-@4|<+0#e000e06&@1|:| +0#0000000&|*+0#00e0003&|f|o@1| +0#0000000&@62
-@4|b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|&+0#00e0003&|b|a|r| +0#0000000&@61
-@6|f+0#00e0e07&|o@1|:+0#e000e06&| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|]+0#e000e06&| +0#0000000&@57
-@4|q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&@66
-@6|<+0#e000e06&@1|:| +0#0000000&|[+0#e000e06&|*+0#00e0003&|f|o@1|,+0#0000000&| |*+0#00e0003&|b|a|r|]+0#e000e06&| +0#0000000&@52
-@2>b+0#00e0e07&|a|z|:+0#e000e06&| +0#0000000&|{+0#e000e06&|<@1|:| +0#0000000&|*+0#00e0003&|f|o@1|,+0#0000000&| |q+0#00e0e07&|u|x|:+0#e000e06&| +0#0000000&|[+0#e000e06&|{|<@1| +0#0000000&|:+0#e000e06&| +0#0000000&|*+0#00e0003&|f|o@1|}+0#e000e06&|]|}| +0#0000000&@37
-@57|1|2|7|,|3| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/input/java_annotations_signature.java b/runtime/syntax/testdir/input/java_annotations_signature.java
new file mode 100644
index 0000000..8236218
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_annotations_signature.java
@@ -0,0 +1,78 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+class Annotations$Tests
+{
+	@Target(ElementType.TYPE_USE)
+	@interface Tag
+	{
+		String value() default "";
+		String kind() default "";
+	}
+
+	@Target(ElementType.TYPE_USE)
+	@interface Text
+	{
+		String[] value() default {""};
+	}
+
+	@Target({
+		ElementType.METHOD,
+		ElementType.PARAMETER,
+		ElementType.TYPE,
+	})
+	@interface Labels
+	{
+		Label[] value();
+	}
+
+	@java.lang.annotation.Target({
+		java.lang.annotation.ElementType.METHOD,
+		java.lang.annotation.ElementType.PARAMETER,
+		java.lang.annotation.ElementType.TYPE,
+	})
+	@java.lang.annotation.Repeatable(Labels.class)
+	@interface Label
+	{
+		String value() default "";
+		Class type() default Label.class;
+		boolean redundant() default true;
+		Text text() default @Text;
+		Tag head() default @Tag();
+		Tag tail() default @Tag(value = "", kind = "");
+	}
+
+	/* Use identity cast expressions to nest TYPE_USE annotations. */
+								@Label(
+							(@Text({
+		(@Text({ "a", "aa", "aaa", "aaaa", }) String) "as",
+		(@Text({ "b", "bb", "bbb", "bbbb", }) String) "bs",
+		(@Text({ "c", "cc", "ccc", "cccc", }) String) "cs",
+		(@Text({ "d", "dd", "ddd", "dddd", }) String) "ds",
+							}) String) "abcd")
+	interface Primer { }
+
+	@Label @Label() @Label("""
+	n\
+	o\
+	O\
+	p""")
+	@Label(head = @Tag(value = "@Label"/*, kind = "name"*/))
+	@Label(// value = "Method",
+		type = Annotations$Tests.class,
+		redundant = !!!(1 != 1),
+		head = @Tag(value = "@Label"),
+		text = @Text({ "})", "({" }))
+	static void noOp(@Label @Label() @Label("dummy")
+		@Label(head = @Tag(/*value = "@Label",*/ kind = "name"))
+		@Label(// value = "Parameter",
+			type = Annotations$Tests.class,
+			head = @Tag(value = "@Label"),
+			text = @Text({ "){", "}(" }))
+		Object dummy)
+	{
+	}
+}
diff --git a/runtime/syntax/testdir/input/java_enfoldment.java b/runtime/syntax/testdir/input/java_enfoldment.java
index b534122..a1d8822 100644
--- a/runtime/syntax/testdir/input/java_enfoldment.java
+++ b/runtime/syntax/testdir/input/java_enfoldment.java
@@ -1,5 +1,5 @@
 // VIM_TEST_SETUP setlocal foldenable foldcolumn=2 foldmethod=syntax
-// VIM_TEST_SETUP let g:java_mark_braces_in_parens_as_errors = 1
+// VIM_TEST_SETUP let g:java_foldtext_show_first_or_second_line = 1
 
 	@SuppressWarnings({
 	"""
@@ -39,7 +39,7 @@ class FoldingTests {
 				break;
 			}
 			default: ;
-		};
+		}
 	}
 
 	{ Object bb = ((Object) new byte[]{}); }
@@ -51,6 +51,18 @@ out: {
 		} while (false);
 }
 	}
+/*\\\*/	{
+		(new java.util.function.Function() {
+			/**
+			 * {@inheritDoc} */
+			public Object apply(Object o) { return o; };
+		}).apply(
+		(new java.util.function.Function() {
+			/** {@inheritDoc}
+			 */
+			public Object apply(Object o) { return o; };
+		}));
+	}
 
 	/**
 	 * No operation.
diff --git a/runtime/syntax/testdir/input/java_generics.java b/runtime/syntax/testdir/input/java_generics.java
new file mode 100644
index 0000000..c9b001a
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_generics.java
@@ -0,0 +1,140 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+// VIM_TEST_SETUP hi link javaGenericsC1 Todo
+// VIM_TEST_SETUP hi link javaGenericsC2 Error
+
+import java.math.BigInteger;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.LongFunction;
+import java.util.function.Predicate;
+
+class GenericsTests, U>
+{	// JDK 21+.
+	static final Function, Object> PARTIAL =
+						GenericsTests.y0();
+	static final Function FACTORIAL_2000 =
+				GenericsTests.y1()
+		.apply(f -> x -> (x.compareTo(BigInteger.ONE) < 1)
+			? BigInteger.ONE
+			: x.multiply(f.apply(x.subtract(BigInteger.ONE))));
+
+	static  Y0 y0()
+	{
+		return (Function f) -> f.apply(
+					GenericsTests.y0()
+						.apply(f));
+	}
+
+	static  Y1 y1()
+	{
+		return (Function, Function> f) ->
+			(T1 x) -> f.apply(GenericsTests.y1()
+						.apply(f))
+				.apply(x);
+	}
+
+	static void noOp(T dummy) { }
+
+	interface alpha { }
+
+	interface Y0 extends Function, T1> { }
+
+	interface Y1 extends Function,
+					Function>,
+					Function> { }
+
+	interface Stackable extends Iterable
+	{
+		boolean isEmpty();
+		E peek();
+		E pop();
+		Stackable popAll(Stackable elements);
+		Stackable popSome(Stackable elements,
+					Predicate filter);
+		Stackable push(E element);
+		Stackable pushAll(Iterable elements);
+		Stackable pushSome(Iterable elements,
+					Predicate filter);
+		Stackable wind(Consumer> action);
+	}
+
+	sealed interface Num
+	{
+		int radix();
+		N value();
+	}
+
+	record Bin(N value) implements Num
+	{
+		public int radix() { return 2; }
+	}
+
+	record Dec(N value) implements Num
+	{
+		public int radix() { return 10; }
+	}
+
+	record Hex(N value) implements Num
+	{
+		public int radix() { return 16; }
+	}
+
+	record Oct(N value) implements Num
+	{
+		public int radix() { return 8; }
+	}
+
+	static Num fromDecimal(long x, int radix)
+	{
+		record Pair(LongFunction> a,
+					LongFunction b) { }
+		final Pair p = switch (radix) {
+			case 2 -> new Pair(Bin::new, Long::toBinaryString);
+			case 8 -> new Pair(Oct::new, Long::toOctalString);
+			case 16 -> new Pair(Hex::new, Long::toHexString);
+			default -> new Pair(Dec::new,
+						y -> Long.toString(y));
+		};
+		return p.a().apply(Long.parseLong(p.b().apply(x), radix));
+	}
+
+	static long toDecimal(Num x)
+	{
+		return Long.parseLong(switch (x) {
+			case Bin(Long b) -> Long.toBinaryString(b);
+			case Oct(Long o) -> Long.toOctalString(o);
+			case Hex(Long h) -> Long.toHexString(h);
+			default -> Long.toString(x.value());
+		}, x.radix());
+	}
+
+	@java.lang.annotation.Target(
+				java.lang.annotation.ElementType.TYPE_USE)
+	@interface Taggable
+	{
+		String value() default "";
+	}
+
+	{
+		int N = 0, X = 1, Y = 2;
+		Predicate f = y->N g = y->XN;
+		boolean[] bb = {
+			XY, X < Y, X  klass = GenericsTests.class;
+		Class< java.lang.Class<@Taggable("<>")int[][]> [] [] >
+		[ ] [ ] $ [ ] [ ];
+		if (false) { new GenericsTests<>(); }
+		alpha ao;
+		alpha au;
+		alpha> aau;
+		alpha> ay0o;
+		alpha> ay0u;
+		Y0> y0ao;
+		Y0> y0au;
+	}
+}
diff --git a/runtime/syntax/testdir/input/java_generics_signature.java b/runtime/syntax/testdir/input/java_generics_signature.java
new file mode 100644
index 0000000..505e70e
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_generics_signature.java
@@ -0,0 +1,140 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+// VIM_TEST_SETUP hi link javaGenericsC1 Todo
+// VIM_TEST_SETUP hi link javaGenericsC2 Error
+import java.math.BigInteger;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.LongFunction;
+import java.util.function.Predicate;
+
+class Generics$Tests, U>
+{	// JDK 21+.
+	static final Function, Object> PARTIAL =
+						Generics$Tests.y0();
+	static final Function FACTORIAL_2000 =
+				Generics$Tests.y1()
+		.apply(f -> x -> (x.compareTo(BigInteger.ONE) < 1)
+			? BigInteger.ONE
+			: x.multiply(f.apply(x.subtract(BigInteger.ONE))));
+
+	static  Y0 y0()
+	{
+		return (Function f) -> f.apply(
+					Generics$Tests.y0()
+						.apply(f));
+	}
+
+	static  Y1 y1()
+	{
+		return (Function, Function> f) ->
+			(T1 x) -> f.apply(Generics$Tests.y1()
+						.apply(f))
+				.apply(x);
+	}
+
+	static void noOp(T dummy) { }
+
+	interface alpha { }
+
+	interface Y0 extends Function, T1> { }
+
+	interface Y1 extends Function,
+					Function>,
+					Function> { }
+
+	interface Stackable extends Iterable
+	{
+		boolean isEmpty();
+		E peek();
+		E pop();
+		Stackable popAll(Stackable elements);
+		Stackable popSome(Stackable elements,
+					Predicate filter);
+		Stackable push(E element);
+		Stackable pushAll(Iterable elements);
+		Stackable pushSome(Iterable elements,
+					Predicate filter);
+		Stackable wind(Consumer> action);
+	}
+
+	sealed interface Num
+	{
+		int radix();
+		N value();
+	}
+
+	record Bin(N value) implements Num
+	{
+		public int radix() { return 2; }
+	}
+
+	record Dec(N value) implements Num
+	{
+		public int radix() { return 10; }
+	}
+
+	record Hex(N value) implements Num
+	{
+		public int radix() { return 16; }
+	}
+
+	record Oct(N value) implements Num
+	{
+		public int radix() { return 8; }
+	}
+
+	static Num fromDecimal(long x, int radix)
+	{
+		record Pair(LongFunction> a,
+					LongFunction b) { }
+		final Pair p = switch (radix) {
+			case 2 -> new Pair(Bin::new, Long::toBinaryString);
+			case 8 -> new Pair(Oct::new, Long::toOctalString);
+			case 16 -> new Pair(Hex::new, Long::toHexString);
+			default -> new Pair(Dec::new,
+						y -> Long.toString(y));
+		};
+		return p.a().apply(Long.parseLong(p.b().apply(x), radix));
+	}
+
+	static long toDecimal(Num x)
+	{
+		return Long.parseLong(switch (x) {
+			case Bin(Long b) -> Long.toBinaryString(b);
+			case Oct(Long o) -> Long.toOctalString(o);
+			case Hex(Long h) -> Long.toHexString(h);
+			default -> Long.toString(x.value());
+		}, x.radix());
+	}
+
+	@java.lang.annotation.Target(
+				java.lang.annotation.ElementType.TYPE_USE)
+	@interface Taggable
+	{
+		String value() default "";
+	}
+
+	{
+		int N = 0, X = 1, Y = 2;
+		Predicate f = y->N g = y->XN;
+		boolean[] bb = {
+			XY, X < Y, X  klass = Generics$Tests.class;
+		Class< java.lang.Class<@Taggable("<>")int[][]> [] [] >
+		[ ] [ ] $ [ ] [ ];
+		if (false) { new Generics$Tests<>(); }
+		alpha ao;
+		alpha au;
+		alpha> aau;
+		alpha> ay0o;
+		alpha> ay0u;
+		Y0> y0ao;
+		Y0> y0au;
+	}
+}
diff --git a/runtime/syntax/testdir/input/java_lambda_expressions.java b/runtime/syntax/testdir/input/java_lambda_expressions.java
index 75f5af4..95531f9 100644
--- a/runtime/syntax/testdir/input/java_lambda_expressions.java
+++ b/runtime/syntax/testdir/input/java_lambda_expressions.java
@@ -136,7 +136,7 @@ class LambdaExpressionsTests	// JDK 21+.
 			case String str_		-> str_;
 			}):			{ echo(str); break; }
 		case null: default:		{ echo("Other"); }
-		};
+		}
 
 		echo(switch (null) {
 			case String str when !"".equals(
diff --git a/runtime/syntax/testdir/input/java_lambda_expressions_signature.java b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
new file mode 100644
index 0000000..0d89e9c
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
@@ -0,0 +1,154 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+
+import java.lang.annotation.ElementType;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+class LambdaExpressions$Tests	// JDK 21+.
+{
+	 void test()
+	{	// Schönfinkel's functions.
+		I i = x -> x;
+		C c = x -> y -> x;
+		T t = f -> y -> x -> f.apply(x).apply(y);
+		Z z = f -> g -> x -> f.apply(g.apply(x));
+		S s = f -> g -> x -> f.apply(x)
+						.apply(g.apply(x));
+
+		I i01 = (var x) -> x;
+		I i02 = (@Taggable var x) -> x;
+		I i03 = (@Taggable @Taggable var x) -> x;
+		I i04 = (final var x) -> x;
+		I i05 = (@Taggable final var x) -> x;
+		I i06 = (@Taggable @Taggable final var x) -> x;
+		I i07 = (I1 x) -> x;
+		I i08 = (@Taggable I1 x) -> x;
+		I i09 = (@Taggable @Taggable I1 x) -> x;
+		I i10 = (final I1 x) -> x;
+		I i11 = (@Taggable final I1 x) -> x;
+		I i12 = (@Taggable @Taggable final I1 x) -> x;
+
+		I ii01 = (I1... x) -> x;
+		I ii02 = (@Taggable I1... x) -> x;
+		I ii03 = (@Taggable @Taggable I1... x) -> x;
+		I ii04 = (final I1... x) -> x;
+		I ii05 = (@Taggable final I1... x) -> x;
+		I ii06 = (@Taggable @Taggable final I1... x) -> x;
+
+		BinaryOperator leftConst01 = (var x, var y) -> x;
+		BinaryOperator leftConst02 = (@Taggable var x,
+					@Taggable var y) -> x;
+		BinaryOperator leftConst03 = (@Taggable @Taggable var
+					x, @Taggable @Taggable var y) -> x;
+		BinaryOperator leftConst04 = (final var x,
+					final var y) -> x;
+		BinaryOperator leftConst05 = (@Taggable final
+					var x, @Taggable final var y) -> x;
+		BinaryOperator leftConst06 = (@Taggable
+					@Taggable final var x,
+					@Taggable
+					@Taggable final var y) -> x;
+		BinaryOperator leftConst07 = (I1 x, I1 y) -> x;
+		BinaryOperator leftConst08 = (@Taggable I1 x,
+					@Taggable I1 y) -> x;
+		BinaryOperator leftConst09 = (@Taggable @Taggable I1
+					x, @Taggable @Taggable I1 y) -> x;
+		BinaryOperator leftConst10 = (final I1 x,
+					final I1 y) -> x;
+		BinaryOperator leftConst11 = (@Taggable final
+					I1 x, @Taggable final I1 y) -> x;
+		BinaryOperator leftConst12 = (@Taggable
+					@Taggable final I1 x,
+					@Taggable
+					@Taggable final I1 y) -> x;
+
+		Runnable noOp = () -> {};
+		BinaryOperator leftConst = (x, y) -> x;
+		I id1 = (x) -> (x);
+		@SuppressWarnings("unchecked") I id2 =
+				((I>) (I) (Function x) -> x).apply(switch (0) {
+				case ((int) (byte) 1) -> (I1 x) -> x;
+				default -> (@Taggable I1 x) -> x; });
+		C const1 = (x) -> (y) -> (x);
+		C const2 = switch(switch ("") {
+						case "->"->"(s)->(s)";
+						default->"default"; }) {
+			case ("->")->(var x)->(var y)->(x);
+			default->(@Taggable var x)->(@Taggable var y)
+				->(x);
+		};
+	}
+
+	@java.lang.annotation.Target(ElementType.PARAMETER)
+	@java.lang.annotation.Repeatable(Taggables.class)
+	@interface Taggable { String[] value() default ""; }
+
+	@java.lang.annotation.Target(ElementType.PARAMETER)
+	@interface Taggables { Taggable[] value(); }
+
+	interface I extends Function { }
+	interface C extends Function> { }
+	interface T extends
+				Function>,
+					Function>> { }
+	interface Z extends Function,
+					Function,
+					Function>> { }
+	interface S extends
+				Function>,
+					Function,
+					Function>> { }
+
+	static void echo(Object o) { System.out.println(o); }
+
+	static {
+		enum Letters { OTHER, ALPHA, BETA }
+
+		Letters other = Letters.OTHER;
+
+		switch (other) {
+		case Letters alpha when Letters.ALPHA == alpha:
+						{ echo(alpha); break; }
+		case Letters beta when Letters.BETA == beta:
+						{ echo(beta); break; }
+		default:			{ echo(other); }
+		}
+
+		echo(switch (other) {
+			case Letters alpha when Letters.ALPHA == alpha
+						-> alpha;
+			case Letters beta when Letters.BETA == beta
+						-> beta;
+			default			-> other;
+		});
+
+		switch (null) {
+		case String str when !"".equals(switch (str) {
+			case String str_ when
+					Predicate.not(text ->
+							!text.isEmpty())
+						.test(str_)
+							-> "";
+			case String str_		-> str_;
+			}):			{ echo(str); break; }
+		case null: default:		{ echo("Other"); }
+		}
+
+		echo(switch (null) {
+			case String str when !"".equals(
+							switch (str) {
+				case String str_ when
+					Predicate.not(text ->
+							!text.isEmpty())
+						.test(str_)
+							-> "";
+				case String str_	-> str_;
+				})		-> str;
+			case null, default	-> "Other";
+		});
+	}
+}
diff --git a/runtime/syntax/testdir/input/java_method_references.java b/runtime/syntax/testdir/input/java_method_references.java
new file mode 100644
index 0000000..d9cdf42
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_method_references.java
@@ -0,0 +1,186 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+
+
+import java.lang.invoke.MethodHandle;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.IntFunction;
+import java.util.function.IntSupplier;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.ToIntFunction;
+import java.util.function.UnaryOperator;
+
+class MethodReferencesTests
+{
+	static {
+		// Primary :: [TypeArguments] Identifier
+		try {
+			Runnable r1 = ((Runtime) null)::gc;
+		} catch (NullPointerException expected) {
+		}
+
+		Supplier s1 = ((Number) 0)::hashCode;
+		Supplier s2 = ((Comparable) '\0')::hashCode;
+		Supplier s3 = ((Comparable) false)::hashCode;
+		Supplier s4 = "::"::hashCode;
+		Supplier> s5 = int[].class::arrayType;
+		Supplier s6 = new MethodReferencesTests() ::
+			hashCode;
+		Supplier s7 = ((Number)
+			(new MethodReferencesTests().xy)[0])::intValue;
+		Supplier s8 = new MethodReferencesTests().xy::
+			clone;
+		Consumer c1 = System.out :: println;
+		Supplier s9 = ((Supplier) ()->"()").get()
+			::getBytes;
+		Supplier sa = ((Supplier)
+			((Supplier) ((Supplier)
+			((Supplier) ((Supplier)
+			() -> "() -> ()")
+			::toString)
+			::toString)
+			::get)
+			::toString)
+			::toString;
+
+		// ExpressionName :: [TypeArguments] Identifier
+		// ReferenceType :: [TypeArguments] Identifier
+		Function f1 = s ->
+						s :: length;
+		Function> f2 = ii ->
+			((int[]) (ii.length > 0 ? ii[0] : ii))
+							:: clone;
+		UnaryOperator uo1 = String::valueOf;
+		ToIntFunction tif1 = s -> s.transform(
+						String :: length);
+
+		// ClassType :: [TypeArguments] new
+		// ArrayType :: new
+		Function f3 = C2::new;
+		Function f4 = pci -> pci.new
+					C21(null); // Cf. "d".
+		Supplier> sb = C1::new;
+		Function> f5 = C1 ::  new;
+		IntFunction[]> if1 = C1[] :: new;
+		IntFunction if2 = byte[] :: new;
+	}
+
+	final int[] xy = { 0, 1 };
+
+	// super :: [TypeArguments] Identifier
+	// TypeName . super :: [TypeArguments] Identifier
+	 MethodReferencesTests()
+	{
+		Predicate p1 = MethodReferencesTests.super::equals;
+		Predicate p2 = MethodReferencesTests.this::equals;
+	}
+
+	interface I4 extends I3
+	{
+		default Predicate superEqualist()
+		{
+			return I3
+				.super::equals;	/* "a" */
+		}
+	}
+
+	interface I3 extends I2
+	{
+		default Predicate superEqualist()
+		{
+			return I2.
+				super::equals;	/* "b" */
+		}
+	}
+
+	interface I2 extends I1
+	{
+		default Predicate superEqualist()
+		{	/* Non-capturing gymnastics for super::equals. */
+			return Function.>>
+								identity()
+				.apply(mh -> o -> MethodReferencesTests
+						.invokePredicate(mh, o))
+				.apply(EQUALS.bindTo(this));
+		}
+	}
+
+	interface I1
+	{
+		default Predicate equalist()
+		{	/* Non-capturing gymnastics for this::equals. */
+			return Function., Predicate>>
+								identity()
+				.apply(that -> o -> Function
+						., T>>
+								identity()
+					.apply(I1::	/* "c" */
+						equals)
+					.test(that, o))
+				.apply(I1.this);
+		}
+	}
+
+	static  boolean invokePredicate(MethodHandle mh, T o)
+	{
+		try {
+			return (boolean) mh.invokeExact(o);
+		} catch (Throwable th) {
+			throw new RuntimeException(th);
+		}
+	}
+
+	private static final MethodHandle EQUALS;
+
+	static {
+		try {
+			EQUALS = java.lang.invoke.MethodHandles.lookup()
+							.findSpecial(
+				I1.class,
+				"equals",
+				java.lang.invoke.MethodType.methodType(
+							boolean.class,
+							Object.class),
+				I2.class);
+		} catch (ReflectiveOperationException e) {
+			throw new Error(e);
+		}
+	}
+
+	static class C1
+	{
+		C1() { }
+		 C1(A dummy) { }
+	}
+
+	static class C2
+	{
+		C2() {  this(""); }
+
+		 C2(A dummy)
+		{
+			C2.stringer().apply(((Function)
+						C2.C21::new)	/* "d" */
+					.apply(C2.this));
+		}
+
+		class C21
+		{
+			C21() {  this(""); }
+
+			 C21(B dummy)
+			{
+				C2.stringer().apply(C2.this);
+			}
+		}
+
+		static  Function stringer()
+		{
+			return T::toString;	/* "e" */
+		}
+	}
+}
diff --git a/runtime/syntax/testdir/input/java_method_references_signature.java b/runtime/syntax/testdir/input/java_method_references_signature.java
new file mode 100644
index 0000000..a154b12
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_method_references_signature.java
@@ -0,0 +1,186 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+
+import java.lang.invoke.MethodHandle;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.IntFunction;
+import java.util.function.IntSupplier;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.ToIntFunction;
+import java.util.function.UnaryOperator;
+
+class MethodReferences$Tests
+{
+	static {
+		// Primary :: [TypeArguments] Identifier
+		try {
+			Runnable r1 = ((Runtime) null)::gc;
+		} catch (NullPointerException expected) {
+		}
+
+		Supplier s1 = ((Number) 0)::hashCode;
+		Supplier s2 = ((Comparable) '\0')::hashCode;
+		Supplier s3 = ((Comparable) false)::hashCode;
+		Supplier s4 = "::"::hashCode;
+		Supplier> s5 = int[].class::arrayType;
+		Supplier s6 = new MethodReferences$Tests() ::
+			hashCode;
+		Supplier s7 = ((Number)
+			(new MethodReferences$Tests().xy)[0])::intValue;
+		Supplier s8 = new MethodReferences$Tests().xy::
+			clone;
+		Consumer c1 = System.out :: println;
+		Supplier s9 = ((Supplier) ()->"()").get()
+			::getBytes;
+		Supplier sa = ((Supplier)
+			((Supplier) ((Supplier)
+			((Supplier) ((Supplier)
+			() -> "() -> ()")
+			::toString)
+			::toString)
+			::get)
+			::toString)
+			::toString;
+
+		// ExpressionName :: [TypeArguments] Identifier
+		// ReferenceType :: [TypeArguments] Identifier
+		Function f1 = s ->
+						s :: length;
+		Function> f2 = ii ->
+			((int[]) (ii.length > 0 ? ii[0] : ii))
+							:: clone;
+		UnaryOperator uo1 = String::valueOf;
+		ToIntFunction tif1 = s -> s.transform(
+						String :: length);
+
+		// ClassType :: [TypeArguments] new
+		// ArrayType :: new
+		Function f3 = C2::new;
+		Function f4 = pci -> pci.new
+					C21(null); // Cf. "d".
+		Supplier> sb = C1::new;
+		Function> f5 = C1 ::  new;
+		IntFunction[]> if1 = C1[] :: new;
+		IntFunction if2 = byte[] :: new;
+	}
+
+	final int[] xy = { 0, 1 };
+
+	// super :: [TypeArguments] Identifier
+	// TypeName . super :: [TypeArguments] Identifier
+	 MethodReferences$Tests()
+	{
+		Predicate p1 = MethodReferences$Tests.super::equals;
+		Predicate p2 = MethodReferences$Tests.this::equals;
+	}
+
+	interface I4 extends I3
+	{
+		default Predicate superEqualist()
+		{
+			return I3
+				.super::equals;	/* "a" */
+		}
+	}
+
+	interface I3 extends I2
+	{
+		default Predicate superEqualist()
+		{
+			return I2.
+				super::equals;	/* "b" */
+		}
+	}
+
+	interface I2 extends I1
+	{
+		default Predicate superEqualist()
+		{	/* Non-capturing gymnastics for super::equals. */
+			return Function.>>
+								identity()
+				.apply(mh -> o -> MethodReferences$Tests
+						.invokePredicate(mh, o))
+				.apply(EQUALS.bindTo(this));
+		}
+	}
+
+	interface I1
+	{
+		default Predicate equalist()
+		{	/* Non-capturing gymnastics for this::equals. */
+			return Function., Predicate>>
+								identity()
+				.apply(that -> o -> Function
+						., T>>
+								identity()
+					.apply(I1::	/* "c" */
+						equals)
+					.test(that, o))
+				.apply(I1.this);
+		}
+	}
+
+	static  boolean invokePredicate(MethodHandle mh, T o)
+	{
+		try {
+			return (boolean) mh.invokeExact(o);
+		} catch (Throwable th) {
+			throw new RuntimeException(th);
+		}
+	}
+
+	private static final MethodHandle EQUALS;
+
+	static {
+		try {
+			EQUALS = java.lang.invoke.MethodHandles.lookup()
+							.findSpecial(
+				I1.class,
+				"equals",
+				java.lang.invoke.MethodType.methodType(
+							boolean.class,
+							Object.class),
+				I2.class);
+		} catch (ReflectiveOperationException e) {
+			throw new Error(e);
+		}
+	}
+
+	static class C1
+	{
+		C1() { }
+		 C1(A dummy) { }
+	}
+
+	static class C2
+	{
+		C2() {  this(""); }
+
+		 C2(A dummy)
+		{
+			C2.stringer().apply(((Function)
+						C2.C21::new)	/* "d" */
+					.apply(C2.this));
+		}
+
+		class C21
+		{
+			C21() {  this(""); }
+
+			 C21(B dummy)
+			{
+				C2.stringer().apply(C2.this);
+			}
+		}
+
+		static  Function stringer()
+		{
+			return T::toString;	/* "e" */
+		}
+	}
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent2.java b/runtime/syntax/testdir/input/java_methods_indent2.java
index 58a6900..3754cc4 100644
--- a/runtime/syntax/testdir/input/java_methods_indent2.java
+++ b/runtime/syntax/testdir/input/java_methods_indent2.java
@@ -84,9 +84,21 @@ abstract class Indent2MethodsTests
 enum E2
 {
   @SuppressWarnings("bespoke") A("a"),
-  B("b"),
-  C("c"), D("d"),
-  E("e"), F("f"), G("g"), H("h");
+  B("b"
+    /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+  C("c", new Thread(
+
+    () -> {
+  })), D("d", (java.util.function.BooleanSupplier) () -> true),
+  E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+    transient String name = "";
+    @Override public String toString() { return this.name; }
+  }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+  G("g"), @Deprecated H("h");
+
   final String s;
   private E2(String s) { this.s = s; }
+  private <δ> E2(String s, δ dummy) { this(s); }
+
+  @Override public String toString() { return name().toUpperCase(); }
 }
diff --git a/runtime/syntax/testdir/input/java_methods_indent2_signature.java b/runtime/syntax/testdir/input/java_methods_indent2_signature.java
new file mode 100644
index 0000000..05e633b
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent2_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent2'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent2$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+  // TYPES.
+  record Τʬ<α>(α a) { }
+
+  enum E
+  {
+    A("a"), B("b"), C("c"), D("d"),
+    E("e"), F("f"), G("g"), H("h");
+    final String s;
+    private E(String s) { this.s = s; }
+  }
+
+  @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+  @java.lang.annotation.Repeatable(Tɐggablɘs.class)
+  @interface Tɐggablɘ
+  {
+    String[] value() default "";
+  }
+
+  @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+  @interface Tɐggablɘs
+  {
+    Tɐggablɘ[] value();
+  }
+
+  interface Stylable<Α>
+  {
+    default void ascii$0_() { }
+    default Α μʭʭ$0_() { return null; }
+  }
+
+  // FIELDS.
+  private static final Class CLASS_LOCK = classLock();
+
+  private final Object instanceLock = new Object();
+
+  // CONSTRUCTORS.
+  @Tɐggablɘ @Tɐggablɘ protected Indent2$MethodsTests() { }
+  > Indent2$MethodsTests(T t, Void v) { }
+  private > Indent2$MethodsTests(T t) { }
+
+  // METHODS.
+  @Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+                                                                );
+  @Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+                                @SuppressWarnings("bespoke") β b);
+
+  @Tɐggablɘ private native void ascii$1_(/*////////////*/);
+  @Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+                        java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+  void Ascii$2_() { }
+  > void Μʭʭ$2_(U u) { }
+
+  static final native synchronized void ascii$98_();
+  static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+  @SuppressWarnings("strictfp")
+  protected static final synchronized strictfp void ascii$99_()
+  { ascii$98_(); }
+
+  @SuppressWarnings("strictfp")
+  protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+  {
+    return
+  Indent2$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+  }
+
+  public static Class classLock() { return Indent2$MethodsTests.class; }
+
+  @Override @SuppressWarnings("cast")
+  public String toString() { return (String) "Indent2$MethodsTests"; }
+}
+
+enum E2$
+{
+  @SuppressWarnings("bespoke") A("a"),
+  B("b"
+    /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+  C("c", new Thread(
+
+    () -> {
+  })), D("d", (java.util.function.BooleanSupplier) () -> true),
+  E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+    transient String name = "";
+    @Override public String toString() { return this.name; }
+  }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+  G("g"), @Deprecated H("h");
+
+  final String s;
+  private E2$(String s) { this.s = s; }
+  private <δ> E2$(String s, δ dummy) { this(s); }
+
+  @Override public String toString() { return name().toUpperCase(); }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent4.java b/runtime/syntax/testdir/input/java_methods_indent4.java
index 972cdf3..8fc05c0 100644
--- a/runtime/syntax/testdir/input/java_methods_indent4.java
+++ b/runtime/syntax/testdir/input/java_methods_indent4.java
@@ -84,9 +84,21 @@ abstract class Indent4MethodsTests
 enum E4
 {
     @SuppressWarnings("bespoke") A("a"),
-    B("b"),
-    C("c"), D("d"),
-    E("e"), F("f"), G("g"), H("h");
+    B("b"
+        /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+    C("c", new Thread(
+
+        () -> {
+    })), D("d", (java.util.function.BooleanSupplier) () -> true),
+    E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+        transient String name = "";
+        @Override public String toString() { return this.name; }
+    }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+    G("g"), @Deprecated H("h");
+
     final String s;
     private E4(String s) { this.s = s; }
+    private <δ> E4(String s, δ dummy) { this(s); }
+
+    @Override public String toString() { return name().toUpperCase(); }
 }
diff --git a/runtime/syntax/testdir/input/java_methods_indent4_signature.java b/runtime/syntax/testdir/input/java_methods_indent4_signature.java
new file mode 100644
index 0000000..f21d95d
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent4_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent4'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent4$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+    // TYPES.
+    record Τʬ<α>(α a) { }
+
+    enum E
+    {
+        A("a"), B("b"), C("c"), D("d"),
+        E("e"), F("f"), G("g"), H("h");
+        final String s;
+        private E(String s) { this.s = s; }
+    }
+
+    @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+    @java.lang.annotation.Repeatable(Tɐggablɘs.class)
+    @interface Tɐggablɘ
+    {
+        String[] value() default "";
+    }
+
+    @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+    @interface Tɐggablɘs
+    {
+        Tɐggablɘ[] value();
+    }
+
+    interface Stylable<Α>
+    {
+        default void ascii$0_() { }
+        default Α μʭʭ$0_() { return null; }
+    }
+
+    // FIELDS.
+    private static final Class CLASS_LOCK = classLock();
+
+    private final Object instanceLock = new Object();
+
+    // CONSTRUCTORS.
+    @Tɐggablɘ @Tɐggablɘ protected Indent4$MethodsTests() { }
+    > Indent4$MethodsTests(T t, Void v) { }
+    private > Indent4$MethodsTests(T t) { }
+
+    // METHODS.
+    @Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+                                                                );
+    @Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+                                @SuppressWarnings("bespoke") β b);
+
+    @Tɐggablɘ private native void ascii$1_(/*////////////*/);
+    @Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+                        java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+    void Ascii$2_() { }
+    > void Μʭʭ$2_(U u) { }
+
+    static final native synchronized void ascii$98_();
+    static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+    @SuppressWarnings("strictfp")
+    protected static final synchronized strictfp void ascii$99_()
+    { ascii$98_(); }
+
+    @SuppressWarnings("strictfp")
+    protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+    {
+        return
+    Indent4$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+    }
+
+    public static Class classLock() { return Indent4$MethodsTests.class; }
+
+    @Override @SuppressWarnings("cast")
+    public String toString() { return (String) "Indent4$MethodsTests"; }
+}
+
+enum E4$
+{
+    @SuppressWarnings("bespoke") A("a"),
+    B("b"
+        /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+    C("c", new Thread(
+
+        () -> {
+    })), D("d", (java.util.function.BooleanSupplier) () -> true),
+    E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+        transient String name = "";
+        @Override public String toString() { return this.name; }
+    }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+    G("g"), @Deprecated H("h");
+
+    final String s;
+    private E4$(String s) { this.s = s; }
+    private <δ> E4$(String s, δ dummy) { this(s); }
+
+    @Override public String toString() { return name().toUpperCase(); }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent8.java b/runtime/syntax/testdir/input/java_methods_indent8.java
index 40fd26b..d27830c 100644
--- a/runtime/syntax/testdir/input/java_methods_indent8.java
+++ b/runtime/syntax/testdir/input/java_methods_indent8.java
@@ -84,9 +84,21 @@ abstract class Indent8MethodsTests
 enum E8
 {
         @SuppressWarnings("bespoke") A("a"),
-        B("b"),
-        C("c"), D("d"),
-        E("e"), F("f"), G("g"), H("h");
+        B("b"
+                /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+        C("c", new Thread(
+
+                () -> {
+        })), D("d", (java.util.function.BooleanSupplier) () -> true),
+        E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+                transient String name = "";
+                @Override public String toString() { return this.name; }
+        }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+        G("g"), @Deprecated H("h");
+
         final String s;
         private E8(String s) { this.s = s; }
+        private <δ> E8(String s, δ dummy) { this(s); }
+
+        @Override public String toString() { return name().toUpperCase(); }
 }
diff --git a/runtime/syntax/testdir/input/java_methods_indent8_signature.java b/runtime/syntax/testdir/input/java_methods_indent8_signature.java
new file mode 100644
index 0000000..8d82196
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent8_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent8'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent8$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+        // TYPES.
+        record Τʬ<α>(α a) { }
+
+        enum E
+        {
+                A("a"), B("b"), C("c"), D("d"),
+                E("e"), F("f"), G("g"), H("h");
+                final String s;
+                private E(String s) { this.s = s; }
+        }
+
+        @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+        @java.lang.annotation.Repeatable(Tɐggablɘs.class)
+        @interface Tɐggablɘ
+        {
+                String[] value() default "";
+        }
+
+        @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+        @interface Tɐggablɘs
+        {
+                Tɐggablɘ[] value();
+        }
+
+        interface Stylable<Α>
+        {
+                default void ascii$0_() { }
+                default Α μʭʭ$0_() { return null; }
+        }
+
+        // FIELDS.
+        private static final Class CLASS_LOCK = classLock();
+
+        private final Object instanceLock = new Object();
+
+        // CONSTRUCTORS.
+        @Tɐggablɘ @Tɐggablɘ protected Indent8$MethodsTests() { }
+        > Indent8$MethodsTests(T t, Void v) { }
+        private > Indent8$MethodsTests(T t) { }
+
+        // METHODS.
+        @Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+                                                                );
+        @Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+                                @SuppressWarnings("bespoke") β b);
+
+        @Tɐggablɘ private native void ascii$1_(/*////////////*/);
+        @Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+                        java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+        void Ascii$2_() { }
+        > void Μʭʭ$2_(U u) { }
+
+        static final native synchronized void ascii$98_();
+        static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+        @SuppressWarnings("strictfp")
+        protected static final synchronized strictfp void ascii$99_()
+        { ascii$98_(); }
+
+        @SuppressWarnings("strictfp")
+        protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+        {
+                return
+        Indent8$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+        }
+
+        public static Class classLock() { return Indent8$MethodsTests.class; }
+
+        @Override @SuppressWarnings("cast")
+        public String toString() { return (String) "Indent8$MethodsTests"; }
+}
+
+enum E8$
+{
+        @SuppressWarnings("bespoke") A("a"),
+        B("b"
+                /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+        C("c", new Thread(
+
+                () -> {
+        })), D("d", (java.util.function.BooleanSupplier) () -> true),
+        E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+                transient String name = "";
+                @Override public String toString() { return this.name; }
+        }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+        G("g"), @Deprecated H("h");
+
+        final String s;
+        private E8$(String s) { this.s = s; }
+        private <δ> E8$(String s, δ dummy) { this(s); }
+
+        @Override public String toString() { return name().toUpperCase(); }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_style_signature.java b/runtime/syntax/testdir/input/java_methods_style_signature.java
new file mode 100644
index 0000000..8e3b4d6
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_style_signature.java
@@ -0,0 +1,82 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Style$MethodsTests
+{
+	// TYPES.
+	record Τʬ<α>(α a) { }
+
+	enum E
+	{
+		A("a"), B("b"), C("c"), D("d"),
+		E("e"), F("f"), G("g"), H("h");
+		final String s;
+		private E(String s) { this.s = s; }
+	}
+
+	@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+	@java.lang.annotation.Repeatable(Tɐggablɘs.class)
+	@interface Tɐggablɘ
+	{
+		String[] value() default "";
+	}
+
+	@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+	@interface Tɐggablɘs
+	{
+		Tɐggablɘ[] value();
+	}
+
+	interface Stylable<Α>
+	{
+		default void ascii$0_() { }
+		default Α μʭʭ$0_() { return null; }
+	}
+
+	// FIELDS.
+	private static final Class CLASS_LOCK = classLock();
+
+	private final Object instanceLock = new Object();
+
+	// CONSTRUCTORS.
+	@Tɐggablɘ @Tɐggablɘ protected Style$MethodsTests() { }
+	> Style$MethodsTests(T t, Void v) { }
+	private > Style$MethodsTests(T t) { }
+
+	// METHODS.
+	@Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+								);
+	@Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+				@SuppressWarnings("bespoke") β b);
+
+	@Tɐggablɘ private native void ascii$1_(/*////////////*/);
+	@Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+			java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+	void Ascii$2_() { }
+	> void Μʭʭ$2_(U u) { }
+
+	static final native synchronized void ascii$98_();
+	static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+			java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+	@SuppressWarnings("strictfp")
+	protected static final synchronized strictfp void ascii$99_()
+	{ ascii$98_(); }
+
+	@SuppressWarnings("strictfp")
+	protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+			java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+	{
+		return
+	Style$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+	}
+
+	public static Class classLock() { return Style$MethodsTests.class; }
+
+	@Override @SuppressWarnings("cast")
+	public String toString() { return (String) "Style$MethodsTests"; }
+}
diff --git a/runtime/syntax/testdir/input/java_switch.java b/runtime/syntax/testdir/input/java_switch.java
index 14b2e11..d82fcb1 100644
--- a/runtime/syntax/testdir/input/java_switch.java
+++ b/runtime/syntax/testdir/input/java_switch.java
@@ -55,7 +55,7 @@ class SwitchTests	// JDK 21+.
 		case null:		{ echo("null"); break; }
 		case Letters[] ll:	{ echo("SwitchTests$1Letters[]"); break; }
 		default:		{ echo("java.lang.Object"); break; }
-		};
+		}
 
 		echo(switch (o) {
 			case null		-> "null";
@@ -69,7 +69,7 @@ class SwitchTests	// JDK 21+.
 		case 'a':		{ echo('a'); break; }
 		case 'b':		{ echo('b'); break; }
 		default:		{ echo('\u0000'); break; }
-		};
+		}
 
 		echo(switch (ch) {
 			case 'a'	-> 'a';
@@ -83,7 +83,7 @@ class SwitchTests	// JDK 21+.
 		case ((byte) 0):	{ echo((byte) 0); break; }
 		case ((byte) 1):	{ echo((byte) 1); break; }
 		default:		{ echo((byte) -1); break; }
-		};
+		}
 
 		echo(switch (b) {
 			case ((byte) 0)	-> (byte) 0;
@@ -97,7 +97,7 @@ class SwitchTests	// JDK 21+.
 		case ((short) 0):	{ echo((short) 0); break; }
 		case ((short) 1):	{ echo((short) 1); break; }
 		default:		{ echo((short) -1); break; }
-		};
+		}
 
 		echo(switch (sh) {
 			case ((short) 0)	-> (short) 0;
@@ -111,7 +111,7 @@ class SwitchTests	// JDK 21+.
 		case 0b0__00___000:	{ echo(0); break; }
 		case 0x000___00__1:	{ echo(1); break; }
 		default:		{ echo(-1); break; }
-		};
+		}
 
 		echo(switch (i) {
 			case 0_0_0_0_0	-> 0;
diff --git a/runtime/syntax/testdir/input/java_unfoldment.java b/runtime/syntax/testdir/input/java_unfoldment.java
index 78dd234..ffea216 100644
--- a/runtime/syntax/testdir/input/java_unfoldment.java
+++ b/runtime/syntax/testdir/input/java_unfoldment.java
@@ -39,7 +39,7 @@ class UnfoldingTests {
 				break;
 			}
 			default: ;
-		};
+		}
 	}
 
 	{ Object bb = ((Object) new byte[]{}); }
@@ -51,6 +51,18 @@ out: {
 		} while (false);
 }
 	}
+/*\\\*/	{
+		(new java.util.function.Function() {
+			/**
+			 * {@inheritDoc} */
+			public Object apply(Object o) { return o; };
+		}).apply(
+		(new java.util.function.Function() {
+			/** {@inheritDoc}
+			 */
+			public Object apply(Object o) { return o; };
+		}));
+	}
 
 	/**
 	 * No operation.
diff --git a/runtime/syntax/testdir/input/progress_comments.p b/runtime/syntax/testdir/input/progress_comments.p
new file mode 100644
index 0000000..dd831fe
--- /dev/null
+++ b/runtime/syntax/testdir/input/progress_comments.p
@@ -0,0 +1,45 @@
+/*
+ * VIM_TEST_SETUP set filetype=progress
+ */
+
+define variable customer_name as character no-undo.
+
+/* The test setup above is an example of a multi-line comment.
+This is too; the leading * and left-hand alignment are not required. */
+for each customer no-lock
+    where customer.customer_id = 12345
+:
+    assign cust_name = customer.customer_name. /* Comments can also appear
+                                                  at the end of a line. */
+end. /* for each customer */
+
+/* Comments can be /* nested */. Here's the same query as above, but
+commented out this time:
+
+for each customer no-lock
+    where customer.customer_id = 12345
+:
+    assign cust_name = customer.customer_name. /* Comments can also appear
+                                                  at the end of a line. */
+end. /* for each customer */
+
+TODO: Note that /*/ does not end the comment, because it actually starts a
+new comment whose first character is a '/'. Now we need two end-comment
+markers to return to actual code. */ */
+
+display customer_name.
+
+// This is the single-line comment syntax.
+
+//No space is required after the slashes. Also, a /* here does not begin a
+//new block comment.
+
+for each supplier no-lock:
+    /* However, a block comment can end inside (what looks like) a
+       single-line comment, because the slashes are just text as far as the
+       // block comment is concerned. */
+    display supplier.
+
+    // TODO: Observe that todo highlighting works in line comments too.
+end.
+
diff --git a/runtime/syntax/testdir/input/selftestdir/README.txt b/runtime/syntax/testdir/input/selftestdir/README.txt
new file mode 100644
index 0000000..035701d
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/README.txt
@@ -0,0 +1,10 @@
+The test files with made-up syntax in this directory serve for additional
+linewise checks to be manually performed whenever the algorithm managing
+screen dump file generation is modified (../../runtest.vim#RunTest()).
+
+This is mainly used for debugging and testing the syntax test suite.
+
+Please test any changes as follows:
+	cd runtime/syntax/
+	VIM_SYNTAX_SELF_TESTING=1 make clean test
+
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_01 b/runtime/syntax/testdir/input/selftestdir/dots_01
new file mode 100644
index 0000000..cf78d97
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_01
@@ -0,0 +1,60 @@
+..........................................................................1
+..........................................................................2
+..........................................................................3
+..........................................................................4
+..............................winwidth(0): 75.............................5
+.............................winheight(0): 19.............................6
+.................................ruler....................................7
+..........................................................................8
+..........................................................................9
+.........................................................................10
+.........................................................................11
+.........................................................................12
+.........................................................................13
+.........................................................................14
+.........................................................................15
+.........................................................................16
+.........................................................................17
+.........................................................................18
+.........................................................................19
+.........................................................................20
+.........................................................................21
+.........................................................................22
+.........................................................................23
+.........................................................................24
+.........................................................................25
+.........................................................................26
+.........................................................................27
+.........................................................................28
+.........................................................................29
+.........................................................................30
+.........................................................................31
+.........................................................................32
+.........................................................................33
+.........................................................................34
+.........................................................................35
+.........................................................................36
+.........................................................................37
+.........................................................................38
+.........................................................................39
+.........................................................................40
+.........................................................................41
+.........................................................................42
+.........................................................................43
+.........................................................................44
+.........................................................................45
+.........................................................................46
+.........................................................................47
+.........................................................................48
+.........................................................................49
+.........................................................................50
+.........................................................................51
+.........................................................................52
+.........................................................................53
+.........................................................................54
+.........................................................................55
+.........................................................................56
+.........................................................................57
+.........................................................................58
+.........................................................................59
+.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_02 b/runtime/syntax/testdir/input/selftestdir/dots_02
new file mode 100644
index 0000000..4748fa1
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_02
@@ -0,0 +1,30 @@
+1..........................................................................2
+3..........................................................................4
+5..........................................................................6
+7..........................................................................8
+9............................winwidth(0): 75...............................10
+11..........................winheight(0): 19...............................12
+13..............................ruler......................................14
+15.........................................................................16
+17.........................................................................18
+19.........................................................................20
+21.........................................................................22
+23.........................................................................24
+25.........................................................................26
+27.........................................................................28
+29.........................................................................30
+31.........................................................................32
+33.........................................................................34
+35.........................................................................36
+37.........................................................................38
+39.........................................................................40
+41.........................................................................42
+43.........................................................................44
+45.........................................................................46
+47.........................................................................48
+49.........................................................................50
+51.........................................................................52
+53.........................................................................54
+55.........................................................................56
+57.........................................................................58
+59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_03 b/runtime/syntax/testdir/input/selftestdir/dots_03
new file mode 100644
index 0000000..a8a16e9
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_03
@@ -0,0 +1,20 @@
+1..........................................................................2..........................................................................3
+4..........................................................................5..........................................................................6
+7..........................................................................8..........................................................................9
+10.........................................................................11.........................................................................12
+13...........................winwidth(0): 75...............................14.........................................................................15
+16..........................winheight(0): 19...............................17.........................................................................18
+19..............................ruler......................................20.........................................................................21
+22.........................................................................23.........................................................................24
+25.........................................................................26.........................................................................27
+28.........................................................................29.........................................................................30
+31.........................................................................32.........................................................................33
+34.........................................................................35.........................................................................36
+37.........................................................................38.........................................................................39
+40.........................................................................41.........................................................................42
+43.........................................................................44.........................................................................45
+46.........................................................................47.........................................................................48
+49.........................................................................50.........................................................................51
+52.........................................................................53.........................................................................54
+55.........................................................................56.........................................................................57
+58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_04 b/runtime/syntax/testdir/input/selftestdir/dots_04
new file mode 100644
index 0000000..ac0a26a
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_04
@@ -0,0 +1,15 @@
+1..........................................................................2..........................................................................3..........................................................................4
+5..........................................................................6..........................................................................7..........................................................................8
+9..........................................................................10.........................................................................11.........................................................................12
+13.........................................................................14.........................................................................15.........................................................................16
+17...........................winwidth(0): 75...............................18.........................................................................19.........................................................................20
+21..........................winheight(0): 19...............................22.........................................................................23.........................................................................24
+25..............................ruler......................................26.........................................................................27.........................................................................28
+29.........................................................................30.........................................................................31.........................................................................32
+33.........................................................................34.........................................................................35.........................................................................36
+37.........................................................................38.........................................................................39.........................................................................40
+41.........................................................................42.........................................................................43.........................................................................44
+45.........................................................................46.........................................................................47.........................................................................48
+49.........................................................................50.........................................................................51.........................................................................52
+53.........................................................................54.........................................................................55.........................................................................56
+57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_05 b/runtime/syntax/testdir/input/selftestdir/dots_05
new file mode 100644
index 0000000..2dfb5be
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_05
@@ -0,0 +1,12 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5
+6..........................................................................7..........................................................................8..........................................................................9..........................................................................10
+11.........................................................................12.........................................................................13.........................................................................14.........................................................................15
+16.........................................................................17.........................................................................18.........................................................................19.........................................................................20
+21...........................winwidth(0): 75...............................22.........................................................................23.........................................................................24.........................................................................25
+26..........................winheight(0): 19...............................27.........................................................................28.........................................................................29.........................................................................30
+31..............................ruler......................................32.........................................................................33.........................................................................34.........................................................................35
+36.........................................................................37.........................................................................38.........................................................................39.........................................................................40
+41.........................................................................42.........................................................................43.........................................................................44.........................................................................45
+46.........................................................................47.........................................................................48.........................................................................49.........................................................................50
+51.........................................................................52.........................................................................53.........................................................................54.........................................................................55
+56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_06 b/runtime/syntax/testdir/input/selftestdir/dots_06
new file mode 100644
index 0000000..87eaf76
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_06
@@ -0,0 +1,10 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6
+7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12
+13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18
+19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24
+25...........................winwidth(0): 75...............................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30
+31..........................winheight(0): 19...............................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37..............................ruler......................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42
+43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54
+55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_07 b/runtime/syntax/testdir/input/selftestdir/dots_07
new file mode 100644
index 0000000..801c470
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_07
@@ -0,0 +1,9 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7
+8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14
+15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21
+22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28
+29...........................winwidth(0): 75...............................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35
+36..........................winheight(0): 19...............................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42
+43..............................ruler......................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49
+50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56
+57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_08 b/runtime/syntax/testdir/input/selftestdir/dots_08
new file mode 100644
index 0000000..2b7bdd9
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_08
@@ -0,0 +1,8 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8
+9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16
+17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24
+25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32
+33...........................winwidth(0): 75...............................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40
+41..........................winheight(0): 19...............................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49..............................ruler......................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56
+57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_09 b/runtime/syntax/testdir/input/selftestdir/dots_09
new file mode 100644
index 0000000..76b25e6
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_09
@@ -0,0 +1,7 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9
+10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18
+19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27
+28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37...........................winwidth(0): 75...............................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45
+46..........................winheight(0): 19...............................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54
+55..............................ruler......................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_10 b/runtime/syntax/testdir/input/selftestdir/dots_10
new file mode 100644
index 0000000..9d6a158
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_10
@@ -0,0 +1,6 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10
+11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20
+21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30
+31...........................winwidth(0): 75...............................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40
+41..........................wihheight(0): 19...............................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50
+51..............................ruler......................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_11 b/runtime/syntax/testdir/input/selftestdir/dots_11
new file mode 100644
index 0000000..503b734
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_11
@@ -0,0 +1,6 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11
+12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22
+23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33
+34...........................winwidth(0): 75...............................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44
+45..........................winheight(0): 19...............................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55
+56..............................ruler......................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_12 b/runtime/syntax/testdir/input/selftestdir/dots_12
new file mode 100644
index 0000000..347feb2
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_12
@@ -0,0 +1,5 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12
+13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24
+25...........................winwidth(0): 75...............................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37..........................winheight(0): 19...............................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49..............................ruler......................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_13 b/runtime/syntax/testdir/input/selftestdir/dots_13
new file mode 100644
index 0000000..b177614
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_13
@@ -0,0 +1,5 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13
+14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26
+27...........................winwidth(0): 75...............................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39
+40..........................winheight(0): 19...............................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52
+53..............................ruler......................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_14 b/runtime/syntax/testdir/input/selftestdir/dots_14
new file mode 100644
index 0000000..9a46c3e
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_14
@@ -0,0 +1,5 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14
+15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28
+29...........................winwidth(0): 75...............................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42
+43..........................winheight(0): 19...............................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56
+57..............................ruler......................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_15 b/runtime/syntax/testdir/input/selftestdir/dots_15
new file mode 100644
index 0000000..45fbef9
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_15
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15
+16...........................winwidth(0): 75...............................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30
+31..........................winheight(0): 19...............................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45
+46..............................ruler......................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_16 b/runtime/syntax/testdir/input/selftestdir/dots_16
new file mode 100644
index 0000000..1af3caa
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_16
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16
+17...........................winwidth(0): 75...............................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32
+33..........................winheight(0): 19...............................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48
+49..............................ruler......................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_17 b/runtime/syntax/testdir/input/selftestdir/dots_17
new file mode 100644
index 0000000..6dc5050
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_17
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17
+18...........................winwidth(0): 75...............................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34
+35..........................winheight(0): 19...............................36.........................................................................37.........................................................................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51
+52...............................ruler.....................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_18 b/runtime/syntax/testdir/input/selftestdir/dots_18
new file mode 100644
index 0000000..f84a827
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_18
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18
+19...........................winwidth(0): 75...............................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36
+37..........................winheight(0): 19...............................38.........................................................................39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54
+55...............................ruler.....................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70.........................................................................71.........................................................................72
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_19 b/runtime/syntax/testdir/input/selftestdir/dots_19
new file mode 100644
index 0000000..9f0ad00
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_19
@@ -0,0 +1,4 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5..........................................................................6..........................................................................7..........................................................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19
+20...........................winwidth(0): 75...............................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38
+39..........................winheight(0): 19...............................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57
+58...............................ruler.....................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70.........................................................................71.........................................................................72.........................................................................73.........................................................................74.........................................................................75.........................................................................76
diff --git a/runtime/syntax/testdir/input/selftestdir/dots_20 b/runtime/syntax/testdir/input/selftestdir/dots_20
new file mode 100644
index 0000000..ca3a93d
--- /dev/null
+++ b/runtime/syntax/testdir/input/selftestdir/dots_20
@@ -0,0 +1,2 @@
+1..........................................................................2..........................................................................3..........................................................................4..........................................................................5.............................winwidth(0): 75..............................6............................winheight(0): 19..............................7................................ruler.....................................8..........................................................................9..........................................................................10.........................................................................11.........................................................................12.........................................................................13.........................................................................14.........................................................................15.........................................................................16.........................................................................17.........................................................................18.........................................................................19.........................................................................20.........................................................................21.........................................................................22.........................................................................23.........................................................................24.........................................................................25.........................................................................26.........................................................................27.........................................................................28.........................................................................29.........................................................................30.........................................................................31.........................................................................32.........................................................................33.........................................................................34.........................................................................35.........................................................................36.........................................................................37.........................................................................38
+39.........................................................................40.........................................................................41.........................................................................42.........................................................................43.........................................................................44.........................................................................45.........................................................................46.........................................................................47.........................................................................48.........................................................................49.........................................................................50.........................................................................51.........................................................................52.........................................................................53.........................................................................54.........................................................................55.........................................................................56.........................................................................57.........................................................................58.........................................................................59.........................................................................60.........................................................................61.........................................................................62.........................................................................63.........................................................................64.........................................................................65.........................................................................66.........................................................................67.........................................................................68.........................................................................69.........................................................................70.........................................................................71.........................................................................72.........................................................................73.........................................................................74.........................................................................75.........................................................................76
diff --git a/runtime/syntax/testdir/input/vim9_ex_commands.vim b/runtime/syntax/testdir/input/vim9_ex_commands.vim
new file mode 100644
index 0000000..92ab9dc
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_commands.vim
@@ -0,0 +1,1225 @@
+vim9script
+
+# Vim9 Ex commands
+
+# START NOT MATCHED
+:@
+:@@
+:Next
+:X
+# END NOT MATCHED
+
+:help
+ :help
+: help
+ : help
+
+:2match
+:3match
+:abbreviate
+:abclear
+:aboveleft
+:abstract
+:all
+:amenu
+:anoremenu
+:argadd
+:argdedupe
+:argdelete
+:argdo
+:argedit
+:argglobal
+:arglocal
+:args
+:argument
+:ascii
+:augroup Foo
+:augroup END
+:aunmenu
+:autocmd
+:badd
+:ball
+:balt
+:bdelete
+:behave mswin
+:behave xterm
+:belowright
+:bfirst
+:blast
+:bmodified
+:bnext
+:bNext
+:botright
+:bprevious
+:break
+:breakadd
+:breakdel
+:breaklist
+:brewind
+:browse
+:bufdo
+:buffer
+:buffers
+:bunload
+:bwipeout
+:cabbrev
+:cabclear
+:cabove
+:caddbuffer
+:caddexpr
+:caddfile
+:cafter
+:call
+:catch
+:cbefore
+:cbelow
+:cbottom
+:cbuffer
+:cc
+:cclose
+:cd
+:cdo
+:center
+:cexpr
+:cfdo
+:cfile
+:cfirst
+:cgetbuffer
+:cgetexpr
+:cgetfile
+:changes
+:chdir
+:checkpath
+:checktime
+:chistory
+:class
+:class
+:clast
+:clearjumps
+:clist
+:close
+:cmap
+:cmapclear
+:cmenu
+:cnewer
+:cnext
+:cNext
+:cnfile
+:cNfile
+:cnoreabbrev
+:cnoremap
+:cnoremenu
+:colder
+:colorscheme
+:comclear
+:command
+:compiler
+:confirm
+:const
+:continue
+:copen
+:copy
+:cpfile
+:cprevious
+:cquit
+:crewind
+:cscope
+:cstag
+:cunabbrev
+:cunmap
+:cunmenu
+:cwindow
+:debug
+:debuggreedy
+:def
+:defcompile
+:defcompile
+:defer
+:delcommand
+:delete
+:delfunction
+:delmarks
+:diffget
+:diffoff
+:diffpatch
+:diffput
+:diffsplit
+:diffthis
+:diffupdate
+:digraphs
+:disassemble
+:disassemble
+:display
+:djump
+:dl
+:dlist
+:doautoall
+:doautocmd
+:dp
+:drop
+:dsearch
+:dsplit
+:earlier
+:echo
+:echoconsole
+:echoerr
+:echohl
+:echomsg
+:echon
+:echowindow
+:edit
+:else
+:elseif
+:emenu
+:endclass
+:endclass
+:enddef
+:endenum
+:endfor
+:endfunction
+:endif
+:endinterface
+:endtry
+:endwhile
+:enew
+:enum
+:eval
+:ex
+:execute
+:exit
+:export
+:export
+:exusage
+:file
+:files
+:filetype
+:filter
+:final
+:finally
+:find
+:finish
+:first
+:fixdel
+:fold
+:foldclose
+:folddoclosed
+:folddoopen
+:foldopen
+:for
+:function
+:global/.../
+:goto
+:grep
+:grepadd
+:gui
+:gvim
+:hardcopy
+:help
+:helpclose
+:helpfind
+:helpgrep
+:helptags
+:hide
+:highlight
+:history
+:horizontal
+:iabbrev
+:iabclear
+:if
+:ijump
+:ilist
+:imap
+:imapclear
+:imenu
+:import
+:inoreabbrev
+:inoremap
+:inoremenu
+:interface
+:intro
+:isearch
+:isplit
+:iunabbrev
+:iunmap
+:iunmenu
+:join
+:jumps
+:k
+:keepalt
+:keepjumps
+:keepmarks
+:keeppatterns
+:labove
+:laddbuffer
+:laddexpr
+:laddfile
+:lafter
+:language
+:last
+:later
+:lbefore
+:lbelow
+:lbottom
+:lbuffer
+:lcd
+:lchdir
+:lclose
+:lcscope
+:ldo
+:left
+:leftabove
+:legacy
+:lexpr
+:lfdo
+:lfile
+:lfirst
+:lgetbuffer
+:lgetexpr
+:lgetfile
+:lgrep
+:lgrepadd
+:lhelpgrep
+:lhistory
+:list
+:ll
+:llast
+:llist
+:lmake
+:lmap
+:lmapclear
+:lnewer
+:lnext
+:lNext
+:lnfile
+:lNfile
+:lnoremap
+# :loadkeymap # disabled - runs until EOF
+:loadview
+:lockmarks
+:lockvar
+:lolder
+:lopen
+:lpfile
+:lprevious
+:lrewind
+:ls
+:ltag
+:lua
+:luado
+:luafile
+:lunmap
+:lvimgrep
+:lvimgrepadd
+:lwindow
+:make
+:mapclear
+:map
+:mark
+:marks
+:match
+:menu
+:menutranslate
+:messages
+:mkexrc
+:mksession
+:mkspell
+:mkview
+:mkvimrc
+:move
+:mzfile
+:mzscheme
+:nbclose
+:nbkey
+:nbstart
+:new
+:next
+:nmap
+:nmapclear
+:nmenu
+:nnoremap
+:nnoremenu
+:noautocmd
+:nohlsearch
+:noreabbrev
+:noremap
+:noremenu
+:normal
+:noswapfile
+:number
+:nunmap
+:nunmenu
+:oldfiles
+:omap
+:omapclear
+:omenu
+:only
+:onoremap
+:onoremenu
+:options
+:ounmap
+:ounmenu
+:ownsyntax
+:packadd
+:packloadall
+:pclose
+:pedit
+:perl
+:perldo
+:pop
+:popup
+:ppop
+:preserve
+:previous
+:print
+:profdel
+:profile
+:promptfind
+:promptrepl
+:psearch
+:ptag
+:ptfirst
+:ptjump
+:ptlast
+:ptnext
+:ptNext
+:ptprevious
+:ptrewind
+:ptselect
+:public
+:public
+:put
+:pwd
+:py3
+:py3do
+:py3file
+:pydo
+:pyfile
+:python
+:python3
+:pythonx
+:pyx
+:pyxdo
+:pyxfile
+:qall
+:quit
+:quitall
+:read
+:recover
+:redir
+:redo
+:redraw
+:redrawstatus
+:redrawtabline
+:registers
+:resize
+:retab
+:return
+:rewind
+:right
+:rightbelow
+:ruby
+:rubydo
+:rubyfile
+:rundo
+:runtime
+:rviminfo
+:sall
+:sandbox
+:sargument
+:saveas
+:sball
+:sbfirst
+:sblast
+:sbmodified
+:sbnext
+:sbNext
+:sbprevious
+:sbrewind
+:sbuffer
+:scriptencoding
+:scriptnames
+:scriptversion
+:scscope
+:set
+:setfiletype
+:setglobal
+:setlocal
+:sfind
+:sfirst
+:shell
+:sign
+:silent
+:simalt
+:slast
+:sleep
+:sleep!
+:smagic
+:smap
+:smapclear
+:smenu
+:smile
+:snext
+:sNext
+:snomagic
+:snoremap
+:snoremenu
+:sort
+:source
+:spelldump
+:spellgood
+:spellinfo
+:spellrare
+:spellrepall
+:spellundo
+:spellwrong
+:split
+:sprevious
+:srewind
+:stag
+:startgreplace
+:startinsert
+:startreplace
+:static
+:static
+:stjump
+:stop
+:stopinsert
+:stselect
+:substitute
+:sunhide
+:sunmap
+:sunmenu
+:suspend
+:sview
+:swapname
+:syncbind
+:syntax
+:syntime
+:tab
+:tabclose
+:tabdo
+:tabedit
+:tabfind
+:tabfirst
+:tablast
+:tabmove
+:tabnew
+:tabnext
+:tabNext
+:tabonly
+:tabprevious
+:tabrewind
+:tabs
+:tag
+:tags
+:tcd
+:tchdir
+:tcl
+:tcldo
+:tclfile
+:tearoff
+:terminal
+:tfirst
+:throw
+:tjump
+:tlast
+:tlmenu
+:tlnoremenu
+:tlunmenu
+:tmap
+:tmapclear
+:tmenu
+:tnext
+:tNext
+:tnoremap
+:topleft
+:tprevious
+:trewind
+:try
+:tselect
+:tunmap
+:tunmenu
+:type
+:unabbreviate
+:unabbreviate
+:undo
+:undojoin
+:undolist
+:unhide
+:unlockvar
+:unmap
+:unmenu
+:unsilent
+:update
+:var
+:verbose
+:version
+:vertical
+:vglobal/.../
+:view
+:vim9cmd
+# :vim9script
+:vimgrep
+:vimgrepadd
+:visual
+:viusage
+:vmap
+:vmapclear
+:vmenu
+:vnew
+:vnoremap
+:vnoremenu
+:vsplit
+:vunmap
+:vunmenu
+:wall
+:while
+:wincmd
+:windo
+:winpos
+:winsize
+:wnext
+:wNext
+:wprevious
+:wq
+:wqall
+:write
+:wundo
+:wviminfo
+:xall
+:xmap
+:xmapclear
+:xmenu
+:xnoremap
+:xnoremenu
+:xrestore
+:xunmap
+:xunmenu
+:yank
+:z
+
+Foo()|help
+Foo() | help
+Foo() |help
+Foo()| help
+
+Foo() | 2match
+Foo() | 3match
+Foo() | abbreviate
+Foo() | abclear
+Foo() | aboveleft
+Foo() | abstract
+Foo() | all
+Foo() | amenu
+Foo() | anoremenu
+Foo() | argadd
+Foo() | argdedupe
+Foo() | argdelete
+Foo() | argdo
+Foo() | argedit
+Foo() | argglobal
+Foo() | arglocal
+Foo() | args
+Foo() | argument
+Foo() | ascii
+Foo() | augroup Foo | augroup END
+Foo() | aunmenu
+Foo() | autocmd
+Foo() | badd
+Foo() | ball
+Foo() | balt
+Foo() | bdelete
+Foo() | behave mswin
+Foo() | behave xterm
+Foo() | belowright
+Foo() | bfirst
+Foo() | blast
+Foo() | bmodified
+Foo() | bnext
+Foo() | bNext
+Foo() | botright
+Foo() | bprevious
+Foo() | break
+Foo() | breakadd
+Foo() | breakdel
+Foo() | breaklist
+Foo() | brewind
+Foo() | browse
+Foo() | bufdo
+Foo() | buffer
+Foo() | buffers
+Foo() | bunload
+Foo() | bwipeout
+Foo() | cabbrev
+Foo() | cabclear
+Foo() | cabove
+Foo() | caddbuffer
+Foo() | caddexpr
+Foo() | caddfile
+Foo() | cafter
+Foo() | call
+Foo() | catch
+Foo() | cbefore
+Foo() | cbelow
+Foo() | cbottom
+Foo() | cbuffer
+Foo() | cc
+Foo() | cclose
+Foo() | cd
+Foo() | cdo
+Foo() | center
+Foo() | cexpr
+Foo() | cfdo
+Foo() | cfile
+Foo() | cfirst
+Foo() | cgetbuffer
+Foo() | cgetexpr
+Foo() | cgetfile
+Foo() | changes
+Foo() | chdir
+Foo() | checkpath
+Foo() | checktime
+Foo() | chistory
+Foo() | class
+Foo() | class
+Foo() | clast
+Foo() | clearjumps
+Foo() | clist
+Foo() | close
+Foo() | cmap
+Foo() | cmapclear
+Foo() | cmenu
+Foo() | cnewer
+Foo() | cnext
+Foo() | cNext
+Foo() | cnfile
+Foo() | cNfile
+Foo() | cnoreabbrev
+Foo() | cnoremap
+Foo() | cnoremenu
+Foo() | colder
+Foo() | colorscheme
+Foo() | comclear
+Foo() | command
+Foo() | compiler
+Foo() | confirm
+Foo() | const
+Foo() | continue
+Foo() | copen
+Foo() | copy
+Foo() | cpfile
+Foo() | cprevious
+Foo() | cquit
+Foo() | crewind
+Foo() | cscope
+Foo() | cstag
+Foo() | cunabbrev
+Foo() | cunmap
+Foo() | cunmenu
+Foo() | cwindow
+Foo() | debug
+Foo() | debuggreedy
+Foo() | def
+Foo() | defcompile
+Foo() | defcompile
+Foo() | defer
+Foo() | delcommand
+Foo() | delete
+Foo() | delfunction
+Foo() | delmarks
+Foo() | diffget
+Foo() | diffoff
+Foo() | diffpatch
+Foo() | diffput
+Foo() | diffsplit
+Foo() | diffthis
+Foo() | diffupdate
+Foo() | digraphs
+Foo() | disassemble
+Foo() | disassemble
+Foo() | display
+Foo() | djump
+Foo() | dl
+Foo() | dlist
+Foo() | doautoall
+Foo() | doautocmd
+Foo() | dp
+Foo() | drop
+Foo() | dsearch
+Foo() | dsplit
+Foo() | earlier
+Foo() | echo
+Foo() | echoconsole
+Foo() | echoerr
+Foo() | echohl
+Foo() | echomsg
+Foo() | echon
+Foo() | echowindow
+Foo() | edit
+Foo() | else
+Foo() | elseif
+Foo() | emenu
+Foo() | endclass
+Foo() | endclass
+Foo() | enddef
+Foo() | endenum
+Foo() | endfor
+Foo() | endfunction
+Foo() | endif
+Foo() | endinterface
+Foo() | endtry
+Foo() | endwhile
+Foo() | enew
+Foo() | enum
+Foo() | eval
+Foo() | ex
+Foo() | execute
+Foo() | exit
+Foo() | export
+Foo() | export
+Foo() | exusage
+Foo() | file
+Foo() | files
+Foo() | filetype
+Foo() | filter
+Foo() | final
+Foo() | finally
+Foo() | find
+Foo() | finish
+Foo() | first
+Foo() | fixdel
+Foo() | fold
+Foo() | foldclose
+Foo() | folddoclosed
+Foo() | folddoopen
+Foo() | foldopen
+Foo() | for
+Foo() | function
+Foo() | global/.../
+Foo() | goto
+Foo() | grep
+Foo() | grepadd
+Foo() | gui
+Foo() | gvim
+Foo() | hardcopy
+Foo() | help
+Foo() | helpclose
+Foo() | helpfind
+Foo() | helpgrep
+Foo() | helptags
+Foo() | hide
+Foo() | highlight
+Foo() | history
+Foo() | horizontal
+Foo() | iabbrev
+Foo() | iabclear
+Foo() | if
+Foo() | ijump
+Foo() | ilist
+Foo() | imap
+Foo() | imapclear
+Foo() | imenu
+Foo() | import
+Foo() | inoreabbrev
+Foo() | inoremap
+Foo() | inoremenu
+Foo() | interface
+Foo() | intro
+Foo() | isearch
+Foo() | isplit
+Foo() | iunabbrev
+Foo() | iunmap
+Foo() | iunmenu
+Foo() | join
+Foo() | jumps
+Foo() | keepalt
+Foo() | keepjumps
+Foo() | keepmarks
+Foo() | keeppatterns
+Foo() | labove
+Foo() | laddbuffer
+Foo() | laddexpr
+Foo() | laddfile
+Foo() | lafter
+Foo() | language
+Foo() | last
+Foo() | later
+Foo() | lbefore
+Foo() | lbelow
+Foo() | lbottom
+Foo() | lbuffer
+Foo() | lcd
+Foo() | lchdir
+Foo() | lclose
+Foo() | lcscope
+Foo() | ldo
+Foo() | left
+Foo() | leftabove
+Foo() | legacy
+Foo() | lexpr
+Foo() | lfdo
+Foo() | lfile
+Foo() | lfirst
+Foo() | lgetbuffer
+Foo() | lgetexpr
+Foo() | lgetfile
+Foo() | lgrep
+Foo() | lgrepadd
+Foo() | lhelpgrep
+Foo() | lhistory
+Foo() | list
+Foo() | ll
+Foo() | llast
+Foo() | llist
+Foo() | lmake
+Foo() | lmap
+Foo() | lmapclear
+Foo() | lnewer
+Foo() | lnext
+Foo() | lNext
+Foo() | lnfile
+Foo() | lNfile
+Foo() | lnoremap
+# Foo() | loadkeymap # disabled - runs until EOF
+Foo() | loadview
+Foo() | lockmarks
+Foo() | lockvar
+Foo() | lolder
+Foo() | lopen
+Foo() | lpfile
+Foo() | lprevious
+Foo() | lrewind
+Foo() | ls
+Foo() | ltag
+Foo() | lua
+Foo() | luado
+Foo() | luafile
+Foo() | lunmap
+Foo() | lvimgrep
+Foo() | lvimgrepadd
+Foo() | lwindow
+Foo() | make
+Foo() | mark
+Foo() | move
+Foo() | map
+Foo() | mapclear
+Foo() | marks
+Foo() | match
+Foo() | menu
+Foo() | menutranslate
+Foo() | messages
+Foo() | mkexrc
+Foo() | mksession
+Foo() | mkspell
+Foo() | mkview
+Foo() | mkvimrc
+Foo() | mzfile
+Foo() | mzscheme
+Foo() | nbclose
+Foo() | nbkey
+Foo() | nbstart
+Foo() | new
+Foo() | next
+Foo() | nmap
+Foo() | nmapclear
+Foo() | nmenu
+Foo() | nnoremap
+Foo() | nnoremenu
+Foo() | noautocmd
+Foo() | nohlsearch
+Foo() | noreabbrev
+Foo() | noremap
+Foo() | noremenu
+Foo() | normal
+Foo() | noswapfile
+Foo() | number
+Foo() | nunmap
+Foo() | nunmenu
+Foo() | oldfiles
+Foo() | omap
+Foo() | omapclear
+Foo() | omenu
+Foo() | only
+Foo() | onoremap
+Foo() | onoremenu
+Foo() | options
+Foo() | ounmap
+Foo() | ounmenu
+Foo() | ownsyntax
+Foo() | packadd
+Foo() | packloadall
+Foo() | pclose
+Foo() | pedit
+Foo() | perl
+Foo() | perldo
+Foo() | pop
+Foo() | popup
+Foo() | ppop
+Foo() | preserve
+Foo() | previous
+Foo() | print
+Foo() | profdel
+Foo() | profile
+Foo() | promptfind
+Foo() | promptrepl
+Foo() | psearch
+Foo() | ptag
+Foo() | ptfirst
+Foo() | ptjump
+Foo() | ptlast
+Foo() | ptnext
+Foo() | ptNext
+Foo() | ptprevious
+Foo() | ptrewind
+Foo() | ptselect
+Foo() | public
+Foo() | public
+Foo() | put
+Foo() | pwd
+Foo() | py3
+Foo() | py3do
+Foo() | py3file
+Foo() | pydo
+Foo() | pyfile
+Foo() | python
+Foo() | python3
+Foo() | pythonx
+Foo() | pyx
+Foo() | pyxdo
+Foo() | pyxfile
+Foo() | qall
+Foo() | quit
+Foo() | quitall
+Foo() | read
+Foo() | recover
+Foo() | redir
+Foo() | redo
+Foo() | redraw
+Foo() | redrawstatus
+Foo() | redrawtabline
+Foo() | registers
+Foo() | resize
+Foo() | retab
+Foo() | return
+Foo() | rewind
+Foo() | right
+Foo() | rightbelow
+Foo() | ruby
+Foo() | rubydo
+Foo() | rubyfile
+Foo() | rundo
+Foo() | runtime
+Foo() | rviminfo
+Foo() | sall
+Foo() | sandbox
+Foo() | sargument
+Foo() | saveas
+Foo() | sball
+Foo() | sbfirst
+Foo() | sblast
+Foo() | sbmodified
+Foo() | sbnext
+Foo() | sbNext
+Foo() | sbprevious
+Foo() | sbrewind
+Foo() | sbuffer
+Foo() | scriptencoding
+Foo() | scriptnames
+Foo() | scriptversion
+Foo() | scscope
+Foo() | set
+Foo() | setfiletype
+Foo() | setglobal
+Foo() | setlocal
+Foo() | sfind
+Foo() | sfirst
+Foo() | shell
+Foo() | sign
+Foo() | silent
+Foo() | simalt
+Foo() | slast
+Foo() | sleep
+Foo() | sleep!
+Foo() | smagic
+Foo() | smap
+Foo() | smapclear
+Foo() | smenu
+Foo() | smile
+Foo() | snext
+Foo() | sNext
+Foo() | snomagic
+Foo() | snoremap
+Foo() | snoremenu
+Foo() | sort
+Foo() | source
+Foo() | spelldump
+Foo() | spellgood
+Foo() | spellinfo
+Foo() | spellrare
+Foo() | spellrepall
+Foo() | spellundo
+Foo() | spellwrong
+Foo() | split
+Foo() | sprevious
+Foo() | srewind
+Foo() | stag
+Foo() | startgreplace
+Foo() | startinsert
+Foo() | startreplace
+Foo() | static
+Foo() | static
+Foo() | stjump
+Foo() | stop
+Foo() | stopinsert
+Foo() | stselect
+Foo() | substitute
+Foo() | sunhide
+Foo() | sunmap
+Foo() | sunmenu
+Foo() | suspend
+Foo() | sview
+Foo() | swapname
+Foo() | syncbind
+Foo() | syntax
+Foo() | syntime
+Foo() | tab
+Foo() | tabclose
+Foo() | tabdo
+Foo() | tabedit
+Foo() | tabfind
+Foo() | tabfirst
+Foo() | tablast
+Foo() | tabmove
+Foo() | tabnew
+Foo() | tabnext
+Foo() | tabNext
+Foo() | tabonly
+Foo() | tabprevious
+Foo() | tabrewind
+Foo() | tabs
+Foo() | tag
+Foo() | tags
+Foo() | tcd
+Foo() | tchdir
+Foo() | tcl
+Foo() | tcldo
+Foo() | tclfile
+Foo() | tearoff
+Foo() | terminal
+Foo() | tfirst
+Foo() | throw
+Foo() | tjump
+Foo() | tlast
+Foo() | tlmenu
+Foo() | tlnoremenu
+Foo() | tlunmenu
+Foo() | tmap
+Foo() | tmapclear
+Foo() | tmenu
+Foo() | tnext
+Foo() | tNext
+Foo() | tnoremap
+Foo() | topleft
+Foo() | tprevious
+Foo() | trewind
+Foo() | try
+Foo() | tselect
+Foo() | tunmap
+Foo() | tunmenu
+Foo() | type
+Foo() | unabbreviate
+Foo() | unabbreviate
+Foo() | undo
+Foo() | undojoin
+Foo() | undolist
+Foo() | unhide
+Foo() | unlockvar
+Foo() | unmap
+Foo() | unmenu
+Foo() | unsilent
+Foo() | update
+Foo() | var
+Foo() | verbose
+Foo() | version
+Foo() | vertical
+Foo() | vglobal/.../
+Foo() | vim9cmd
+# call Foo() | vim9script
+Foo() | vimgrep
+Foo() | vimgrepadd
+Foo() | visual
+Foo() | viusage
+Foo() | view
+Foo() | vmap
+Foo() | vmapclear
+Foo() | vmenu
+Foo() | vnew
+Foo() | vnoremap
+Foo() | vnoremenu
+Foo() | vsplit
+Foo() | vunmap
+Foo() | vunmenu
+Foo() | windo
+Foo() | write
+Foo() | wNext
+Foo() | wall
+Foo() | while
+Foo() | winsize
+Foo() | wincmd
+Foo() | winpos
+Foo() | wnext
+Foo() | wprevious
+Foo() | wq
+Foo() | wqall
+Foo() | wundo
+Foo() | wviminfo
+Foo() | xall
+Foo() | xmapclear
+Foo() | xmap
+Foo() | xmenu
+Foo() | xrestore
+Foo() | xnoremap
+Foo() | xnoremenu
+Foo() | xunmap
+Foo() | xunmenu
+Foo() | yank
+Foo() | z
+
+
+# Legacy-script only
+
+:Print
+:append
+    text
+.
+:change
+    text
+.
+:insert
+    text
+.
+:k
+:let
+:mode
+:open
+:t
+:unlet
+:xit
+
+Foo() | append
+    text
+.
+Foo() | change
+    text
+.
+Foo() | insert
+    text
+.
+Foo() | k
+Foo() | let
+Foo() | mode
+Foo() | open
+Foo() | t
+Foo() | unlet
+Foo() | xit
+
diff --git a/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim
new file mode 100644
index 0000000..b4b9f6d
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comment_errors.vim
@@ -0,0 +1,44 @@
+vim9script
+
+# Vim9 :function and :def tail comment errors
+# VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun Test1() abort		# fun
+  return 1
+endfun				# endfun
+
+def Test2(): number		" def
+  return 2
+enddef				" enddef
+
+fun Test3() abort		# fun
+  fun s:DoTest3() abort		# fun
+    return 3
+  endfun			# endfun
+  return s:DoTest3()
+endfun				# endfun
+
+def Test4(): number		" def
+  def DoTest4(): number		" def
+    return 4
+  enddef			" enddef
+  return DoTest4()
+enddef				" enddef
+
+def Test5(): number		" def
+  fun DoTest5() abort		# fun
+    return 5
+  endfun			# endfun
+  return DoTest5()
+enddef				" enddef
+
+fun Test6() abort		# fun
+  def s:DoTest6(): number	" def
+    return 6
+  enddef			" enddef
+  return s:DoTest6()
+endfun				# endfun
+
+for d in range(1, 6)
+  exec $'echo Test{d}()'
+endfor
diff --git a/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim
new file mode 100644
index 0000000..12f7942
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_function_def_tail_comments.vim
@@ -0,0 +1,44 @@
+vim9script
+
+# Vim9 :function and :def tail comments
+# VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun Test1() abort		" fun
+  return 1
+endfun				" endfun
+
+def Test2(): number		# def
+  return 2
+enddef				# enddef
+
+fun Test3() abort		" fun
+  fun s:DoTest3() abort		" fun
+    return 3
+  endfun			" endfun
+  return s:DoTest3()
+endfun				" endfun
+
+def Test4(): number		# def
+  def DoTest4(): number		# def
+    return 4
+  enddef			# enddef
+  return DoTest4()
+enddef				# enddef
+
+def Test5(): number		# def
+  fun DoTest5() abort		" fun
+    return 5
+  endfun			" endfun
+  return DoTest5()
+enddef				# enddef
+
+fun Test6() abort		" fun
+  def s:DoTest6(): number	# def
+    return 6
+  enddef			# enddef
+  return s:DoTest6()
+endfun				" endfun
+
+for d in range(1, 6)
+  exec $'echo Test{d}()'
+endfor
diff --git a/runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim b/runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim
new file mode 100644
index 0000000..126c6dd
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_loadkeymap.vim
@@ -0,0 +1,26 @@
+vim9script
+
+# Vim :loadkeymap command
+
+scriptencoding utf-8
+
+b:keymap_name = "syntax-test"
+
+loadkeymap
+
+# Line comment
+
+  # Another line comment
+
+a A    Basic mapping
+'a á   More than one char in first column
+
+# Special notation
+      B               Special notation allowed in LHS - decimal
+c                   Special notation allowed in RHS - octal
+     Special notation allowed in LHS and RHS - hexadecimal
+
+# Vim-script comment characters
+\#                Line should not match as a Vim9-script comment
+" “                            Line should not match as a legacy-script comment
+: #                            Line should not match as a Vim9-script comment
diff --git a/runtime/syntax/testdir/input/vim9_keymap.vim b/runtime/syntax/testdir/input/vim9_keymap.vim
deleted file mode 100644
index a69b723..0000000
--- a/runtime/syntax/testdir/input/vim9_keymap.vim
+++ /dev/null
@@ -1,26 +0,0 @@
-vim9script
-
-# Vim Keymap file for syntax testing
-
-scriptencoding utf-8
-
-let b:keymap_name = "syntax-test"
-
-loadkeymap
-
-# Line comment
-
-  # Another line comment
-
-a A    Basic mapping
-'a á   More than one char in first column
-
-# Special notation
-      B               Special notation allowed in LHS - decimal
-c                   Special notation allowed in RHS - octal
-     Special notation allowed in LHS and RHS - hexadecimal
-
-# Vim-script comment characters
-\#                Line should not match as a Vim9-script comment
-" “                            Line should not match as a legacy-script comment
-: #                            Line should not match as a Vim9-script comment
diff --git a/runtime/syntax/testdir/input/vim_ex_call.vim b/runtime/syntax/testdir/input/vim_ex_call.vim
new file mode 100644
index 0000000..ae6bdc9
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_call.vim
@@ -0,0 +1,51 @@
+" Vim :call command
+
+
+" functions for which there are same-named Ex commands
+
+call browse(save, title, initdir, default)
+call call(func, arglist, dict)
+call chdir(dir)
+call confirm(msg, choices, default, type)
+call copy(expr)
+call delete(fname, flags)
+call eval(string)
+call execute(command)
+call filter(expr1, expr2)
+call function(name, arglist, dict)
+call insert(object, item, idx)
+call join(list, sep)
+call map(expr1, expr2)
+call match(expr, pat, start, count)
+call mode(expr)
+call sort(list, how, dict)
+call split(string, pattern, keepempty)
+call substitute(str, pat, sub, flags)
+call swapname(buf)
+
+call browse (save, title, initdir, default)
+call call (func, arglist, dict)
+call chdir (dir)
+call confirm (msg, choices, default, type)
+call copy (expr)
+call delete (fname, flags)
+call eval (string)
+call execute (command)
+call filter (expr1, expr2)
+call function (name, arglist, dict)
+call insert (object, item, idx)
+call join (list, sep)
+call map (expr1, expr2)
+call match (expr, pat, start, count)
+call mode (expr)
+call sort (list, how, dict)
+call split (string, pattern, keepempty)
+call substitute (str, pat, sub, flags)
+call swapname (buf)
+
+call Foo()
+call Foo(arg1)
+call Foo(arg1, arg2)
+
+let res = call(func, arglist, dict)
+let res = call (func, arglist, dict)
diff --git a/runtime/syntax/testdir/input/vim_ex_commands.vim b/runtime/syntax/testdir/input/vim_ex_commands.vim
index aaa351b..3d03ac3 100644
--- a/runtime/syntax/testdir/input/vim_ex_commands.vim
+++ b/runtime/syntax/testdir/input/vim_ex_commands.vim
@@ -98,7 +98,6 @@
 :checkpath
 :checktime
 :chistory
-:class
 :clast
 :clearjumps
 :clist
@@ -172,7 +171,6 @@
 :else
 :elseif
 :emenu
-:endclass
 :enddef
 :endif
 :endfor
@@ -184,7 +182,6 @@
 :ex
 :execute
 :exit
-:export
 :exusage
 :file
 :files
@@ -292,7 +289,7 @@
 :lnewer
 :lnfile
 :lnoremap
-:loadkeymap
+" :loadkeymap " disabled - runs until EOF
 :loadview
 :lockmarks
 :lockvar
@@ -313,8 +310,7 @@
 :move
 :mark
 :make
-" requires trailing whitespace to distinguish from map()
-:map 
+:map
 :mapclear
 :marks
 :match
@@ -553,12 +549,10 @@
 :unsilent
 :update
 :vglobal/.../
-:var
 :version
 :verbose
 :vertical
 :vim9cmd
-" :vim9script
 :vimgrep
 :vimgrepadd
 :visual
@@ -691,7 +685,6 @@ call Foo() | chdir
 call Foo() | checkpath
 call Foo() | checktime
 call Foo() | chistory
-call Foo() | class
 call Foo() | clast
 call Foo() | clearjumps
 call Foo() | clist
@@ -765,7 +758,6 @@ call Foo() | echowindow
 call Foo() | else
 call Foo() | elseif
 call Foo() | emenu
-call Foo() | endclass
 call Foo() | enddef
 call Foo() | endif
 call Foo() | endfor
@@ -777,7 +769,6 @@ call Foo() | eval
 call Foo() | ex
 call Foo() | execute
 call Foo() | exit
-call Foo() | export
 call Foo() | exusage
 call Foo() | file
 call Foo() | files
@@ -886,7 +877,7 @@ call Foo() | lnext
 call Foo() | lnewer
 call Foo() | lnfile
 call Foo() | lnoremap
-call Foo() | loadkeymap
+" call Foo() | loadkeymap " disabled - runs until EOF
 call Foo() | loadview
 call Foo() | lockmarks
 call Foo() | lockvar
@@ -907,8 +898,7 @@ call Foo() | lwindow
 call Foo() | move
 call Foo() | mark
 call Foo() | make
-" requires trailing whitespace to distinguish from map()
-call Foo() | map 
+call Foo() | map
 call Foo() | mapclear
 call Foo() | marks
 call Foo() | match
@@ -1147,12 +1137,10 @@ call Foo() | unmenu
 call Foo() | unsilent
 call Foo() | update
 call Foo() | vglobal/.../
-call Foo() | var
 call Foo() | version
 call Foo() | verbose
 call Foo() | vertical
 call Foo() | vim9cmd
-" call Foo() | vim9script
 call Foo() | vimgrep
 call Foo() | vimgrepadd
 call Foo() | visual
@@ -1193,3 +1181,39 @@ call Foo() | xunmap
 call Foo() | xunmenu
 call Foo() | yank
 call Foo() | z
+
+
+" Vim9-script only
+
+:abstract
+:class
+:defcompile
+:disassemble
+:endclass
+:endinterface
+:endenum
+:enum
+:export
+:final
+:interface
+:public
+:static
+:type
+:var
+
+Foo() | abstract
+Foo() | class
+Foo() | defcompile
+Foo() | disassemble
+Foo() | endclass
+Foo() | endenum
+Foo() | endinterface
+Foo() | enum
+Foo() | export
+Foo() | final
+Foo() | interface
+Foo() | public
+Foo() | static
+Foo() | type
+Foo() | var
+
diff --git a/runtime/syntax/testdir/input/vim_ex_def.vim b/runtime/syntax/testdir/input/vim_ex_def.vim
index 2685ba5..a1d5381 100644
--- a/runtime/syntax/testdir/input/vim_ex_def.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def.vim
@@ -85,7 +85,7 @@ def Foo()
 enddef | echo "Foo"
 
 def Foo()
-enddef " comment
+enddef # comment
 
 
 " parameters
diff --git a/runtime/syntax/testdir/input/vim_ex_def_fold.vim b/runtime/syntax/testdir/input/vim_ex_def_fold.vim
index 3326075..60b1151 100644
--- a/runtime/syntax/testdir/input/vim_ex_def_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_def_fold.vim
@@ -86,7 +86,7 @@ def Foo()
 enddef | echo "Foo"
 
 def Foo()
-enddef " comment
+enddef # comment
 
 
 " parameters
@@ -120,7 +120,7 @@ def Foo()
 enddef
 
 def Foo()
-  let x =<< END
+  var x =<< trim END
     endfunction
   END
 enddef
diff --git a/runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim
new file mode 100644
index 0000000..e5d7464
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comment_errors.vim
@@ -0,0 +1,43 @@
+" Vim :function and :def tail comment errors
+" VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun s:Test1() abort		# fun
+  return 1
+endfun				# endfun
+
+def s:Test2(): number		" def
+  return 2
+enddef				" enddef
+
+fun s:Test3() abort		# fun
+  fun s:DoTest3() abort		# fun
+    return 3
+  endfun			# endfun
+  return s:DoTest3() 
+endfun				# endfun
+
+def s:Test4(): number		" def
+  def DoTest4(): number		" def
+    return 4
+  enddef			" enddef
+  return DoTest4()
+enddef				" enddef
+
+def s:Test5(): number		" def
+  fun DoTest5() abort		# fun
+    return 5
+  endfun			# endfun
+  return DoTest5()
+enddef				" enddef
+
+fun s:Test6() abort		# fun
+  def s:DoTest6(): number	" def
+    return 6
+  enddef			" enddef
+  return s:DoTest6()
+endfun				# endfun
+
+for d in range(1, 6)->reverse()
+  exec $'echo s:Test{d}()'
+  exec $'delfunction s:Test{d}'
+endfor
diff --git a/runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim
new file mode 100644
index 0000000..e46bf75
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_function_def_tail_comments.vim
@@ -0,0 +1,43 @@
+" Vim :function and :def tail comments
+" VIM_TEST_SETUP unlet! g:vimsyn_folding
+
+fun s:Test1() abort		" fun
+  return 1
+endfun				" endfun
+
+def s:Test2(): number		# def
+  return 2
+enddef				# enddef
+
+fun s:Test3() abort		" fun
+  fun s:DoTest3() abort		" fun
+    return 3
+  endfun			" endfun
+  return s:DoTest3() 
+endfun				" endfun
+
+def s:Test4(): number		# def
+  def DoTest4(): number		# def
+    return 4
+  enddef			# enddef
+  return DoTest4()
+enddef				# enddef
+
+def s:Test5(): number		# def
+  fun DoTest5() abort		" fun
+    return 5
+  endfun			" endfun
+  return DoTest5()
+enddef				# enddef
+
+fun s:Test6() abort		" fun
+  def s:DoTest6(): number	# def
+    return 6
+  enddef			# enddef
+  return s:DoTest6()
+endfun				" endfun
+
+for d in range(1, 6)->reverse()
+  exec $'echo s:Test{d}()'
+  exec $'delfunction s:Test{d}'
+endfor
diff --git a/runtime/syntax/testdir/input/vim_ex_function_fold.vim b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
index dd260ca..fa7edbb 100644
--- a/runtime/syntax/testdir/input/vim_ex_function_fold.vim
+++ b/runtime/syntax/testdir/input/vim_ex_function_fold.vim
@@ -193,10 +193,9 @@ function Foo()
 endfunction
 
 function Foo()
-  let x =<< END
+  let x =<< trim END
     endfunction
   END
-
 endfunction
 
 function Foo()
diff --git a/runtime/syntax/testdir/input/vim_ex_let_heredoc.vim b/runtime/syntax/testdir/input/vim_ex_let_heredoc.vim
new file mode 100644
index 0000000..2f88f93
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_let_heredoc.vim
@@ -0,0 +1,196 @@
+" Vim :let heredoc command
+" VIM_TEST_SETUP let g:vimsyn_folding = "h"
+" VIM_TEST_SETUP setl fdc=2 fdl=99 fdm=syntax
+
+
+let foo =<< END
+line1
+line2
+END
+
+  let foo =<< END
+line1
+line2
+END
+
+
+" trim
+
+let foo =<< trim END
+  line1
+  line2
+END
+
+  let foo =<< trim END
+    line1
+    line2
+  END
+
+
+" interpolation
+
+let foo =<< eval END
+line{1 + 0}
+line{1 + 1}
+END
+
+  let foo =<< eval END
+line{1 + 0}
+line{1 + 1}
+END
+
+let foo =<< trim eval END
+  line{1 + 0}
+  line{1 + 1}
+END
+
+  let foo =<< trim eval END
+    line{1 + 0}
+    line{1 + 1}
+  END
+
+" no interpolation (escaped { and })
+
+let foo =<< eval END
+line{{1 + 0}}
+line{{1 + 1}}
+END
+
+  let foo =<< eval END
+line{{1 + 0}}
+line{{1 + 1}}
+END
+
+let foo =<< trim eval END
+  line{{1 + 0}}
+  line{{1 + 1}}
+END
+
+  let foo =<< trim eval END
+    line{{1 + 0}}
+    line{{1 + 1}}
+  END
+
+
+" no interpolation
+
+let foo =<< END
+line{1 + 0}
+line{1 + 1}
+END
+
+  let foo =<< END
+line{1 + 0}
+line{1 + 1}
+END
+
+let foo =<< trim END
+  line{1 + 0}
+  line{1 + 1}
+END
+
+  let foo =<< trim END
+    line{1 + 0}
+    line{1 + 1}
+  END
+
+
+" end marker must not be followed by whitespace
+
+" assert_equal(foo, ["END "])
+let foo =<< END
+END 
+END
+
+" assert_equal(foo, [" END "])
+let foo =<< END
+ END 
+END
+
+" assert_equal(foo, ["END "])
+let foo =<< trim END
+  END 
+END
+
+" assert_equal(foo, ["END "])
+  let foo =<< trim END
+    END 
+  END
+
+
+" end marker must be vertically aligned with :let (if preceded by whitespace)
+
+" assert_equal(foo, ["END"])
+let foo =<< trim END
+  END
+END
+
+  " assert_equal(foo, ["END"])
+  let foo =<< trim END
+    END
+  END
+
+" assert_equal(foo, ["END "])
+let foo =<< trim END
+END 
+END
+
+  " assert_equal(foo, ["END"])
+  let foo =<< trim END
+    END
+  END
+
+  " assert_equal(foo, ["END "])
+  let foo =<< trim END
+    END 
+  END
+
+  " assert_equal(foo, ["END"])
+  let foo =<< trim END
+     END
+  END
+
+  " assert_equal(foo, ["END "])
+  let foo =<< trim END
+     END 
+  END
+
+  " assert_equal(foo, ["END "])
+  let foo =<< trim END
+END 
+END
+
+  " assert_equal(foo, ["END"])
+  let foo =<< trim END
+ END
+END
+
+  " assert_equal(foo, ["END"])
+  let foo =<< trim END
+   END
+END
+
+
+" end markers
+
+let foo =<< !@#$%^&*()_+
+line1
+line2
+!@#$%^&*()_+
+
+let foo =<< 0!@#$%^&*()_+
+line1
+line2
+0!@#$%^&*()_+
+
+let foo =<< A!@#$%^&*()_+
+line1
+line2
+A!@#$%^&*()_+
+
+" error - leading lowercase character
+let foo =<< a!@#$%^&*()_+
+line1
+line2
+a!@#$%^&*()_+
+
diff --git a/runtime/syntax/testdir/input/vim_ex_loadkeymap.vim b/runtime/syntax/testdir/input/vim_ex_loadkeymap.vim
new file mode 100644
index 0000000..8f4484d
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_loadkeymap.vim
@@ -0,0 +1,24 @@
+" Vim :loadkeymap command
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+loadkeymap
+
+" Line comment
+
+  " Another line comment
+
+a A    Basic mapping
+'a á   More than one char in first column
+
+" Special notation
+      B               Special notation allowed in LHS - decimal
+c                   Special notation allowed in RHS - octal
+     Special notation allowed in LHS and RHS - hexadecimal
+
+" Vim-script comment characters
+#                 Line should not match as a Vim9-script comment
+\" “                           Line should not match as a legacy-script comment
+: "                            Line should not match as a legacy-script comment
diff --git a/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim
new file mode 100644
index 0000000..029af2c
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_bar.vim
@@ -0,0 +1,10 @@
+" Vim :loadkeymap command (after "|")
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+echo "..." | loadkeymap
+
+a A    Basic mapping
+
diff --git a/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim
new file mode 100644
index 0000000..61578b6
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_loadkeymap_after_colon.vim
@@ -0,0 +1,10 @@
+" Vim :loadkeymap command (after ":")
+
+scriptencoding utf-8
+
+let b:keymap_name = "syntax-test"
+
+:loadkeymap
+
+a A    Basic mapping
+
diff --git a/runtime/syntax/testdir/input/vim_ex_map.vim b/runtime/syntax/testdir/input/vim_ex_map.vim
index 95f4292..3ddc9e9 100644
--- a/runtime/syntax/testdir/input/vim_ex_map.vim
+++ b/runtime/syntax/testdir/input/vim_ex_map.vim
@@ -5,9 +5,6 @@ map! lhs rhs
 map 
 map lhs rhs
 
-call map(list, 'v:val')
-call map (list, 'v:val')
-
 mapclear  
 mapclear! 
 nmapclear 
@@ -69,6 +66,27 @@ map lhs
 echo "clear"
 
 
+" Differentiate map() from :map
+
+map ( :echo "open-paren"
+
+call map(list, 'v:val')
+call map (list, 'v:val')
+
+function Foo()
+  map ( :echo "open-paren"
+  call map(list, 'v:val')
+  call map (list, 'v:val')
+endfunction
+
+def Foo()
+  map ( :echo "open-paren"
+  map(list, 'v:val')
+  # :map LHS=(list, RHS='v:val')
+  map (list, 'v:val')
+enddef
+
+
 " Issue  #12672
 
 nnoremap foo :echo call(
diff --git a/runtime/syntax/testdir/input/vim_ex_match.vim b/runtime/syntax/testdir/input/vim_ex_match.vim
new file mode 100644
index 0000000..8d14628
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_match.vim
@@ -0,0 +1,32 @@
+" Vim :match, :2match and :3match commands
+
+match FooGroup /Foo/
+match
+match none
+
+2match FooGroup /Foo/
+2match
+2match none
+
+3match FooGroup /Foo/
+3match
+3match none
+
+
+" Differentiate map() from :map
+
+call match(haystack, 'needle')
+call match (haystack, 'needle')
+
+function Foo()
+  match FooGroup /Foo/
+  call match(haystack, 'needle')
+  call match (haystack, 'needle')
+endfunction
+
+def Foo()
+  match FooGroup /Foo/
+  match(haystack, 'needle')
+  # Error: bad :match command - trailing characters
+  match (haystack, 'needle')
+enddef
diff --git a/runtime/syntax/testdir/input/vim_ex_set.vim b/runtime/syntax/testdir/input/vim_ex_set.vim
new file mode 100644
index 0000000..00e53a0
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_set.vim
@@ -0,0 +1,93 @@
+" Vim :set command
+
+set
+set!
+set all
+set! all
+set termcap
+set! termcap
+
+set aleph?
+set aleph
+
+set noallowrevins
+
+set allowrevins!
+set invallowrevins
+
+set aleph&
+set aleph&vi
+set aleph&vim
+
+set all&
+
+set aleph=128
+set aleph:128
+
+set aleph =128
+set aleph :128
+
+set aleph+=96
+set aleph^=2
+set aleph-=96
+
+set backspace+=nostop
+set backspace^=nostop
+set backspace-=nostop
+
+set ai nosi sw=3 tw=3
+
+set =^[Ot " FIXME
+set =^[b   " FIXME
+
+setlocal autoread
+setglobal noautoread
+set autoread<
+
+
+" :help option-backslash
+
+" When setting options using |:let| and |literal-string|, you need to use one
+" fewer layer of backslash. A few examples:
+set makeprg=make\ file	    " results in "make file"
+let &makeprg='make file'    " (same as above)
+set makeprg=make\\\ file    " results in "make\ file"
+set tags=tags\ /usr/tags    " results in "tags" and "/usr/tags"
+set tags=tags\\\ file	    " results in "tags file"
+let &tags='tags\ file'	    " (same as above)
+
+set makeprg=make,file	    " results in "make,file"
+set makeprg=make\\,file	    " results in "make\,file"
+set tags=tags,file	    " results in "tags" and "file"
+set tags=tags\\,file	    " results in "tags,file"
+let &tags='tags\,file'	    " (same as above)
+
+" This example sets the 'titlestring' option to "hi|there":
+set titlestring=hi\|there
+" This sets the 'titlestring' option to "hi" and 'iconstring' to "there":
+set titlestring=hi|set iconstring=there
+
+set dir=\\machine\path	    " results in "\\machine\path"
+set dir=\\\\machine\\path   " results in "\\machine\path"
+set dir=\\path\\file	    " results in "\\path\file" (wrong!)
+
+
+" :help :set_env
+
+set term=$TERM.new
+set path=/usr/$INCLUDE,$HOME/include,.
+
+
+" Multiline :set and option values
+
+set path=abc,def,ghi
+      "\ def is the 'define' option
+      \ def=abc,def,ghi
+ 
+set path=abc,
+      "\ def is a 'path' directory value
+      \def,ghi
+
+set path=
+      "\ def is a 'path' directory value
+      \abc,def
diff --git a/runtime/syntax/testdir/input/vim_keymap.vim b/runtime/syntax/testdir/input/vim_keymap.vim
deleted file mode 100644
index 424d437..0000000
--- a/runtime/syntax/testdir/input/vim_keymap.vim
+++ /dev/null
@@ -1,27 +0,0 @@
-" Vim Keymap file for syntax testing                                                                                                                                                                                                                                           
-                                                                                                                                       
-" Maintainer:   Doug Kearns                                                                                      
-" Last Changed: 2023 Nov 21                                                                                                                                                                                                                                                    
-                                                                                                                                                                                                                                                                               
-scriptencoding utf-8                                                                                                                                                                                                                                                           
-                                                                                                                                       
-let b:keymap_name = "syntax-test"                                                                                                      
-                                                                                                                                                                                                                                                                               
-loadkeymap                                                                                                                                                                                                                                                                     
-                                                                                                                                                                                                                                                                               
-" Line comment                                                                                                                         
-                                                                                                                                       
-  " Another line comment                
-                                                                                                                                       
-a A    Basic mapping                                       
-'a á   More than one char in first column           
-                                          
-" Special notation                                                                                                                     
-      B               Special notation allowed in LHS - decimal                                                                                                                                                                                                       
-c                   Special notation allowed in RHS - octal                                                                 
-     Special notation allowed in LHS and RHS - hexadecimal                                                   
-                                         
-" Vim-script comment characters                               
-#                 Line should not match as a Vim9-script comment
-\" “                           Line should not match as a legacy-script comment 
-: "                            Line should not match as a legacy-script comment
diff --git a/runtime/syntax/testdir/input/yaml.yaml b/runtime/syntax/testdir/input/yaml.yaml
index d87aca2..72e0a0d 100644
--- a/runtime/syntax/testdir/input/yaml.yaml
+++ b/runtime/syntax/testdir/input/yaml.yaml
@@ -24,7 +24,7 @@ not a number: [.nan, .NaN, .NAN]
 
 plain strings:
   - a b c
-  - a * b & c @ d# e : f # comment
+  - a:b & c @ d# e * f # comment
   - {{ f(' ') }} #8234
 double quoted strings:
   - ""
@@ -91,9 +91,10 @@ flow collection:
   inside block mapping:
     foo: {bar: baz}
     bar: ["foo": {baz: qux}]
-  flow collection: [foo # comment
+  flow:collection: [foo # comment
     , {bar: [{ # comment
-      baz: '
+      baz:
+      '
         qux # not comment
       ' # comment
     }]}]
diff --git a/runtime/syntax/testdir/runtest.vim b/runtime/syntax/testdir/runtest.vim
index e1cfdcf..f9c0db0 100644
--- a/runtime/syntax/testdir/runtest.vim
+++ b/runtime/syntax/testdir/runtest.vim
@@ -85,6 +85,28 @@ func HandleSwapExists()
   endif
 endfunc
 
+def IsWinNumOneAtEOF(in_name_and_out_name: string): bool
+  # Expect defaults from term_util#RunVimInTerminal().
+  if winwidth(1) != 75 || winheight(1) != 20
+    ch_log(printf('Aborting for %s: (75 x 20) != (%d x %d)',
+      in_name_and_out_name,
+      winwidth(1),
+      winheight(1)))
+    return true
+  endif
+  # A two-fold role: (1) redraw whenever the first test file is of 19 lines or
+  # less long (not applicable to c.c); (2) redraw in case the terminal buffer
+  # cannot redraw itself just yet (else expect extra files generated).
+  redraw
+  const pos: string = join([
+    screenstring(20, 71),
+    screenstring(20, 72),
+    screenstring(20, 73),
+    screenstring(20, 74),
+    screenstring(20, 75)], '')
+  return (pos == ' All ' || pos == ' Bot ')
+enddef
+
 func RunTest()
   let ok_count = 0
   let failed_tests = []
@@ -94,14 +116,17 @@ func RunTest()
   let setup = glob('input/setup/*.vim', 1, 1)
     \ ->reduce({d, f -> extend(d, {fnamemodify(f, ':t:r'): f})}, {})
 
-  for fname in glob('input/*.*', 1, 1)
-    if fname =~ '\~$'
-      " backup file, skip
-      continue
-    endif
+  if exists("$VIM_SYNTAX_SELF_TESTING")
+    let dirpath = 'input/selftestdir/'
+    let fnames = readdir(dirpath, {fname -> fname !~ '^README\.txt$'})
+  else
+    let dirpath = 'input/'
+    let fnames = readdir(dirpath, {fname -> fname !~ '\~$' && fname =~ '^.\+\..\+$'})
+  endif
 
-    let linecount = readfile(fname)->len()
-    let root = fnamemodify(fname, ':t:r')
+  for fname in fnames
+    let root = fnamemodify(fname, ':r')
+    let fname = dirpath .. fname
     let filetype = substitute(root, '\([^_.]*\)[_.].*', '\1', '')
     let failed_root = 'failed/' .. root
 
@@ -118,6 +143,10 @@ func RunTest()
       call delete('done/' .. root)
 
       let lines =<< trim END
+	" Track the cursor progress through a syntax test file so that any
+	" degenerate input can be reported.  Each file will have its own cursor.
+	let s:cursor = 1
+
 	" extra info for shell variables
 	func ShellInfo()
 	  let msg = ''
@@ -160,11 +189,111 @@ func RunTest()
 	  call cursor(1, 1)
 	  " BEGIN [runtime/defaults.vim]
 	  " Also, disable italic highlighting to avoid issues on some terminals.
-	  set display=truncate ruler scrolloff=5 t_ZH= t_ZR=
+	  set display=lastline ruler scrolloff=5 t_ZH= t_ZR=
 	  syntax on
 	  " END [runtime/defaults.vim]
 	  redraw!
 	endfunc
+
+	def s:AssertCursorForwardProgress(): bool
+	  const curnum: number = line('.')
+	  if curnum <= cursor
+	    # Use "actions/upload-artifact@v4" of ci.yml for delivery.
+	    writefile([printf('No cursor progress: %d <= %d (%s).  Please file an issue.',
+		  curnum,
+		  cursor,
+		  bufname('%'))],
+	      'failed/00-FIXME',
+	      'a')
+	    bwipeout!
+	  endif
+	  cursor = curnum
+	  return true
+	enddef
+
+	def ScrollToSecondPage(estate: number, op_wh: number, op_so: number): bool
+	  if line('.') != 1 || line('w$') >= line('$')
+	    return AssertCursorForwardProgress()
+	  endif
+	  try
+	    set scrolloff=0
+	    # Advance mark "c"[ursor] along with the cursor.
+	    norm! Lmc
+	    if foldclosed('.') < 0 &&
+		(strdisplaywidth(getline('.')) + &l:fdc * winheight(1)) >= estate
+	      # Make for an exit for a screenful long line.
+	      norm! j^
+	      return AssertCursorForwardProgress()
+	    else
+	      # Place the cursor on the actually last visible line.
+	      while winline() < op_wh
+		const lastnum: number = winline()
+		norm! gjmc
+		if lastnum > winline()
+		  break
+		endif
+	      endwhile
+	      norm! zt
+	    endif
+	  finally
+	    # COMPATIBILITY: Scroll up around "scrolloff" lines.
+	    &scrolloff = max([1, op_so])
+	  endtry
+	  norm! ^
+	  return AssertCursorForwardProgress()
+	enddef
+
+	def ScrollToNextPage(estate: number, op_wh: number, op_so: number): bool
+	  if line('.') == 1 || line('w$') >= line('$')
+	    return AssertCursorForwardProgress()
+	  endif
+	  try
+	    set scrolloff=0
+	    # Advance mark "c"[ursor] along with the cursor.
+	    norm! Lmc
+	    if foldclosed('.') < 0 &&
+		(strdisplaywidth(getline('.')) + &l:fdc * winheight(1)) >= estate
+	      # Make for an exit for a screenful long line.
+	      norm! j^
+	      return AssertCursorForwardProgress()
+	    else
+	      # Place the cursor on the actually last visible line.
+	      while winline() < op_wh
+		const lastnum: number = winline()
+		norm! gjmc
+		if lastnum > winline()
+		  break
+		endif
+	      endwhile
+	    endif
+	  finally
+	    # COMPATIBILITY: Scroll up/down around "scrolloff" lines.
+	    &scrolloff = max([1, op_so])
+	  endtry
+	  norm! zt
+	  const marknum: number = line("'c")
+	  # Eschew &smoothscroll since line("`c") is not supported.
+	  # Remember that "w0" can point to the first line of a _closed_ fold
+	  # whereas the last line of a _closed_ fold can be marked.
+	  if line('w0') > marknum
+	    while line('w0') > marknum
+	      exe "norm! \"
+	    endwhile
+	    if line('w0') != marknum
+	      exe "norm! \H"
+	    endif
+	  # Handle non-wrapped lines.
+	  elseif line('w0') < marknum
+	    while line('w0') < marknum
+	      exe "norm! \"
+	    endwhile
+	    if line('w0') != marknum
+	      exe "norm! \H"
+	    endif
+	  endif
+	  norm! ^
+	  return AssertCursorForwardProgress()
+	enddef
       END
       call writefile(lines, 'Xtestscript')
 
@@ -198,34 +327,39 @@ func RunTest()
 
       " Screendump at the start of the file: failed/root_00.dump
       let root_00 = root .. '_00'
-      call ch_log('First screendump for ' .. fname .. ': failed/' .. root_00 .. '.dump')
+      let in_name_and_out_name = fname .. ': failed/' .. root_00 .. '.dump'
+      call ch_log('First screendump for ' .. in_name_and_out_name)
       let fail = VerifyScreenDump(buf, root_00, {})
 
-      " clear the shell info if there are not enough lines to cause a scroll
-      if filetype == 'sh' && linecount <= 19
-	call term_sendkeys(buf, ":redraw\")
-      endif
-
       " Make a Screendump every 18 lines of the file: failed/root_NN.dump
-      let topline = 1
       let nr = 1
-      while linecount - topline > 20
-	let topline += 18
-	call term_sendkeys(buf, printf("%dGzt", topline))
-	let root_next = root .. printf('_%02d', nr)
-	call ch_log('Next screendump for ' .. fname .. ': failed/' .. root_next .. '.dump')
-	let fail += VerifyScreenDump(buf, root_next, {})
-	let nr += 1
-      endwhile
-
-      " Screendump at the end of the file: failed/root_99.dump
-      call term_sendkeys(buf, 'Gzb')
-      let root_last = root .. '_99'
-      call ch_log('Last screendump for ' .. fname .. ': failed/' .. root_last .. '.dump')
-      let fail += VerifyScreenDump(buf, root_last, {})
-
-      call StopVimInTerminal(buf)
-      call delete('Xtestscript')
+      let root_next = printf('%s_%02d', root, nr)
+      let in_name_and_out_name = fname .. ': failed/' .. root_next .. '.dump'
+
+      " Accommodate the next code block to "buf"'s contingency for self
+      " wipe-out.
+      try
+	if !IsWinNumOneAtEOF(in_name_and_out_name)
+	  call term_sendkeys(buf, ":call ScrollToSecondPage((18 * 75 + 1), 19, 5) | redraw!\")
+	  call ch_log('Next screendump for ' .. in_name_and_out_name)
+	  let fail += VerifyScreenDump(buf, root_next, {})
+	  let nr += 1
+	  let root_next = printf('%s_%02d', root, nr)
+	  let in_name_and_out_name = fname .. ': failed/' .. root_next .. '.dump'
+
+	  while !IsWinNumOneAtEOF(in_name_and_out_name)
+	    call term_sendkeys(buf, ":call ScrollToNextPage((18 * 75 + 1), 19, 5) | redraw!\")
+	    call ch_log('Next screendump for ' .. in_name_and_out_name)
+	    let fail += VerifyScreenDump(buf, root_next, {})
+	    let nr += 1
+	    let root_next = printf('%s_%02d', root, nr)
+	    let in_name_and_out_name = fname .. ': failed/' .. root_next .. '.dump'
+	  endwhile
+	endif
+	call StopVimInTerminal(buf)
+      finally
+	call delete('Xtestscript')
+      endtry
 
       " redraw here to avoid the following messages to get mixed up with screen
       " output.
@@ -275,6 +409,12 @@ func RunTest()
   call Message('OK: ' .. ok_count)
   call Message('FAILED: ' .. len(failed_tests) .. ': ' .. string(failed_tests))
   call Message('skipped: ' .. skipped_count)
+
+  if !empty(failed_tests)
+    call Message('')
+    call Message('View generated screendumps with "../../src/vim --clean -S testdir/viewdumps.vim"')
+  endif
+
   call AppendMessages('== SUMMARY ==')
 
   if len(failed_tests) > 0
diff --git a/runtime/syntax/testdir/viewdumps.vim b/runtime/syntax/testdir/viewdumps.vim
new file mode 100644
index 0000000..e1624ff
--- /dev/null
+++ b/runtime/syntax/testdir/viewdumps.vim
@@ -0,0 +1,24 @@
+vim9script
+
+exec 'source ' .. (((cwdpath: string) => cwdpath
+  ->strpart(0, cwdpath->strridx('/vim')))(getcwd()))
+  .. '/vim/src/testdir/commondumps.vim'
+g:Init('\', -1)
+
+# THE FOLLOWING SETTINGS PERTAIN TO "input/" FILES THAT ARE LIKELY TO BE
+# LOADED SIDE BY SIDE WHENEVER BATCHES OF NEW SCREENDUMPS ARE GENERATED.
+
+# Match "LC_ALL=C" of Makefile.
+language C
+
+# Match the settings from term_util.vim#RunVimInTerminal().
+set t_Co=256 background=light
+hi Normal ctermfg=NONE ctermbg=NONE
+
+# Match the settings from runtest.vim#Xtestscript#SetUpVim().
+set display=lastline ruler scrolloff=5 t_ZH= t_ZR=
+
+# Anticipate non-Latin-1 characters in "input/" files.
+set encoding=utf-8 termencoding=utf-8
+
+# vim:fdm=syntax:sw=2:ts=8:noet:nolist:nosta:
diff --git a/runtime/syntax/thrift.vim b/runtime/syntax/thrift.vim
new file mode 100644
index 0000000..502e988
--- /dev/null
+++ b/runtime/syntax/thrift.vim
@@ -0,0 +1,74 @@
+" Vim syntax file
+" Language: Thrift
+" Original Author: Martin Smith 
+" Maintainer: Yinzuo Jiang 
+" Last Change: 2024/07/29
+" https://github.com/apache/thrift/blob/master/contrib/thrift.vim
+"
+" Licensed to the Apache Software Foundation (ASF) under one
+" or more contributor license agreements. See the NOTICE file
+" distributed with this work for additional information
+" regarding copyright ownership. The ASF licenses this file
+" to you under the Apache License, Version 2.0 (the
+" "License"); you may not use this file except in compliance
+" with the License. You may obtain a copy of the License at
+"
+"   http://www.apache.org/licenses/LICENSE-2.0
+"
+" Unless required by applicable law or agreed to in writing,
+" software distributed under the License is distributed on an
+" "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+" KIND, either express or implied. See the License for the
+" specific language governing permissions and limitations
+" under the License.
+"
+
+if exists("b:current_syntax")
+  finish
+endif
+
+" Todo
+syn keyword thriftTodo TODO todo FIXME fixme XXX xxx contained
+
+" Comments
+syn match thriftComment "#.*" contains=thriftTodo
+syn region thriftComment start="/\*" end="\*/" contains=thriftTodo
+syn match thriftComment "//.\{-}\(?>\|$\)\@="
+
+" String
+syn region thriftStringDouble matchgroup=None start=+"+  end=+"+
+
+" Number
+syn match thriftNumber "-\=\<\d\+\>" contained
+
+" Keywords
+syn keyword thriftKeyword namespace
+syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_attrs
+syn keyword thriftKeyword include cpp_include cpp_type const optional required
+syn keyword thriftBasicTypes void bool byte i8 i16 i32 i64 double string binary
+syn keyword thriftStructure map list set struct typedef exception enum throws union
+
+" Special
+syn match thriftSpecial "\d\+:"
+
+" Structure
+syn keyword thriftStructure service oneway extends
+"async"         { return tok_async;         }
+"exception"     { return tok_xception;      }
+"extends"       { return tok_extends;       }
+"throws"        { return tok_throws;        }
+"service"       { return tok_service;       }
+"enum"          { return tok_enum;          }
+"const"         { return tok_const;         }
+
+hi def link thriftComment Comment
+hi def link thriftKeyword Special
+hi def link thriftBasicTypes Type
+hi def link thriftStructure StorageClass
+hi def link thriftTodo Todo
+hi def link thriftString String
+hi def link thriftNumber Number
+hi def link thriftSpecial Special
+hi def link thriftStructure Structure
+
+let b:current_syntax = "thrift"
diff --git a/runtime/syntax/tmux.vim b/runtime/syntax/tmux.vim
index 9766ed5..80636f2 100644
--- a/runtime/syntax/tmux.vim
+++ b/runtime/syntax/tmux.vim
@@ -1,5 +1,5 @@
 " Language: tmux(1) configuration file
-" Version: 3.4 (git-608d1134)
+" Version: 3.4 (git-171004df)
 " URL: https://github.com/ericpruitt/tmux.vim/
 " Maintainer: Eric Pruitt 
 " License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause)
@@ -28,7 +28,7 @@ syn match tmuxKey               /\(C-\|M-\|\^\)\+\S\+/ display
 syn match tmuxNumber            /\<\d\+\>/             display
 syn match tmuxFlags             /\s-\a\+/              display
 syn match tmuxVariableExpansion /\$\({[A-Za-z_]\w*}\|[A-Za-z_]\w*\)/ display
-syn match tmuxControl           /\(^\|\s\)%\(if\|elif\|else\|endif\)\($\|\s\)/ display
+syn match tmuxControl           /\(^\|\s\)%\(if\|elif\|else\|endif\|hidden\)\($\|\s\)/ display
 syn match tmuxEscape            /\\\(u\x\{4\}\|U\x\{8\}\|\o\{3\}\|[\\ernt$]\)/ display
 
 " Missing closing bracket.
@@ -99,11 +99,11 @@ syn keyword tmuxOptions
 \ after-set-environment after-set-hook after-set-option after-show-environment
 \ after-show-messages after-show-options after-split-window after-unbind-key
 \ aggressive-resize alert-activity alert-bell alert-silence allow-passthrough
-\ allow-rename alternate-screen assume-paste-time automatic-rename
-\ automatic-rename-format backspace base-index bell-action buffer-limit
-\ client-active client-attached client-detached client-focus-in
+\ allow-rename allow-set-title alternate-screen assume-paste-time
+\ automatic-rename automatic-rename-format backspace base-index bell-action
+\ buffer-limit client-active client-attached client-detached client-focus-in
 \ client-focus-out client-resized client-session-changed clock-mode-color
-\ clock-mode-colour clock-mode-style command-alias copy-command
+\ clock-mode-colour clock-mode-style command-alias command-error copy-command
 \ copy-mode-current-match-style copy-mode-mark-style copy-mode-match-style
 \ cursor-color cursor-colour cursor-style default-command default-shell
 \ default-size default-terminal destroy-unattached detach-on-destroy
diff --git a/runtime/syntax/tsv.vim b/runtime/syntax/tsv.vim
new file mode 100644
index 0000000..f0dd9f7
--- /dev/null
+++ b/runtime/syntax/tsv.vim
@@ -0,0 +1,12 @@
+" Vim filetype plugin file
+" Language:	Tab separated values (TSV)
+" Last Change:	2024 Jul 16
+" This runtime file is looking for a new maintainer.
+
+if exists('b:current_syntax')
+  finish
+endif
+
+let b:csv_delimiter = '\t'  " enforce tab delimiter
+runtime! syntax/csv.vim
+let b:current_syntax = 'tsv'
diff --git a/runtime/syntax/typst.vim b/runtime/syntax/typst.vim
new file mode 100644
index 0000000..82fdadb
--- /dev/null
+++ b/runtime/syntax/typst.vim
@@ -0,0 +1,472 @@
+" Vim syntax file
+" Language:    Typst
+" Maintainer:  Gregory Anders 
+" Last Change: 2024-07-14
+" Based on:    https://github.com/kaarmu/typst.vim
+
+if exists('b:current_syntax')
+    finish
+endif
+
+syntax sync fromstart
+syntax spell toplevel
+
+" Common {{{1
+syntax cluster typstCommon
+    \ contains=@typstComment
+
+" Common > Comment {{{2
+syntax cluster typstComment
+    \ contains=typstCommentBlock,typstCommentLine
+syntax match typstCommentBlock
+    \ #/\*\%(\_.\{-}\)\*/#
+    \ contains=typstCommentTodo,@Spell
+syntax match typstCommentLine
+    \ #//.*#
+    \ contains=typstCommentTodo,@Spell
+syntax keyword typstCommentTodo
+    \ contained
+    \ TODO FIXME XXX TBD
+
+
+" Code {{{1
+syntax cluster typstCode
+    \ contains=@typstCommon
+            \ ,@typstCodeKeywords
+            \ ,@typstCodeConstants
+            \ ,@typstCodeIdentifiers
+            \ ,@typstCodeFunctions
+            \ ,@typstCodeParens
+
+" Code > Keywords {{{2
+syntax cluster typstCodeKeywords
+    \ contains=typstCodeConditional
+            \ ,typstCodeRepeat
+            \ ,typstCodeKeyword
+            \ ,typstCodeStatement
+syntax keyword typstCodeConditional
+    \ contained
+    \ if else
+syntax keyword typstCodeRepeat
+    \ contained
+    \ while for
+syntax keyword typstCodeKeyword
+    \ contained
+    \ not in and or return
+syntax region typstCodeStatement
+    \ contained
+    \ matchgroup=typstCodeStatementWord start=/\v(let|set|import|include)>/
+    \ matchgroup=Noise end=/\v%(;|$)/
+    \ contains=@typstCode
+syntax region typstCodeStatement
+    \ contained
+    \ matchgroup=typstCodeStatementWord start=/show/
+    \ matchgroup=Noise end=/\v%(:|$)/ keepend
+    \ contains=@typstCode
+    \ skipwhite nextgroup=@typstCode,typstCodeShowRocket
+syntax match typstCodeShowRocket
+    \ contained
+    \ /.*=>/
+    \ contains=@typstCode
+    \ skipwhite nextgroup=@typstCode
+
+" Code > Identifiers {{{2
+syntax cluster typstCodeIdentifiers
+    \ contains=typstCodeIdentifier
+            \ ,typstCodeFieldAccess
+syntax match typstCodeIdentifier
+    \ contained
+    \ /\v\w\k*>(<%(let|set|show|import|include))@(<%(let|set|show|import|include))@ Functions {{{2
+syntax cluster typstCodeFunctions
+    \ contains=typstCodeFunction
+syntax match typstCodeFunction
+    \ contained
+    \ /\v\w\k*>(<%(let|set|show|import|include))@ Constants {{{2
+syntax cluster typstCodeConstants
+    \ contains=typstCodeConstant
+            \ ,typstCodeNumberInteger
+            \ ,typstCodeNumberFloat
+            \ ,typstCodeNumberLength
+            \ ,typstCodeNumberAngle
+            \ ,typstCodeNumberRatio
+            \ ,typstCodeNumberFraction
+            \ ,typstCodeString
+            \ ,typstCodeLabel
+syntax match typstCodeConstant
+    \ contained
+    \ /\v<%(none|auto|true|false)-@!>/
+syntax match typstCodeNumberInteger
+    \ contained
+    \ /\v<\d+>/
+
+syntax match typstCodeNumberFloat
+    \ contained
+    \ /\v<\d+\.\d*>/
+syntax match typstCodeNumberLength
+    \ contained
+    \ /\v<\d+(\.\d*)?(pt|mm|cm|in|em)>/
+syntax match typstCodeNumberAngle
+    \ contained
+    \ /\v<\d+(\.\d*)?(deg|rad)>/
+syntax match typstCodeNumberRatio
+    \ contained
+    \ /\v<\d+(\.\d*)?\%/
+syntax match typstCodeNumberFraction
+    \ contained
+    \ /\v<\d+(\.\d*)?fr>/
+syntax region typstCodeString
+    \ contained
+    \ start=/"/ skip=/\v\\\\|\\"/ end=/"/
+    \ contains=@Spell
+syntax match typstCodeLabel
+    \ contained
+    \ /\v\<\K%(\k*-*)*\>/
+
+" Code > Parens {{{2
+syntax cluster typstCodeParens
+    \ contains=typstCodeParen
+            \ ,typstCodeBrace
+            \ ,typstCodeBracket
+            \ ,typstCodeDollar
+            \ ,typstMarkupRawInline
+            \ ,typstMarkupRawBlock
+syntax region typstCodeParen
+    \ contained
+    \ matchgroup=Noise start=/(/ end=/)/
+    \ contains=@typstCode
+syntax region typstCodeBrace
+    \ contained
+    \ matchgroup=Noise start=/{/ end=/}/
+    \ contains=@typstCode
+syntax region typstCodeBracket
+    \ contained
+    \ matchgroup=Noise start=/\[/ end=/\]/
+    \ contains=@typstMarkup
+syntax region typstCodeDollar
+    \ contained
+    \ matchgroup=Number start=/\\\@ Keywords {{{2
+syntax cluster typstHashtagKeywords
+    \ contains=typstHashtagConditional
+            \ ,typstHashtagRepeat
+            \ ,typstHashtagKeywords
+            \ ,typstHashtagStatement
+
+" syntax match typstHashtagControlFlowError
+"     \ /\v#%(if|while|for)>-@!.{-}$\_.{-}%(\{|\[|\()/
+syntax match typstHashtagControlFlow
+    \ /\v#%(if|while|for)>.{-}\ze%(\{|\[|\()/
+    \ contains=typstHashtagConditional,typstHashtagRepeat
+    \ nextgroup=@typstCode
+syntax region typstHashtagConditional
+    \ contained
+    \ start=/\v#if>/ end=/\v\ze(\{|\[)/
+    \ contains=@typstCode
+syntax region typstHashtagRepeat
+    \ contained
+    \ start=/\v#(while|for)>/ end=/\v\ze(\{|\[)/
+    \ contains=@typstCode
+syntax match typstHashtagKeyword
+    \ /\v#(return)>/
+    \ skipwhite nextgroup=@typstCode
+syntax region typstHashtagStatement
+    \ matchgroup=typstHashtagStatementWord start=/\v#(let|set|import|include)>/
+    \ matchgroup=Noise end=/\v%(;|$)/
+    \ contains=@typstCode
+syntax region typstHashtagStatement
+    \ matchgroup=typstHashtagStatementWord start=/#show/
+    \ matchgroup=Noise end=/\v%(:|$)/ keepend
+    \ contains=@typstCode
+    \ skipwhite nextgroup=@typstCode,typstCodeShowRocket
+
+" Hashtag > Constants {{{2
+syntax cluster typstHashtagConstants
+    \ contains=typstHashtagConstant
+syntax match typstHashtagConstant
+    \ /\v#(none|auto|true|false)>/
+
+" Hashtag > Identifiers {{{2
+syntax cluster typstHashtagIdentifiers
+    \ contains=typstHashtagIdentifier
+            \ ,typstHashtagFieldAccess
+syntax match typstHashtagIdentifier
+    \ /\v#\w\k*>(<%(let|set|show|import|include))@(<%(let|set|show|import|include))@ Functions {{{2
+syntax cluster typstHashtagFunctions
+    \ contains=typstHashtagFunction
+syntax match typstHashtagFunction
+    \ /\v#\w\k*>(<%(let|set|show|import|include))@ Parens {{{2
+syntax cluster typstHashtagParens
+    \ contains=typstHashtagParen
+            \ ,typstHashtagBrace
+            \ ,typstHashtagBracket
+            \ ,typstHashtagDollar
+syntax region typstHashtagParen
+    \ matchgroup=Noise start=/#(/ end=/)/
+    \ contains=@typstCode
+syntax region typstHashtagBrace
+    \ matchgroup=Noise start=/#{/ end=/}/
+    \ contains=@typstCode
+syntax region typstHashtagBracket
+    \ matchgroup=Noise start=/#\[/ end=/\]/
+    \ contains=@typstMarkup
+syntax region typstHashtagDollar
+    \ matchgroup=Noise start=/#\$/ end=/\\\@ Text {{{2
+syntax cluster typstMarkupText
+    \ contains=typstMarkupRawInline
+            \ ,typstMarkupRawBlock
+            \ ,typstMarkupLabel
+            \ ,typstMarkupReference
+            \ ,typstMarkupUrl
+            \ ,typstMarkupHeading
+            \ ,typstMarkupBulletList
+            \ ,typstMarkupEnumList
+            \ ,typstMarkupTermList
+            \ ,typstMarkupBold
+            \ ,typstMarkupItalic
+            \ ,typstMarkupLinebreak
+            \ ,typstMarkupNonbreakingSpace
+            \ ,typstMarkupShy
+            \ ,typstMarkupDash
+            \ ,typstMarkupEllipsis
+
+" Raw Text
+syntax match typstMarkupRawInline
+    \ /`.\{-}`/
+syntax region typstMarkupRawBlock
+    \ matchgroup=Macro start=/```\w*/
+    \ matchgroup=Macro end=/```/ keepend
+syntax region typstMarkupCodeBlockTypst
+    \ matchgroup=Macro start=/```typst/
+    \ matchgroup=Macro end=/```/ contains=@typstCode keepend
+    \ concealends
+
+for s:name in get(g:, 'typst_embedded_languages', [])
+    let s:include = ['syntax include'
+                \   ,'@typstEmbedded_'..s:name
+                \   ,'syntax/'..s:name..'.vim']
+    let s:rule = ['syn region'
+                \,s:name
+                \,'matchgroup=Macro'
+                \,'start=/```'..s:name..'\>/ end=/```/' 
+                \,'contains=@typstEmbedded_'..s:name 
+                \,'keepend'
+                \,'concealends']
+    execute 'silent! ' .. join(s:include, ' ')
+    unlet! b:current_syntax
+    execute join(s:rule, ' ')
+endfor
+
+" Label & Reference
+syntax match typstMarkupLabel
+    \ /\v\<\K%(\k*-*)*\>/
+syntax match typstMarkupReference
+    \ /\v\@\K%(\k*-*)*/
+
+" URL
+syntax match typstMarkupUrl
+    \ #\v\w+://\S*#
+
+" Heading
+syntax match typstMarkupHeading
+    \ /^\s*\zs=\{1,6}\s.*$/
+    \ contains=typstMarkupLabel,@Spell
+
+" Lists
+syntax match typstMarkupBulletList
+    \ /\v^\s*-\s+/
+syntax match typstMarkupEnumList
+    \ /\v^\s*(\+|\d+\.)\s+/
+syntax region typstMarkupTermList
+    \ oneline start=/\v^\s*\/\s/ end=/:/
+    \ contains=@typstMarkup
+
+" Bold & Italic
+syntax match typstMarkupBold
+    \ /\v(\w|\\)@1 Parens {{{2
+syntax cluster typstMarkupParens
+    \ contains=typstMarkupBracket
+            \ ,typstMarkupDollar
+syntax region typstMarkupBracket
+    \ matchgroup=Noise start=/\[/ end=/\]/
+    \ contains=@typstMarkup
+syntax region typstMarkupDollar
+    \ matchgroup=Special start=/\\\@/
+    \ contained
+syntax region typstMathQuote
+    \ matchgroup=String start=/"/ skip=/\\"/ end=/"/
+    \ contained
+
+" Math > Linked groups {{{2
+highlight default link typstMathIdentifier          Identifier
+highlight default link typstMathFunction            Statement
+highlight default link typstMathNumber              Number
+highlight default link typstMathSymbol              Statement
+
+" Highlighting {{{1
+
+" Highlighting > Linked groups {{{2
+highlight default link typstCommentBlock            Comment
+highlight default link typstCommentLine             Comment
+highlight default link typstCommentTodo             Todo
+highlight default link typstCodeConditional         Conditional
+highlight default link typstCodeRepeat              Repeat
+highlight default link typstCodeKeyword             Keyword
+highlight default link typstCodeConstant            Constant
+highlight default link typstCodeNumberInteger       Number
+highlight default link typstCodeNumberFloat         Number
+highlight default link typstCodeNumberLength        Number
+highlight default link typstCodeNumberAngle         Number
+highlight default link typstCodeNumberRatio         Number
+highlight default link typstCodeNumberFraction      Number
+highlight default link typstCodeString              String
+highlight default link typstCodeLabel               Structure
+highlight default link typstCodeStatementWord       Statement
+highlight default link typstCodeIdentifier          Identifier
+highlight default link typstCodeFieldAccess         Identifier
+highlight default link typstCodeFunction            Function
+highlight default link typstCodeParen               Noise
+highlight default link typstCodeBrace               Noise
+highlight default link typstCodeBracket             Noise
+highlight default link typstCodeDollar              Noise
+" highlight default link typstHashtagControlFlowError Error
+highlight default link typstHashtagConditional      Conditional
+highlight default link typstHashtagRepeat           Repeat
+highlight default link typstHashtagKeyword          Keyword
+highlight default link typstHashtagConstant         Constant
+highlight default link typstHashtagStatementWord    Statement
+highlight default link typstHashtagIdentifier       Identifier
+highlight default link typstHashtagFieldAccess      Identifier
+highlight default link typstHashtagFunction         Function
+highlight default link typstHashtagParen            Noise
+highlight default link typstHashtagBrace            Noise
+highlight default link typstHashtagBracket          Noise
+highlight default link typstHashtagDollar           Noise
+highlight default link typstMarkupRawInline         Macro
+highlight default link typstMarkupRawBlock          Macro
+highlight default link typstMarkupLabel             Structure
+highlight default link typstMarkupReference         Structure
+highlight default link typstMarkupBulletList        Structure
+" highlight default link typstMarkupItalicError       Error
+" highlight default link typstMarkupBoldError         Error
+highlight default link typstMarkupEnumList          Structure
+highlight default link typstMarkupLinebreak         Structure
+highlight default link typstMarkupNonbreakingSpace  Structure
+highlight default link typstMarkupShy               Structure
+highlight default link typstMarkupDash              Structure
+highlight default link typstMarkupEllipsis          Structure
+highlight default link typstMarkupTermList          Structure
+highlight default link typstMarkupDollar            Noise
+
+" Highlighting > Custom Styling {{{2
+highlight! Conceal ctermfg=NONE ctermbg=NONE guifg=NONE guibg=NONE
+
+highlight default typstMarkupHeading                    term=underline,bold     cterm=underline,bold    gui=underline,bold
+highlight default typstMarkupUrl                        term=underline          cterm=underline         gui=underline
+highlight default typstMarkupBold                       term=bold               cterm=bold              gui=bold
+highlight default typstMarkupItalic                     term=italic             cterm=italic            gui=italic
+highlight default typstMarkupBoldItalic                 term=bold,italic        cterm=bold,italic       gui=bold,italic
+
+let b:current_syntax = 'typst'
+
+" }}}1
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 033251f..2fa2e35 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -3,7 +3,7 @@
 " Maintainer:	   Hirohito Higashi 
 "	   Doug Kearns 
 " URL:	   https://github.com/vim-jp/syntax-vim-ex
-" Last Change:	   2024 Jun 15
+" Last Change:	   2024 Aug 23
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -28,14 +28,12 @@ syn cluster vimCommentGroup	contains=vimTodo,@Spell
 
 " regular vim commands {{{2
 " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR=''
-syn keyword vimCommand contained abo[veleft] abs[tract] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cal[l] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] class clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler]
-syn keyword vimCommand contained con[tinue] conf[irm] cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] debugg[reedy] defc[ompile] defe[r] delc[ommand] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se] elsei[f] em[enu] en[dif] endin[terface] endc[lass] ende[num] endfo[r] endt[ry] endw[hile] ene[w] enu[m] ev[al] ex exi[t] exp[ort] exu[sage] f[ile] files filet[ype] filt[er] fin[d] fina[l] finall[y] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] for g[lobal] go[to] gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep]
-syn keyword vimCommand contained helpt[ags] ha[rdcopy] hi[ghlight] hid[e] his[tory] ho[rizontal] if ij[ump] il[ist] imp[ort] int[ro] inte[rface] is[earch] isp[lit] j[oin] ju[mps] k kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] let lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loadk[eymap] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile] lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove]
-syn keyword vimCommand contained ma[rk] mak[e] marks mat[ch] menut[ranslate] mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] mz[scheme] mzf[ile] n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pub[lic] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] retu[rn]
-syn keyword vimCommand contained rew[ind] ri[ght] rightb[elow] ru[ntime] rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stat[ic] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st]
-syn keyword vimCommand contained tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly] tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] thi[s] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] ty[pe] u[ndo] undoj[oin] undol[ist] unh[ide] unl[et] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wh[ile] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i
-
-syn keyword vimCommand contained	2mat[ch] 3mat[ch]
+syn keyword vimCommand contained abo[veleft] abs[tract] al[l] ar[gs] arga[dd] argd[elete] argdo argded[upe] arge[dit] argg[lobal] argl[ocal] argu[ment] as[cii] b[uffer] bN[ext] ba[ll] bad[d] balt bd[elete] bel[owright] bf[irst] bl[ast] bm[odified] bn[ext] bo[tright] bp[revious] br[ewind] brea[k] breaka[dd] breakd[el] breakl[ist] bro[wse] buffers bufd[o] bun[load] bw[ipeout] c[hange] cN[ext] cNf[ile] cabo[ve] cad[dbuffer] cadde[xpr] caddf[ile] caf[ter] cb[uffer] cbe[fore] cbel[ow] cbo[ttom] cc ccl[ose] cd cdo ce[nter] cex[pr] cf[ile] cfd[o] cfir[st] cg[etfile] cgetb[uffer] cgete[xpr] chd[ir] changes che[ckpath] checkt[ime] chi[story] cl[ist] cla[st] class clo[se] cle[arjumps] cn[ext] cnew[er] cnf[ile] co[py] col[der] colo[rscheme] com[mand] comc[lear] comp[iler]
+syn keyword vimCommand contained con[tinue] conf[irm] cons[t] cope[n] cp[revious] cpf[ile] cq[uit] cr[ewind] cs[cope] cst[ag] cw[indow] d[elete] delm[arks] deb[ug] debugg[reedy] defc[ompile] defe[r] delc[ommand] delf[unction] di[splay] dif[fupdate] diffg[et] diffo[ff] diffp[atch] diffpu[t] diffs[plit] difft[his] dig[raphs] disa[ssemble] dj[ump] dli[st] dr[op] ds[earch] dsp[lit] e[dit] ea[rlier] el[se] elsei[f] em[enu] en[dif] endin[terface] endc[lass] ende[num] endfo[r] endt[ry] endw[hile] ene[w] enu[m] ev[al] ex exi[t] exp[ort] exu[sage] f[ile] files filet[ype] filt[er] fin[d] finall[y] fini[sh] fir[st] fix[del] fo[ld] foldc[lose] foldd[oopen] folddoc[losed] foldo[pen] g[lobal] go[to] gr[ep] grepa[dd] gu[i] gv[im] h[elp] helpc[lose] helpf[ind] helpg[rep] helpt[ags]
+syn keyword vimCommand contained ha[rdcopy] hi[ghlight] hid[e] his[tory] ho[rizontal] if ij[ump] il[ist] imp[ort] int[ro] inte[rface] is[earch] isp[lit] j[oin] ju[mps] k kee[pmarks] keepj[umps] keepp[atterns] keepa[lt] l[ist] lN[ext] lNf[ile] la[st] lab[ove] lan[guage] lad[dexpr] laddb[uffer] laddf[ile] laf[ter] lat[er] lb[uffer] lbe[fore] lbel[ow] lbo[ttom] lc[d] lch[dir] lcl[ose] lcs[cope] ld[o] le[ft] lefta[bove] lex[pr] leg[acy] lf[ile] lfd[o] lfir[st] lg[etfile] lgetb[uffer] lgete[xpr] lgr[ep] lgrepa[dd] lh[elpgrep] lhi[story] ll lla[st] lli[st] lmak[e] lne[xt] lnew[er] lnf[ile] lo[adview] loc[kmarks] lockv[ar] lol[der] lop[en] lp[revious] lpf[ile] lr[ewind] lt[ag] lua luad[o] luaf[ile] lv[imgrep] lvimgrepa[dd] lw[indow] ls m[ove] ma[rk] mak[e] marks menut[ranslate]
+syn keyword vimCommand contained mes[sages] mk[exrc] mks[ession] mksp[ell] mkv[imrc] mkvie[w] mod[e] mz[scheme] mzf[ile] n[ext] nb[key] nbc[lose] nbs[tart] noa[utocmd] noh[lsearch] nos[wapfile] nu[mber] o[pen] ol[dfiles] on[ly] opt[ions] ow[nsyntax] p[rint] pa[ckadd] packl[oadall] pc[lose] pe[rl] perld[o] ped[it] po[p] pp[op] pre[serve] prev[ious] pro[mptfind] promptr[epl] prof[ile] profd[el] ps[earch] pt[ag] ptN[ext] ptf[irst] ptj[ump] ptl[ast] ptn[ext] ptp[revious] ptr[ewind] pts[elect] pu[t] pub[lic] pw[d] py[thon] pyd[o] pyf[ile] py3 py3d[o] python3 py3f[ile] pyx pyxd[o] pythonx pyxf[ile] q[uit] quita[ll] qa[ll] r[ead] rec[over] red[o] redi[r] redr[aw] redraws[tatus] redrawt[abline] reg[isters] res[ize] ret[ab] retu[rn] rew[ind] ri[ght] rightb[elow] ru[ntime]
+syn keyword vimCommand contained rub[y] rubyd[o] rubyf[ile] rund[o] rv[iminfo] sN[ext] sa[rgument] sal[l] san[dbox] sav[eas] sb[uffer] sbN[ext] sba[ll] sbf[irst] sbl[ast] sbm[odified] sbn[ext] sbp[revious] sbr[ewind] sc[riptnames] scripte[ncoding] scriptv[ersion] scs[cope] setf[iletype] sf[ind] sfir[st] sh[ell] si[malt] sig[n] sil[ent] sla[st] sn[ext] so[urce] sor[t] sp[lit] spe[llgood] spelld[ump] spelli[nfo] spellr[epall] spellra[re] spellu[ndo] spellw[rong] spr[evious] sr[ewind] st[op] sta[g] star[tinsert] startg[replace] startr[eplace] stat[ic] stopi[nsert] stj[ump] sts[elect] sun[hide] sus[pend] sv[iew] sw[apname] synti[me] sync[bind] smi[le] t tN[ext] ta[g] tags tab tabc[lose] tabd[o] tabe[dit] tabf[ind] tabfir[st] tabm[ove] tabl[ast] tabn[ext] tabnew tabo[nly]
+syn keyword vimCommand contained tabp[revious] tabN[ext] tabr[ewind] tabs tc[d] tch[dir] tcl tcld[o] tclf[ile] te[aroff] ter[minal] tf[irst] thi[s] tj[ump] tl[ast] tn[ext] to[pleft] tp[revious] tr[ewind] try ts[elect] ty[pe] u[ndo] undoj[oin] undol[ist] unh[ide] unlo[ckvar] uns[ilent] up[date] v[global] ve[rsion] verb[ose] vert[ical] vi[sual] vie[w] vim[grep] vimgrepa[dd] vim9[cmd] viu[sage] vne[w] vs[plit] w[rite] wN[ext] wa[ll] wh[ile] wi[nsize] winc[md] wind[o] winp[os] wn[ext] wp[revious] wq wqa[ll] wu[ndo] wv[iminfo] x[it] xa[ll] xr[estore] y[ank] z dl dell delel deletl deletel dp dep delp delep deletp deletep a i
 
 " Lower priority for _new_ to distinguish constructors from the command.
 syn match   vimCommand contained	"\(\@!"
@@ -43,15 +41,15 @@ syn match   vimCommand contained	"\"
 syn keyword vimStdPlugin contained	Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man Over Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns
 
 " vimOptions are caught only when contained in a vimSet {{{2
-" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR=''
-syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns com comments cms commentstring cp compatible cpt complete cfu completefunc
-syn keyword vimOption contained cot completeopt cpp completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase
-syn keyword vimOption contained ft filetype fcs fillchars fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc
-syn keyword vimOption contained imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus
-syn keyword vimOption contained mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions
-syn keyword vimOption contained report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang
-syn keyword vimOption contained spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype udir undodir
-syn keyword vimOption contained udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes
+" GEN_SYN_VIM: vimOption normal, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
+syn keyword vimOption contained al aleph ari allowrevins ambw ambiwidth arab arabic arshape arabicshape acd autochdir ai autoindent ar autoread asd autoshelldir aw autowrite awa autowriteall bg background bs backspace bk backup bkc backupcopy bdir backupdir bex backupext bsk backupskip bdlay balloondelay beval ballooneval bevalterm balloonevalterm bexpr balloonexpr bo belloff bin binary bomb brk breakat bri breakindent briopt breakindentopt bsdir browsedir bh bufhidden bl buflisted bt buftype cmp casemap cdh cdhome cd cdpath cedit ccv charconvert cin cindent cink cinkeys cino cinoptions cinsd cinscopedecls cinw cinwords cb clipboard ch cmdheight cwh cmdwinheight cc colorcolumn co columns com comments cms commentstring cp compatible cpt complete cfu completefunc skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained cot completeopt cpp completepopup csl completeslash cocu concealcursor cole conceallevel cf confirm ci copyindent cpo cpoptions cm cryptmethod cspc cscopepathcomp csprg cscopeprg csqf cscopequickfix csre cscoperelative cst cscopetag csto cscopetagorder csverb cscopeverbose crb cursorbind cuc cursorcolumn cul cursorline culopt cursorlineopt debug def define deco delcombine dict dictionary diff dex diffexpr dip diffopt dg digraph dir directory dy display ead eadirection ed edcompatible emo emoji enc encoding eof endoffile eol endofline ea equalalways ep equalprg eb errorbells ef errorfile efm errorformat ek esckeys ei eventignore et expandtab ex exrc fenc fileencoding fencs fileencodings ff fileformat ffs fileformats fic fileignorecase skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained ft filetype fcs fillchars fixeol fixendofline fcl foldclose fdc foldcolumn fen foldenable fde foldexpr fdi foldignore fdl foldlevel fdls foldlevelstart fmr foldmarker fdm foldmethod fml foldminlines fdn foldnestmax fdo foldopen fdt foldtext fex formatexpr flp formatlistpat fo formatoptions fp formatprg fs fsync gd gdefault gfm grepformat gp grepprg gcr guicursor gfn guifont gfs guifontset gfw guifontwide ghr guiheadroom gli guiligatures go guioptions guipty gtl guitablabel gtt guitabtooltip hf helpfile hh helpheight hlg helplang hid hidden hl highlight hi history hk hkmap hkp hkmapp hls hlsearch icon iconstring ic ignorecase imaf imactivatefunc imak imactivatekey imc imcmdline imd imdisable imi iminsert ims imsearch imsf imstatusfunc skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained imst imstyle inc include inex includeexpr is incsearch inde indentexpr indk indentkeys inf infercase im insertmode isf isfname isi isident isk iskeyword isp isprint js joinspaces jop jumpoptions key kmp keymap km keymodel kpc keyprotocol kp keywordprg lmap langmap lm langmenu lnr langnoremap lrm langremap ls laststatus lz lazyredraw lbr linebreak lines lsp linespace lisp lop lispoptions lw lispwords list lcs listchars lpl loadplugins luadll magic mef makeef menc makeencoding mp makeprg mps matchpairs mat matchtime mco maxcombine mfd maxfuncdepth mmd maxmapdepth mm maxmem mmp maxmempattern mmt maxmemtot mis menuitems msm mkspellmem ml modeline mle modelineexpr mls modelines ma modifiable mod modified more mouse mousef mousefocus skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained mh mousehide mousem mousemodel mousemev mousemoveevent mouses mouseshape mouset mousetime mzq mzquantum mzschemedll mzschemegcdll nf nrformats nu number nuw numberwidth ofu omnifunc odev opendevice opfunc operatorfunc pp packpath para paragraphs paste pt pastetoggle pex patchexpr pm patchmode pa path perldll pi preserveindent pvh previewheight pvp previewpopup pvw previewwindow pdev printdevice penc printencoding pexpr printexpr pfn printfont pheader printheader pmbcs printmbcharset pmbfn printmbfont popt printoptions prompt ph pumheight pw pumwidth pythondll pythonhome pythonthreedll pythonthreehome pyx pyxversion qftf quickfixtextfunc qe quoteescape ro readonly rdt redrawtime re regexpengine rnu relativenumber remap rop renderoptions skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained report rs restorescreen ri revins rl rightleft rlc rightleftcmd rubydll ru ruler ruf rulerformat rtp runtimepath scr scroll scb scrollbind scf scrollfocus sj scrolljump so scrolloff sbo scrollopt sect sections secure sel selection slm selectmode ssop sessionoptions sh shell shcf shellcmdflag sp shellpipe shq shellquote srr shellredir ssl shellslash stmp shelltemp st shelltype sxe shellxescape sxq shellxquote sr shiftround sw shiftwidth shm shortmess sn shortname sbr showbreak sc showcmd sloc showcmdloc sft showfulltag sm showmatch smd showmode stal showtabline ss sidescroll siso sidescrolloff scl signcolumn scs smartcase si smartindent sta smarttab sms smoothscroll sts softtabstop spell spc spellcapcheck spf spellfile spl spelllang skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained spo spelloptions sps spellsuggest sb splitbelow spk splitkeep spr splitright sol startofline stl statusline su suffixes sua suffixesadd swf swapfile sws swapsync swb switchbuf smc synmaxcol syn syntax tcl tabclose tal tabline tpm tabpagemax ts tabstop tbs tagbsearch tc tagcase tfu tagfunc tl taglength tr tagrelative tag tags tgst tagstack tcldll term tbidi termbidi tenc termencoding tgc termguicolors twk termwinkey twsl termwinscroll tws termwinsize twt termwintype terse ta textauto tx textmode tw textwidth tsr thesaurus tsrfu thesaurusfunc top tildeop to timeout tm timeoutlen title titlelen titleold titlestring tb toolbar tbis toolbariconsize ttimeout ttm ttimeoutlen tbi ttybuiltin tf ttyfast ttym ttymouse tsl ttyscroll tty ttytype skipwhite nextgroup=vimSetEqual,vimSetMod
+syn keyword vimOption contained udir undodir udf undofile ul undolevels ur undoreload uc updatecount ut updatetime vsts varsofttabstop vts vartabstop vbs verbose vfile verbosefile vdir viewdir vop viewoptions vi viminfo vif viminfofile ve virtualedit vb visualbell warn wiv weirdinvert ww whichwrap wc wildchar wcm wildcharm wig wildignore wic wildignorecase wmnu wildmenu wim wildmode wop wildoptions wak winaltkeys wcr wincolor wi window wfb winfixbuf wfh winfixheight wfw winfixwidth wh winheight wmh winminheight wmw winminwidth winptydll wiw winwidth wrap wm wrapmargin ws wrapscan write wa writeany wb writebackup wd writedelay xtermcodes skipwhite nextgroup=vimSetEqual,vimSetMod
 
 " vimOptions: These are the turn-off setting variants {{{2
 " GEN_SYN_VIM: vimOption turn-off, START_STR='syn keyword vimOption contained', END_STR=''
@@ -68,8 +66,8 @@ syn keyword vimOption contained invprompt invro invreadonly invrnu invrelativenu
 syn keyword vimOption contained invtf invttyfast invudf invundofile invvb invvisualbell invwarn invwiv invweirdinvert invwic invwildignorecase invwmnu invwildmenu invwfb invwinfixbuf invwfh invwinfixheight invwfw invwinfixwidth invwrap invws invwrapscan invwrite invwa invwriteany invwb invwritebackup invxtermcodes
 
 " termcap codes (which can also be set) {{{2
-" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR=''
-syn keyword vimOption contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo
+" GEN_SYN_VIM: vimOption term output code, START_STR='syn keyword vimOption contained', END_STR='skipwhite nextgroup=vimSetEqual,vimSetMod'
+syn keyword vimOption contained t_AB t_AF t_AU t_AL t_al t_bc t_BE t_BD t_cd t_ce t_Ce t_CF t_cl t_cm t_Co t_CS t_Cs t_cs t_CV t_da t_db t_DL t_dl t_ds t_Ds t_EC t_EI t_fs t_fd t_fe t_GP t_IE t_IS t_ke t_ks t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RF t_RB t_RC t_RI t_Ri t_RK t_RS t_RT t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_Si t_so t_SR t_sr t_ST t_Te t_te t_TE t_ti t_TI t_Ts t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_VS t_vs t_WP t_WS t_XM t_xn t_xs t_ZH t_ZR t_8f t_8b t_8u t_xo skipwhite nextgroup=vimSetEqual,vimSetMod
 " term key codes
 syn keyword vimOption contained	t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ku
 syn match   vimOption contained	"t_%1"
@@ -90,8 +88,8 @@ syn keyword vimErrSetting contained invakm invaltkeymap invanti invantialias inv
 " AutoCmd Events {{{2
 syn case ignore
 " GEN_SYN_VIM: vimAutoEvent, START_STR='syn keyword vimAutoEvent contained', END_STR=''
-syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre
-syn keyword vimAutoEvent contained FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinNewPre WinResized WinScrolled
+syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme ColorSchemePre CompleteChanged CompleteDone CompleteDonePre CursorHold CursorHoldI CursorMoved CursorMovedC CursorMovedI DiffUpdated DirChanged DirChangedPre EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost
+syn keyword vimAutoEvent contained FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave InsertLeavePre KeyInputPre MenuPopup ModeChanged OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SafeState SafeStateAgain SessionLoadPost SessionWritePost ShellCmdPost ShellFilterPost SigUSR1 SourceCmd SourcePost SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TerminalWinOpen TermResponse TermResponseAll TextChanged TextChangedI TextChangedP TextChangedT TextYankPost User VimEnter VimLeave VimLeavePre VimResized VimResume VimSuspend WinClosed WinEnter WinLeave WinNew WinNewPre WinResized WinScrolled
 
 " Highlight commonly used Groupnames {{{2
 syn keyword vimGroup contained	Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo
@@ -104,20 +102,24 @@ syn case match
 
 " Function Names {{{2
 " GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', END_STR=''
-syn keyword vimFuncName contained abs acos add and append appendbufline argc argidx arglistid argv asin assert_beeps assert_equal assert_equalfile assert_exception assert_fails assert_false assert_inrange assert_match assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show balloon_split blob2list browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status changenr char2nr charclass charcol charidx chdir cindent
-syn keyword vimFuncName contained clearmatches col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbufinfo getbufline getbufoneline getbufvar getcellwidths getchangelist getchar
-syn keyword vimFuncName contained getcharmod getcharpos getcharsearch getcharstr getcmdcompltype getcmdline getcmdpos getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv indent index indexof input inputdialog inputlist inputrestore inputsave inputsecret insert
-syn keyword vimFuncName contained instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog popup_filter_menu popup_filter_yesno popup_findecho
-syn keyword vimFuncName contained popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setoptions popup_settext popup_show pow prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove rename repeat resolve reverse round rubyeval screenattr screenchar
-syn keyword vimFuncName contained screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float str2list str2nr strcharlen strcharpart strchars strdisplaywidth strftime
-syn keyword vimFuncName contained strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue test_gui_event
-syn keyword vimFuncName contained test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth wordcount writefile
-syn keyword vimFuncName contained xor
+syn keyword vimFuncName contained abs acos add and append appendbufline argc argidx arglistid argv asin assert_beeps assert_equal assert_equalfile assert_exception assert_fails assert_false assert_inrange assert_match assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show balloon_split bindtextdomain blob2list browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw ch_setoptions ch_status changenr char2nr charclass charcol charidx
+syn keyword vimFuncName contained chdir cindent clearmatches col complete complete_add complete_check complete_info confirm copy cos cosh count cscope_connection cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty environ err_teapot escape eval eventhandler executable execute exepath exists exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy filereadable filewritable filter finddir findfile flatten flattennew float2nr floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreach foreground fullcommand funcref function garbagecollect get getbufinfo getbufline getbufoneline getbufvar getcellwidths getchangelist
+syn keyword vimFuncName contained getchar getcharmod getcharpos getcharsearch getcharstr getcmdcompltype getcmdline getcmdpos getcmdscreenpos getcmdtype getcmdwintype getcompletion getcurpos getcursorcharpos getcwd getenv getfontname getfperm getfsize getftime getftype getimstatus getjumplist getline getloclist getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg getreginfo getregion getregionpos getregtype getscriptinfo gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key haslocaldir hasmapto histadd histdel histget histnr hlID hlexists hlget hlset hostname iconv id indent index indexof input inputdialog inputlist inputrestore inputsave inputsecret
+syn keyword vimFuncName contained insert instanceof interrupt invert isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions job_start job_status job_stop join js_decode js_encode json_decode json_encode keys keytrans len libcall libcallnr line line2byte lispindent list2blob list2str listener_add listener_flush listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval nextnonblank nr2char or pathshorten perleval popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog popup_filter_menu popup_filter_yesno
+syn keyword vimFuncName contained popup_findecho popup_findinfo popup_findpreview popup_getoptions popup_getpos popup_hide popup_list popup_locate popup_menu popup_move popup_notification popup_setbuf popup_setoptions popup_settext popup_show pow prevnonblank printf prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex readfile reduce reg_executing reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remote_startserver remove rename repeat resolve reverse round
+syn keyword vimFuncName contained rubyeval screenattr screenchar screenchars screencol screenpos screenrow screenstring search searchcount searchdecl searchpair searchpairpos searchpos server2client serverlist setbufline setbufvar setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace sign_unplacelist simplify sin sinh slice sort sound_clear sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest split sqrt srand state str2float str2list str2nr strcharlen strcharpart strchars
+syn keyword vimFuncName contained strdisplaywidth strftime strgetchar stridx string strlen strpart strptime strridx strtrans strutf16len strwidth submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor term_getjob term_getline term_getscrolled term_getsize term_getstatus term_gettitle term_gettty term_list term_scrape term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon
+syn keyword vimFuncName contained test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob test_null_channel test_null_dict test_null_function test_null_job test_null_list test_null_partial test_null_string test_option_not_set test_override test_refcount test_setmouse test_settime test_srand_seed test_unknown test_void timer_info timer_pause timer_start timer_stop timer_stopall tolower toupper tr trim trunc type typename undofile undotree uniq utf16idx values virtcol virtcol2col visualmode wildmenumode win_execute win_findbuf win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion winheight winlayout winline winnr winrestcmd winrestview winsaveview
+syn keyword vimFuncName contained winwidth wordcount writefile xor
 
 "--- syntax here and above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1
 
-" Set up folding commands for this syntax highlighting file {{{2
+" Set up commands for this syntax highlighting file {{{2
+
+com! -nargs=* Vim9 execute  s:vim9script ? "" : "contained"
+com! -nargs=* VimL execute  s:vim9script ? "contained" : ""
+
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhHlmpPrt]'
  if g:vimsyn_folding =~# 'a'
   com! -nargs=* VimFolda  fold
@@ -200,6 +202,14 @@ else
  let s:vimsyn_maxlines= 60
 endif
 
+" Nulls {{{2
+" =====
+Vim9 syn keyword  vim9Null	null null_blob null_channel null_class null_dict null_function null_job null_list null_object null_partial null_string
+
+" Booleans {{{2
+" ========
+Vim9 syn keyword vim9Boolean	true false
+
 " Numbers {{{2
 " =======
 syn case ignore
@@ -213,7 +223,8 @@ syn match	vimNumber	'\%(^\|\A\)\zs#\x\{6}'		skipwhite nextgroup=vimGlobal,vimSub
 syn case match
 
 " All vimCommands are contained by vimIsCommand. {{{2
-syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCatch,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimMap,vimMark,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate
+syn cluster vimCmdList	contains=vimAbb,vimAddress,vimAutoCmd,vimAugroup,vimBehave,vimCall,vimCatch,vimConst,vimDef,@vimEcho,vimEnddef,vimEndfunction,vimExecute,vimIsCommand,vimExtCmd,vimFor,vimFunction,vimGlobal,vimHighlight,vimLet,vimLoadkeymap,vimMap,vimMark,vimMatch,vimNotFunc,vimNorm,vimSet,vimSleep,vimSyntax,vimThrow,vimUnlet,vimUnmap,vimUserCmd,vimMenu,vimMenutranslate,@vim9CmdList
+syn cluster vim9CmdList	contains=vim9Const,vim9Final,vim9For,vim9Var
 syn match vimCmdSep	"[:|]\+"	skipwhite nextgroup=@vimCmdList,vimSubst1
 syn match vimIsCommand	"\<\%(\h\w*\|[23]mat\%[ch]\)\>"	contains=vimCommand
 syn match vimVar	      contained	"\<\h[a-zA-Z0-9#_]*\>"
@@ -224,7 +235,8 @@ syn match vimVar        	"\s\zs&t_k;"
 syn match vimFBVar      contained   "\<[bwglstav]:\h[a-zA-Z0-9#_]*\>"
 syn keyword vimCommand  contained	in
 
-syn cluster vimExprList contains=vimEnvvar,vimFunc,vimFuncVar,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar
+syn cluster vimExprList	contains=vimEnvvar,vimFunc,vimNumber,vimOper,vimOperParen,vimLetRegister,vimString,vimVar,@vim9ExprList
+syn cluster vim9ExprList	contains=vim9Boolean,vim9Null
 
 " Insertions And Appends: insert append {{{2
 "   (buftype != nofile test avoids having append, change, insert show up in the command window)
@@ -244,6 +256,10 @@ syn match   vimBehave	"\"	nextgroup=vimBehaveBang,vimBehaveModel,vi
 syn match   vimBehaveBang	contained	"\a\@1<=!" nextgroup=vimBehaveModel skipwhite
 syn keyword vimBehaveModel	contained	mswin	xterm
 
+" Call {{{2
+" ====
+syn match vimCall	"\"	skipwhite nextgroup=vimFunc
+
 " Exception Handling {{{2
 syn keyword	vimThrow	th[row]	skipwhite nextgroup=@vimExprList
 syn keyword	vimCatch	cat[ch]	skipwhite nextgroup=vimCatchPattern
@@ -278,8 +294,8 @@ syn keyword vimAugroupKey	contained aug[roup]  skipwhite nextgroup=vimAugroupBan
 
 " Operators: {{{2
 " =========
-syn cluster	vimOperGroup	contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar
-syn match	vimOper	"||\|&&\|[-+*/%.!]"				skipwhite nextgroup=vimString,vimSpecFile
+syn cluster	vimOperGroup	contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,@vimContinue,vim9Comment,vimVar,vimBoolean,vimNull
+syn match	vimOper	"||\|&&\|[-+*/%.!]"			skipwhite nextgroup=vimString,vimSpecFile
 syn match	vimOper	"\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
 syn match	vimOper	"\(\"			skipwhite nextgroup=vimString,vimSpecFile
 syn region	vimOperParen 	matchgroup=vimParenSep	start="(" end=")" contains=@vimOperGroup
@@ -294,8 +310,8 @@ syn cluster	vimFuncList	contains=vimFuncBang,vimFunctionError,vimFuncKey,vimFunc
 syn cluster	vimDefList	contains=vimFuncBang,vimFunctionError,vimDefKey,vimFuncSID,Tag
 
 syn cluster	vimFuncBodyCommon	contains=@vimCmdList,vimCmplxRepeat,vimContinue,vimCtrlChar,vimDef,vimEnvvar,vimFBVar,vimFunc,vimFunction,vimLetHereDoc,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegister,vimSearch,vimSpecFile,vimString,vimSubst,vimFuncFold
-syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert
-syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment
+syn cluster	vimFuncBodyList	contains=@vimFuncBodyCommon,vimComment,vimLineComment,vimFuncVar,vimInsert,vimConst,vimLet
+syn cluster	vimDefBodyList	contains=@vimFuncBodyCommon,vim9Comment,vim9LineComment,vim9Const,vim9Final,vim9Var,vim9Null,vim9Boolean,vim9For
 
 syn region	vimFuncPattern	contained		matchgroup=vimOper start="/" end="$" contains=@vimSubstList
 syn match	vimFunction	"\"	skipwhite nextgroup=vimCmdSep,vimComment,vimFuncPattern contains=vimFuncKey
@@ -315,19 +331,19 @@ syn keyword	vimFuncKey	contained	fu[nction]
 syn keyword	vimDefKey	contained	def
 syn keyword	vimMethodName	contained	empty len string
 
-syn region	vimFuncParams	contained	matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod contains=vimFuncParam,@vimContinue
-syn region	vimDefParams	contained	matchgroup=Delimiter start="("		   end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType	 contains=vimDefParam,vim9Comment
+syn region	vimFuncParams	contained	matchgroup=Delimiter start="(" skip=+\n\s*\\\|\n\s*"\\ + end=")" skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError	contains=vimFuncParam,@vimContinue
+syn region	vimDefParams	contained	matchgroup=Delimiter start="("		   end=")" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimReturnType,vimCommentError	contains=vimDefParam,vim9Comment,vimFuncParamEquals
 syn match	vimFuncParam	contained	"\<\h\w*\>\|\.\.\."	skipwhite nextgroup=vimFuncParamEquals
 syn match	vimDefParam	contained	"\<\h\w*\>"		skipwhite nextgroup=vimParamType,vimFuncParamEquals
 
 syn match	vimFuncParamEquals contained	"="			skipwhite        nextgroup=@vimExprList
-syn match	vimFuncMod	 contained	"\<\%(abort\|closure\|dict\|range\)\>"	skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod
+syn match	vimFuncMod	 contained	"\<\%(abort\|closure\|dict\|range\)\>"	skipwhite skipnl nextgroup=vimFuncBody,vimFuncComment,vimEndfunction,vimFuncMod,vim9CommentError
 
-syn region	vimFuncBody	contained	start="^"	matchgroup=vimCommand end="\"	contains=@vimFuncBodyList
-syn region	vimDefBody	contained	start="^"	matchgroup=vimCommand end="\"	contains=@vimDefBodyList
+syn region	vimFuncBody	contained	start="^.\="	matchgroup=vimCommand end="\"	contains=@vimFuncBodyList skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn region	vimDefBody	contained	start="^.\="	matchgroup=vimCommand end="\"	contains=@vimDefBodyList  skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
 
-syn match	vimEndfunction	"\"
-syn match	vimEnddef	"\"
+syn match	vimEndfunction	"\" skipwhite nextgroup=vimCmdSep,vimComment,vim9CommentError
+syn match	vimEnddef	"\"	    skipwhite nextgroup=vimCmdSep,vim9Comment,vimCommentError
 
 if exists("g:vimsyn_folding") && g:vimsyn_folding =~# 'f'
  syn region	vimFuncFold	start="^\s*:\=\s*fu\%[nction]\>!\=\s*\%(<[sS][iI][dD]>\|[sg]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)\+\s*("	end="^\s*:\=\s*endf\%[unction]\>" contains=vimFunction fold keepend extend transparent
@@ -340,9 +356,9 @@ syn match	vimFuncBlank contained	"\s\+"
 
 " Types: {{{2
 " =====
-" vimTypes : new for vim9
-syn region	vimReturnType	contained	start=":\s" end="$" matchgroup=vim9Comment end="\ze#" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef contains=vimTypeSep transparent
-syn match	vimParamType	contained	":\s\+\a"			skipwhite skipnl nextgroup=vimFuncParamEquals   	        contains=vimTypeSep,@vimType
+
+syn region	vimReturnType	contained	start=":\s" end="$" matchgroup=vim9Comment end="\ze[#"]" skipwhite skipnl nextgroup=vimDefBody,vimDefComment,vimEnddef,vimCommentError contains=vimTypeSep transparent
+syn match	vimParamType	contained	":\s"	skipwhite skipnl nextgroup=@vimType contains=vimTypeSep
 
 syn match	vimTypeSep	contained	":\s\@=" skipwhite nextgroup=@vimType
 syn keyword	vimType	contained	any blob bool channel float job number string void
@@ -369,7 +385,7 @@ else
 endif
 syn cluster vimKeymapLineComment contains=vim9\=KeymapLineComment
 
-syn region vimKeymap matchgroup=vimCommand start="\" end="\%$" contains=vimKeymapStart
+syn region vimLoadkeymap matchgroup=vimCommand start="\" end="\%$" contains=vimKeymapStart
 
 " Special Filenames, Modifiers, Extension Removal: {{{2
 " ===============================================
@@ -402,7 +418,7 @@ endif
 syn case ignore
 syn keyword	vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
 " GEN_SYN_VIM: vimUserAttrbCmplt, START_STR='syn keyword vimUserAttrbCmplt contained', END_STR=''
-syn keyword vimUserAttrbCmplt contained arglist augroup behave buffer color command compiler cscope diff_buffer dir environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages syntax syntime option packadd runtime shellcmd sign tag tag_listfiles user var breakpoint scriptnames
+syn keyword vimUserAttrbCmplt contained arglist augroup behave breakpoint buffer color command compiler cscope diff_buffer dir dir_in_path environment event expression file file_in_path filetype function help highlight history keymap locale mapclear mapping menu messages option packadd runtime scriptnames shellcmd sign syntax syntime tag tag_listfiles user var
 syn keyword	vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
 syn match	vimUserAttrbCmpltFunc contained	",\%([sS]:\|<[sS][iI][dD]>\)\=\%(\h\w*\%([.#]\h\w*\)\+\|\h\w*\)"hs=s+1 nextgroup=vimUserCmdError
 
@@ -418,35 +434,26 @@ if get(g:, "vimsyn_comment_strings", 1)
 endif
 
 if s:vim9script
-  syn match	vimComment	excludenl +\s"[^\-:.%#=*].*$+lc=1	contains=@vimCommentGroup,vimCommentString contained
-  syn match	vimComment	+\]*>\=>"
 
-syn region	vimString	oneline start=+$'+ skip=+''+ end=+'+ contains=vimStringInterpolationBrace,vimStringInterpolationExpr
-syn region	vimString	oneline start=+$"+ end=+"+ contains=@vimStringGroup,vimStringInterpolationBrace,vimStringInterpolationExpr
+syn region	vimString	oneline start=+$'+ skip=+''+ end=+'+ contains=@vimStringInterpolation
+syn region	vimString	oneline start=+$"+ end=+"+ contains=@vimStringGroup,@vimStringInterpolation
 syn region	vimStringInterpolationExpr  oneline contained matchgroup=vimSep start=+{+ end=+}+ contains=@vimExprList
 syn match	vimStringInterpolationBrace contained "{{"
 syn match	vimStringInterpolationBrace contained "}}"
+syn cluster	vimStringInterpolation contains=vimStringInterpolationExpr,vimStringInterpolationBrace
 
 " Substitutions: {{{2
 " =============
@@ -537,28 +545,45 @@ syn match	vimCmplxRepeat	'[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1
 syn match	vimCmplxRepeat	'@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)'
 
 " Set command and associated set-options (vimOptions) with comment {{{2
-syn region	vimSet		matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,@vimComment,vimSetString,vimSetMod
-syn region	vimSetEqual	contained	start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$"	contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar
-syn region	vimSetString	contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+		contains=vimCtrlChar
+syn match	vimSet		"\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skipwhite nextgroup=vimSetBang,vimSetRegion
+syn region	vimSetRegion	contained	start="\S" skip=+\\\\\|\\|\|\n\s*\\\|\n\s*["#]\\ + matchgroup=vimCmdSep end="|" end="$" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=@vimComment,@vimContinue,vimErrSetting,vimOption,vimSetAll,vimSetTermcap
+syn region	vimSetEqual	contained	matchgroup=vimOper start="[=:]\|[-+^]=" skip=+\\\\\|\\|\|\\\s\|\n\s*\\\|\n\s*["#]\\ \|^\s*\\\|^\s*["#]\\ + matchgroup=vimCmdSep end="|" end="\ze\s" end="$" contains=@vimContinue,vimCtrlChar,vimEnvvar,vimNotation,vimSetSep
+syn match	vimSetBang	contained	"\a\@1<=!" skipwhite nextgroup=vimSetAll,vimSetTermcap
+syn keyword	vimSetAll	contained	all nextgroup=vimSetMod
+syn keyword	vimSetTermcap	contained	termcap
+syn region	vimSetString	contained	start=+="+hs=s+1	skip=+\\\\\|\\"+  end=+"+	contains=vimCtrlChar
 syn match	vimSetSep	contained	"[,:]"
-syn match	vimSetMod	contained	"&vim\=\|[!&?<]\|all&"
+syn match	vimSetMod	contained	"\a\@1<=\%(&vim\=\|[!&?<]\)"
 
-" Let And Var: {{{2
-" ===========
-syn keyword	vimLet	let		skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc,vimLetRegister,vimVarList
-syn keyword	vimConst	cons[t]		skipwhite nextgroup=vimVar,vimLetHereDoc,vimVarList
-syn region	vimVarList	contained	start="\[" end="]" contains=vimVar,vimContinue
+" Variable Declarations: {{{2
+" =====================
+VimL syn keyword	vimLet	let		skipwhite nextgroup=vimVar,vimFuncVar,vimLetRegister,vimVarList
+VimL syn keyword	vimConst	cons[t]		skipwhite nextgroup=vimVar,vimVarList
+syn region	vimVarList	contained	start="\[" end="]" contains=vimVar,@vimContinue
 
-syn keyword	vimUnlet	unl[et]		skipwhite nextgroup=vimUnletBang,vimUnletVars
+VimL syn keyword	vimUnlet	unl[et]		skipwhite nextgroup=vimUnletBang,vimUnletVars
 syn match	vimUnletBang	contained	"!"	skipwhite nextgroup=vimUnletVars
 syn region	vimUnletVars	contained	start="$\I\|\h" skip="\n\s*\\" end="$" end="|" contains=vimVar,vimEnvvar,vimContinue,vimString,vimNumber
 
-VimFoldh syn region vimLetHereDoc	matchgroup=vimLetHereDocStart start='=<<\s*\%(trim\s\+\%(eval\s\+\)\=\|eval\s\+\%(trim\s\+\)\=\)\=\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' extend
-syn keyword	vimLet	var		skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc
+VimFoldh syn region vimLetHereDoc	matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*trim\%(\s\+\)\@>\z(\L\S*\)'	matchgroup=vimLetHereDocStop end='^\z1\=\z2$' extend
+VimFoldh syn region vimLetHereDoc	matchgroup=vimLetHereDocStart start='=<<\%(\s*\)\@>\z(\L\S*\)'			matchgroup=vimLetHereDocStop end='^\z1$' extend
+VimFoldh syn region vimLetHereDoc	matchgroup=vimLetHereDocStart start='\%(^\z(\s*\)\S.*\)\@<==<<\s*\%(trim\s\+eval\|eval\s\+trim\)\%(\s\+\)\@>\z(\L\S*\)'	matchgroup=vimLetHereDocStop end='^\z1\=\z2$' contains=@vimStringInterpolation extend
+VimFoldh syn region vimLetHereDoc	matchgroup=vimLetHereDocStart start='=<<\s*eval\%(\s\+\)\@>\z(\L\S*\)'			matchgroup=vimLetHereDocStop end='^\z1$' contains=@vimStringInterpolation extend
+
+Vim9 syn keyword	vim9Const	const	skipwhite nextgroup=vim9Variable,vim9VariableList
+Vim9 syn keyword	vim9Final	final	skipwhite nextgroup=vim9Variable,vim9VariableList
+Vim9 syn keyword	vim9Var	var	skipwhite nextgroup=vim9Variable,vim9VariableList
+
+syn match	vim9Variable	contained	"\<\h\w*\>"	skipwhite nextgroup=vimTypeSep,vimLetHereDoc
+syn region	vim9VariableList	contained	start="\[" end="]" contains=vim9Variable,@vimContinue
 
 " For: {{{2
 " ===
-syn keyword	vimFor	for	skipwhite nextgroup=vimVar,vimVarList
+if s:vim9script
+  syn keyword	vim9For	for	skipwhite nextgroup=vim9Variable,vim9VariableList
+else
+  syn keyword	vimFor	for	skipwhite nextgroup=vimVar,vimVarList
+endif
 
 " Abbreviations: {{{2
 " =============
@@ -602,15 +627,17 @@ syn region	vimExecute	matchgroup=vimCommand start="\" skip=+\\|\|\
 
 " Maps: {{{2
 " ====
-syn match	vimMap		"\\ze\s*(\@!" 	    skipwhite nextgroup=vimMapMod,vimMapLhs
-syn match	vimMap		"\"	skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword	vimMap	no[remap]	skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
 " GEN_SYN_VIM: vimCommand mapclear, START_STR='syn keyword vimMap', END_STR='skipwhite nextgroup=vimMapMod'
 syn keyword vimMap cmapc[lear] imapc[lear] lmapc[lear] nmapc[lear] omapc[lear] smapc[lear] tmapc[lear] vmapc[lear] xmapc[lear] skipwhite nextgroup=vimMapMod
-syn keyword	vimMap mapc[lear]	skipwhite nextgroup=vimMapBang,vimMapMod
-" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs'
-syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+syn keyword	vimMap	mapc[lear]	skipwhite nextgroup=vimMapBang,vimMapMod
+" GEN_SYN_VIM: vimCommand unmap, START_STR='syn keyword vimUnmap', END_STR='skipwhite nextgroup=vimMapMod,vimMapLhs'
+syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapMod,vimMapLhs
+syn keyword	vimUnmap	unm[ap]	skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
+
 syn match	vimMapLhs	contained	"\%(.\|\S\)\+"		contains=vimCtrlChar,vimNotation skipwhite        nextgroup=vimMapRhs
 syn match	vimMapLhs	contained	"\%(.\|\S\)\+\ze\s*$"	contains=vimCtrlChar,vimNotation skipwhite skipnl nextgroup=vimMapRhsContinue
 syn match	vimMapBang	contained	"\a\@1<=!"		skipwhite nextgroup=vimMapMod,vimMapLhs
@@ -677,6 +704,8 @@ syn match	vimFunc              	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\
 syn match	vimUserFunc	contained        	"\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\"	contains=vimNotation,vimMethodName
 syn keyword	vimFuncEcho	contained      	ec ech echo
 
+syn match	vimMap	"\\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!'
 
@@ -694,6 +723,15 @@ endif
 
 syn match vimNotFunc	"\\|\\|\\|\"	skipwhite nextgroup=vimOper,vimOperParen,vimVar,vimFunc,vimNotation
 
+" Match: {{{2
+" =====
+syn match	vimMatch		"\<[23]\=mat\%[ch]\>" skipwhite nextgroup=vimMatchGroup,vimMatchNone
+syn match	vimMatchGroup	contained	"[[:alnum:]._-]\+"    skipwhite nextgroup=vimMatchPattern
+syn case ignore
+syn keyword	vimMatchNone	contained	none
+syn case match
+syn region	vimMatchPattern	contained	matchgroup=Delimiter start="\z([!#$%&'()*+,-./:;<=>?@[\]^_`{}~]\)" skip="\\\\\|\\\z1" end="\z1" contains=@vimSubstList oneline
+
 " Norm: {{{2
 " ====
 syn match	vimNorm		"\