summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/testdir
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--runtime/syntax/testdir/dumps/html_00.dump26
-rw-r--r--runtime/syntax/testdir/dumps/html_01.dump34
-rw-r--r--runtime/syntax/testdir/dumps/html_02.dump38
-rw-r--r--runtime/syntax/testdir/dumps/html_03.dump36
-rw-r--r--runtime/syntax/testdir/dumps/html_04.dump38
-rw-r--r--runtime/syntax/testdir/dumps/html_05.dump38
-rw-r--r--runtime/syntax/testdir/dumps/html_06.dump38
-rw-r--r--runtime/syntax/testdir/dumps/html_07.dump38
-rw-r--r--runtime/syntax/testdir/dumps/html_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/html_99.dump30
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_annotations_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_enfoldment_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent2_99.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent4_99.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent8_99.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_indent_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_00.dump24
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_00.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_01.dump26
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_02.dump30
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_02.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_03.dump36
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_03.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_04.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_99.dump24
-rw-r--r--runtime/syntax/testdir/dumps/java_methods_style_99.vim2
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/java_unfoldment_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_00.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment-vim9_00.dump)6
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_01.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment-vim9_01.dump)10
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_03.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment-vim9_02.dump)16
-rw-r--r--runtime/syntax/testdir/dumps/vim9_comment_99.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment-vim9_99.dump)14
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_comment_strings_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_keymap_01.vim2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_keymap_99.vim2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim9_shebang_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim9_shebang_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_00.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment_00.dump)2
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_01.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment_01.dump)10
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_03.dump (renamed from runtime/syntax/testdir/dumps/vim_00.dump)22
-rw-r--r--runtime/syntax/testdir/dumps/vim_comment_99.dump (renamed from runtime/syntax/testdir/dumps/vim_ex_comment_99.dump)4
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_catch_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_catch_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_comment_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_comment_strings_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_def_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_func_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_func_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_07.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_09.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_function_99.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_sleep_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_03.dump2
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_04.dump24
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump16
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_throw_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_ex_throw_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_keymap_99.vim2
-rw-r--r--runtime/syntax/testdir/dumps/vim_line_continuation_02.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim_line_continuation_99.dump6
-rw-r--r--runtime/syntax/testdir/dumps/vim_shebang_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_shebang_99.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_00.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_01.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_02.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_03.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_04.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_05.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_06.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_07.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_08.dump20
-rw-r--r--runtime/syntax/testdir/dumps/vim_syntax_99.dump20
-rw-r--r--runtime/syntax/testdir/input/html.html153
-rw-r--r--runtime/syntax/testdir/input/html_html146
-rw-r--r--runtime/syntax/testdir/input/java_annotations.java78
-rw-r--r--runtime/syntax/testdir/input/java_enfoldment.java86
-rw-r--r--runtime/syntax/testdir/input/java_lambda_expressions.java154
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent.java70
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent2.java92
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent4.java92
-rw-r--r--runtime/syntax/testdir/input/java_methods_indent8.java92
-rw-r--r--runtime/syntax/testdir/input/java_methods_style.java38
-rw-r--r--runtime/syntax/testdir/input/java_unfoldment.java86
-rw-r--r--runtime/syntax/testdir/input/vim9_comment.vim (renamed from runtime/syntax/testdir/input/vim_ex_comment-vim9.vim)23
-rw-r--r--runtime/syntax/testdir/input/vim9_ex_comment_strings.vim22
-rw-r--r--runtime/syntax/testdir/input/vim9_ex_no_comment_strings.vim22
-rwxr-xr-xruntime/syntax/testdir/input/vim9_shebang.vim7
-rw-r--r--runtime/syntax/testdir/input/vim_comment.vim (renamed from runtime/syntax/testdir/input/vim_ex_comment.vim)23
-rw-r--r--runtime/syntax/testdir/input/vim_ex_catch.vim17
-rw-r--r--runtime/syntax/testdir/input/vim_ex_comment_strings.vim20
-rw-r--r--runtime/syntax/testdir/input/vim_ex_no_comment_strings.vim20
-rw-r--r--runtime/syntax/testdir/input/vim_ex_sleep.vim11
-rw-r--r--runtime/syntax/testdir/input/vim_ex_substitute.vim58
-rw-r--r--runtime/syntax/testdir/input/vim_ex_throw.vim5
-rwxr-xr-xruntime/syntax/testdir/input/vim_shebang.vim5
181 files changed, 2919 insertions, 939 deletions
diff --git a/runtime/syntax/testdir/dumps/html_00.dump b/runtime/syntax/testdir/dumps/html_00.dump
index d1b2b91..7905a3a 100644
--- a/runtime/syntax/testdir/dumps/html_00.dump
+++ b/runtime/syntax/testdir/dumps/html_00.dump
@@ -1,20 +1,20 @@
><+0#0000e05#ffffff0|!|-@1| +0#0000000&@70
| +0#0000e05&@1|H|T|M|L| |S|y|n|t|a|x| |T|e|s|t| |F|i|l|e| +0#0000000&@51
| +0#0000e05&@1|M|a|i|n|t|a|i|n|e|r|:| |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|>| +0#0000000&@26
-| +0#0000e05&@1|L|a|s|t| |C|h|a|n|g|e|:| |2|0|2|3| |N|o|v| |2|8| +0#0000000&@48
+| +0#0000e05&@1|L|a|s|t| |C|h|a|n|g|e|:| |2|0|2|4| |J|u|n| |1|3| +0#0000000&@48
+| +0#0000e05&@1|V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|h|t|m|l|_|n|o|_|r|e|n|d|e|r|i|n|g| |=| |1| +0#0000000&@30
+@75
+| +0#0000e05&@1|T|O|D|O|:| |I|n|v|e|s|t|i|g|a|t|e| |m|a|c|O|S| |t|e|s|t| |f|a|i|l|u|r|e|s| |w|h|e|n| |c|o|m|p|a|r|i|n|g| |i|t|a|l|i|c|i|z|e|d| |t|e|x|t| |w|i|t|h
+|,| +0#0000000&@73
+| +0#0000e05&@3|f|o|r| |e|x|a|m|p|l|e|,| |<|e|m|>| |a|n|d| |<|i|>| |e|l|e|m|e|n|t|s|.| @1|F|r|e@1|B|S|D| |f|a|i|l|s| |w|i|t|h| |a|n| |e|m|p|t|y| |<|s|t|r|i|k
+|e|>| +0#0000000&@72
+| +0#0000e05&@3|e|l|e|m|e|n|t|.| |S|e@1| |#|1|3|5|9|1| |a|n|d| |#|1|4|2|1|5|.| +0#0000000&@39
|-+0#0000e05&@1|>| +0#0000000&@71
@75
|<+0#0000e05&|!|-@1| |H|T|M|L| |E|l|e|m|e|n|t|s| |-@1|>| +0#0000000&@52
-|<+0#00e0e07&|a+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
-|<+0#00e0e07&|a+0#af5f00255&|b@1|r|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|a+0#af5f00255&|d@1|r|e|s@1|>+0#00e0e07&| +0#0000000&@65
+|<+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&| +0#0000000&@65
-|<+0#00e0e07&|a+0#af5f00255&|s|i|d|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|b+0#af5f00255&|>+0#00e0e07&|.+2#0000000&@2|<+0#00e0e07&|/|b+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|b+0#af5f00255&|a|s|e|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|b+0#af5f00255&|d|i|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|b+0#af5f00255&|d|o|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|b+0#af5f00255&|l|o|c|k|q|u|o|t|e|>+0#00e0e07&| +0#0000000&@62
-|"|i|n|p|u|t|/|h|t|m|l|.|h|t|m|l|"| |1|4|6|L|,| |1|4|1|7|B| @27|1|,|1| @10|T|o|p|
+|<+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
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/html_01.dump b/runtime/syntax/testdir/dumps/html_01.dump
index c855f7b..48b11e6 100644
--- a/runtime/syntax/testdir/dumps/html_01.dump
+++ b/runtime/syntax/testdir/dumps/html_01.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|a+0#af5f00255&|u|d|i|o|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|b+0#af5f00255&|>+0#00e0e07&|.+2#0000000&@2|<+0#00e0e07&|/|b+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
+|<+0#00e0e07#ffffff0|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&|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&|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&| +0#0000000&@69
-|<+0#00e0e07&|b+0#af5f00255&|d|o|>+0#00e0e07&| +0#0000000&@69
-><+0#00e0e07&|b+0#af5f00255&|l|o|c|k|q|u|o|t|e|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|b+0#af5f00255&|d|i|>+0#00e0e07&|<|/|b+0#af5f00255&|d|i|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|b+0#af5f00255&|d|o|>+0#00e0e07&|<|/|b+0#af5f00255&|d|o|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|b+0#af5f00255&|l|o|c|k|q|u|o|t|e|>+0#00e0e07&|<|/|b+0#af5f00255&|l|o|c|k|q|u|o|t|e|>+0#00e0e07&| +0#0000000&@49
+|<+0#00e0e07&|b+0#af5f00255&|o|d|y|>+0#00e0e07&|<|/|b+0#af5f00255&|o|d|y|>+0#00e0e07&| +0#0000000&@61
|<+0#00e0e07&|b+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|b+0#af5f00255&|u|t@1|o|n|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|c+0#af5f00255&|a|n|v|a|s|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|c+0#af5f00255&|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|c+0#af5f00255&|i|t|e|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&| +0#0000000&@68
+|<+0#00e0e07&|b+0#af5f00255&|u|t@1|o|n|>+0#00e0e07&|<|/|b+0#af5f00255&|u|t@1|o|n|>+0#00e0e07&| +0#0000000&@57
+|<+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
-|<+0#00e0e07&|c+0#af5f00255&|o|l|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|d+0#af5f00255&|a|t|a|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|d+0#af5f00255&|a|t|a|l|i|s|t|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|d+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|d+0#af5f00255&|e|l|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@60
-@57|1|9|,|1| @9|1|0|%|
+@57|1|9|,|1| @10|9|%|
diff --git a/runtime/syntax/testdir/dumps/html_02.dump b/runtime/syntax/testdir/dumps/html_02.dump
index 9499f2e..bc55823 100644
--- a/runtime/syntax/testdir/dumps/html_02.dump
+++ b/runtime/syntax/testdir/dumps/html_02.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|d+0#af5f00255&|e|l|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|d+0#af5f00255&|e|l|>+0#00e0e07&| +0#0000000&@60
-|<+0#00e0e07&|d+0#af5f00255&|e|t|a|i|l|s|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|d+0#af5f00255&|f|n|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|d+0#af5f00255&|i|a|l|o|g|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@69
-><+0#00e0e07&|d+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|d+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|.+4#0000000&@2|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&| +0#0000000&@62
+|<+0#00e0e07#ffffff0|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&@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|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
+|<+0#00e0e07&|d+0#af5f00255&|i|v|>+0#00e0e07&|<|/|d+0#af5f00255&|i|v|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|d+0#af5f00255&|l|>+0#00e0e07&|<|/|d+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|d+0#af5f00255&|t|>+0#00e0e07&|<|/|d+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|e+0#0000000&|m|p|h|a|s|i|s|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&| +0#0000000&@57
|<+0#00e0e07&|e+0#af5f00255&|m|b|e|d|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|f+0#af5f00255&|i|e|l|d|s|e|t|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|f+0#af5f00255&|i|g|c|a|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|f+0#af5f00255&|i|g|u|r|e|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|f+0#af5f00255&|o@1|t|e|r|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|f+0#af5f00255&|o|r|m|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|h+0#af5f00255&|1|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|1|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|h+0#af5f00255&|2|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|2|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|h+0#af5f00255&|3|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|3|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|h+0#af5f00255&|4|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|4|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|h+0#af5f00255&|5|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@62
-@57|3|7|,|1| @9|2|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|%|
diff --git a/runtime/syntax/testdir/dumps/html_03.dump b/runtime/syntax/testdir/dumps/html_03.dump
index 088da73..4953d71 100644
--- a/runtime/syntax/testdir/dumps/html_03.dump
+++ b/runtime/syntax/testdir/dumps/html_03.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|h+0#af5f00255&|5|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|5|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|h+0#af5f00255&|6|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|6|>+0#00e0e07&| +0#0000000&@62
-|<+0#00e0e07&|h+0#af5f00255&|e|a|d|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|h+0#af5f00255&|e|a|d|>+0#00e0e07&| +0#0000000&@58
-|<+0#00e0e07&|h+0#af5f00255&|e|a|d|e|r|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|h+0#af5f00255&|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@66
-><+0#00e0e07&|h+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|h+0#af5f00255&|t|m|l|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|i+0#af5f00255&|>+0#00e0e07&|.+4#0000000&@2|<+0#00e0e07&|/|i+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|i+0#af5f00255&|f|r|a|m|e|>+0#00e0e07&| +0#0000000&@66
+|<+0#00e0e07#ffffff0|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&|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&|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
+|<+0#00e0e07&|h+0#af5f00255&|g|r|o|u|p|>+0#00e0e07&|<|/|h+0#af5f00255&|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|h+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07&|h+0#af5f00255&|t|m|l|>+0#00e0e07&|<|/|h+0#af5f00255&|t|m|l|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|i+0#af5f00255&|>+0#00e0e07&|i+0#0000000&|d|i|o|m|a|t|i|c| |t|e|x|t|<+0#00e0e07&|/|i+0#af5f00255&|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07&|i+0#af5f00255&|f|r|a|m|e|>+0#00e0e07&|<|/|i+0#af5f00255&|f|r|a|m|e|>+0#00e0e07&| +0#0000000&@57
|<+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&| +0#0000000&@69
-|<+0#00e0e07&|k+0#af5f00255&|b|d|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|l+0#af5f00255&|a|b|e|l|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|l+0#af5f00255&|e|g|e|n|d|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|l+0#af5f00255&|i|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|l+0#af5f00255&|i|n|k|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|m+0#af5f00255&|a|i|n|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@69
-@57|5@1|,|1| @9|3|8|%|
+|<+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|%|
diff --git a/runtime/syntax/testdir/dumps/html_04.dump b/runtime/syntax/testdir/dumps/html_04.dump
index ef3acf7..b2416e8 100644
--- a/runtime/syntax/testdir/dumps/html_04.dump
+++ b/runtime/syntax/testdir/dumps/html_04.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|m+0#af5f00255&|a|p|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|m+0#af5f00255&|a|r|k|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|m+0#af5f00255&|e|n|u|>+0#00e0e07&| +0#0000000&@68
+|<+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&|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&|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|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
-|<+0#00e0e07&|m+0#af5f00255&|e|t|e|r|>+0#00e0e07&| +0#0000000&@67
-><+0#00e0e07&|n+0#af5f00255&|a|v|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|n+0#af5f00255&|o|s|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|o+0#af5f00255&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|o+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|o+0#af5f00255&|p|t|g|r|o|u|p|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|o+0#af5f00255&|p|t|i|o|n|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|o+0#af5f00255&|u|t|p|u|t|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
-|<+0#00e0e07&|p+0#af5f00255&|i|c|t|u|r|e|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|p+0#af5f00255&|r|e|>+0#00e0e07&|.+0#0000000&@2|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@60
-|<+0#00e0e07&|p+0#af5f00255&|r|o|g|r|e|s@1|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|q+0#af5f00255&|>+0#00e0e07&| +0#0000000&@71
-|<+0#00e0e07&|r+0#af5f00255&|p|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@70
-@57|7|3|,|1| @9|5|2|%|
+|<+0#00e0e07&|m+0#af5f00255&|e|t|e|r|>+0#00e0e07&|<|/|m+0#af5f00255&|e|t|e|r|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07&|n+0#af5f00255&|a|v|>+0#00e0e07&|<|/|n+0#af5f00255&|a|v|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|n+0#af5f00255&|o|s|c|r|i|p|t|>+0#00e0e07&|<|/|n+0#af5f00255&|o|s|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07&|o+0#af5f00255&|b|j|e|c|t|>+0#00e0e07&|<|/|o+0#af5f00255&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|o+0#af5f00255&|l|>+0#00e0e07&|<|/|o+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@65
+|<+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|%|
diff --git a/runtime/syntax/testdir/dumps/html_05.dump b/runtime/syntax/testdir/dumps/html_05.dump
index 411a4f5..20df53e 100644
--- a/runtime/syntax/testdir/dumps/html_05.dump
+++ b/runtime/syntax/testdir/dumps/html_05.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|r+0#af5f00255&|t|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|r+0#af5f00255&|u|b|y|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|s+0#af5f00255&|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|s+0#af5f00255&|a|m|p|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@54
-><+0#00e0e07&|s+0#af5f00255&|e|a|r|c|h|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|s+0#af5f00255&|e|l|e|c|t|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|s+0#af5f00255&|l|o|t|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|s+0#af5f00255&|m|a|l@1|>+0#00e0e07&| +0#0000000&@67
+|<+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&|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&|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&|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
+|-+0#0000e05&@1|>| +0#0000000&@71
+|<+0#00e0e07&|s+0#af5f00255&|a|m|p|>+0#00e0e07&|<|/|s+0#af5f00255&|a|m|p|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&|<|/|s+0#af5f00255&|c|r|i|p|t|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|s+0#af5f00255&|e|a|r|c|h|>+0#00e0e07&|<|/|s+0#af5f00255&|e|a|r|c|h|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&|<|/|s+0#af5f00255&|e|c|t|i|o|n|>+0#00e0e07&| +0#0000000&@55
+|<+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&| +0#0000000&@68
-|<+0#00e0e07&|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&|.+2#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|r|o|n|g|>+0#00e0e07&| +0#0000000&@54
-|<+0#00e0e07&|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&|.+0#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|y|l|e|>+0#00e0e07&| +0#0000000&@56
-|<+0#00e0e07&|s+0#af5f00255&|u|b|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|s+0#af5f00255&|u|m@1|a|r|y|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|s+0#af5f00255&|u|p|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|t+0#af5f00255&|a|b|l|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&| +0#0000000&@67
-@57|9|1|,|1| @9|6@1|%|
+|<+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|%|
diff --git a/runtime/syntax/testdir/dumps/html_06.dump b/runtime/syntax/testdir/dumps/html_06.dump
index 7482dce..d24392f 100644
--- a/runtime/syntax/testdir/dumps/html_06.dump
+++ b/runtime/syntax/testdir/dumps/html_06.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|t+0#af5f00255&|b|o|d|y|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|t+0#af5f00255&|d|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|t+0#af5f00255&|e|m|p|l|a|t|e|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|t+0#af5f00255&|e|x|t|a|r|e|a|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|t+0#af5f00255&|f|o@1|t|>+0#00e0e07&| +0#0000000&@67
-><+0#00e0e07&|t+0#af5f00255&|h|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|t+0#af5f00255&|h|e|a|d|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|t+0#af5f00255&|i|m|e|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&|.+0#e000e06&@2|<+0#00e0e07&|/|t+0#af5f00255&|i|t|l|e|>+0#00e0e07&| +0#0000000&@56
-|<+0#00e0e07&|t+0#af5f00255&|r|>+0#00e0e07&| +0#0000000&@70
+|<+0#00e0e07#ffffff0|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|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&|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
+|<+0#00e0e07&|t+0#af5f00255&|e|m|p|l|a|t|e|>+0#00e0e07&|<|/|t+0#af5f00255&|e|m|p|l|a|t|e|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07&|t+0#af5f00255&|e|x|t|a|r|e|a|>+0#00e0e07&|<|/|t+0#af5f00255&|e|x|t|a|r|e|a|>+0#00e0e07&| +0#0000000&@53
+|<+0#00e0e07&|t+0#af5f00255&|f|o@1|t|>+0#00e0e07&|<|/|t+0#af5f00255&|f|o@1|t|>+0#00e0e07&| +0#0000000&@59
+|<+0#00e0e07&|t+0#af5f00255&|h|>+0#00e0e07&|<|/|t+0#af5f00255&|h|>+0#00e0e07&| +0#0000000&@65
+|<+0#00e0e07&|t+0#af5f00255&|h|e|a|d|>+0#00e0e07&|<|/|t+0#af5f00255&|h|e|a|d|>+0#00e0e07&| +0#0000000&@59
+|<+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&|.+8#0000000&@2|<+0#00e0e07&|/|u+0#af5f00255&|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|u+0#af5f00255&|l|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|v+0#af5f00255&|a|r|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|v+0#af5f00255&|i|d|e|o|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|w+0#af5f00255&|b|r|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|x+0#af5f00255&|m|p|>+0#00e0e07&| +0#0000000&@69
-@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
-@57|1|0|9|,|1| @8|8|1|%|
+|<+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|%|
diff --git a/runtime/syntax/testdir/dumps/html_07.dump b/runtime/syntax/testdir/dumps/html_07.dump
index 9c5deaa..8a56d4d 100644
--- a/runtime/syntax/testdir/dumps/html_07.dump
+++ b/runtime/syntax/testdir/dumps/html_07.dump
@@ -1,20 +1,20 @@
-|<+0#0000e05#ffffff0|!|-@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&| +0#0000000&@65
-|<+0#00e0e07&|b+0#af5f00255&|i|g|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|c+0#af5f00255&|e|n|t|e|r|>+0#00e0e07&| +0#0000000&@66
-|<+0#00e0e07&|d+0#af5f00255&|i|r|>+0#00e0e07&| +0#0000000&@69
-><+0#00e0e07&|f+0#af5f00255&|o|n|t|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|p+0#af5f00255&|a|r|a|m|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|r+0#af5f00255&|b|>+0#00e0e07&| +0#0000000&@70
-|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@54
-|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@70
+|<+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&|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&|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
@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
-@57|1|2|7|,|1| @8|9|5|%|
+|<+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
+|<+0#00e0e07&|b+0#af5f00255&|i|g|>+0#00e0e07&|<|/|b+0#af5f00255&|i|g|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|c+0#af5f00255&|e|n|t|e|r|>+0#00e0e07&|<|/|c+0#af5f00255&|e|n|t|e|r|>+0#00e0e07&| +0#0000000&@57
+|<+0#00e0e07&|d+0#af5f00255&|i|r|>+0#00e0e07&|<|/|d+0#af5f00255&|i|r|>+0#00e0e07&| +0#0000000&@63
+|<+0#00e0e07&|f+0#af5f00255&|o|n|t|>+0#00e0e07&|<|/|f+0#af5f00255&|o|n|t|>+0#00e0e07&| +0#0000000&@61
+|<+0#00e0e07&|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
+@57|1|2|7|,|1| @8|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/html_08.dump b/runtime/syntax/testdir/dumps/html_08.dump
new file mode 100644
index 0000000..02a68e7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/html_08.dump
@@ -0,0 +1,20 @@
+|<+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&|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
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4|5|,|1| @8|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/html_99.dump b/runtime/syntax/testdir/dumps/html_99.dump
index 080a0c6..14866b6 100644
--- a/runtime/syntax/testdir/dumps/html_99.dump
+++ b/runtime/syntax/testdir/dumps/html_99.dump
@@ -1,20 +1,20 @@
-|<+0#00e0e07#ffffff0|f+0#af5f00255&|r|a|m|e|>+0#00e0e07&| +0#0000000&@67
-|<+0#00e0e07&|f+0#af5f00255&|r|a|m|e|s|e|t|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|m+0#af5f00255&|a|r|q|u|e@1|>+0#00e0e07&| +0#0000000&@65
-|<+0#00e0e07&|m+0#af5f00255&|e|n|u|i|t|e|m|>+0#00e0e07&| +0#0000000&@64
-|<+0#00e0e07&|n+0#af5f00255&|o|b|r|>+0#00e0e07&| +0#0000000&@68
-|<+0#00e0e07&|n+0#af5f00255&|o|f|r|a|m|e|s|>+0#00e0e07&| +0#0000000&@64
+|<+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&| +0#0000000&@70
-|<+0#00e0e07&|r+0#af5f00255&|t|c|>+0#00e0e07&| +0#0000000&@69
-|<+0#00e0e07&|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&|.+1024#0000000&@2|<+0#00e0e07&|/|s+0#af5f00255&|t|r|i|k|e|>+0#00e0e07&| +0#0000000&@54
-|<+0#00e0e07&|t+0#af5f00255&@1|>+0#00e0e07&| +0#0000000&@70
+|<+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
-@75
-|<+0#0000e05&|!|-@1| |E|x|p|e|r|i|m|e|n|t|a|l| |-@1|>| +0#0000000&@53
-><+0#00e0e07&|p+0#0000000&|o|r|t|a|l|>+0#00e0e07&| +0#0000000&@66
-@57|1|4|6|,|1| @8|B|o|t|
+><+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_00.dump b/runtime/syntax/testdir/dumps/java_annotations_00.dump
new file mode 100644
index 0000000..cb77259
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_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
+@75
+@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| @52
+|{| @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
+| +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
+| +0#00e0e07&@7|S|t|r|i|n|g| |k|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
+| +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&|;| @36
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_01.dump b/runtime/syntax/testdir/dumps/java_annotations_01.dump
new file mode 100644
index 0000000..a9810e8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_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
+| +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&|;| @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
+| +0#00e0e07&@7|L|a|b|e|l|[|]| |v|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_02.dump b/runtime/syntax/testdir/dumps/java_annotations_02.dump
new file mode 100644
index 0000000..e6eebf1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_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
+| +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
+| +0#00e0e07&@7|C|l|a|s@1|<|?|>| |t|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
+| +0#00e0e07&@7|b+0#00e0003&|o@1|l|e|a|n| +0#00e0e07&|r|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
+| +0#00e0e07&@7|T|e|x|t| |t|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
+| +0#00e0e07&@7|T|a|g| |h|e|a|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|)|;+0#0000000&| @40
+| +0#00e0e07&@7|T|a|g| |t|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_03.dump b/runtime/syntax/testdir/dumps/java_annotations_03.dump
new file mode 100644
index 0000000..0e7a0b8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_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&| @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
+@57|5@1|,|8|-|2|9| @6|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/java_annotations_04.dump b/runtime/syntax/testdir/dumps/java_annotations_04.dump
new file mode 100644
index 0000000..edd008b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_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
+| +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
+|~+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_annotations_99.dump b/runtime/syntax/testdir/dumps/java_annotations_99.dump
new file mode 100644
index 0000000..7d158f2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_99.dump
@@ -0,0 +1,20 @@
+| +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_enfoldment_00.dump b/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
new file mode 100644
index 0000000..9596869
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_00.dump
@@ -0,0 +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| +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
+| +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
new file mode 100644
index 0000000..f6feccc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_01.dump
@@ -0,0 +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| +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
+| +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|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_02.dump b/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
new file mode 100644
index 0000000..bff7ffc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_02.dump
@@ -0,0 +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|%|
diff --git a/runtime/syntax/testdir/dumps/java_enfoldment_03.dump b/runtime/syntax/testdir/dumps/java_enfoldment_03.dump
new file mode 100644
index 0000000..6e96876
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_03.dump
@@ -0,0 +1,20 @@
+|++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
new file mode 100644
index 0000000..563a92f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_04.dump
@@ -0,0 +1,20 @@
+|++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
new file mode 100644
index 0000000..771ae98
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_enfoldment_99.dump
@@ -0,0 +1,20 @@
+| +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_lambda_expressions_00.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_00.dump
new file mode 100644
index 0000000..cbcdd8a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_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
+@75
+@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| @3|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@31
+|{| @73
+| +0#00e0e07&@3|<|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#00e0e07&|t|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_01.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_01.dump
new file mode 100644
index 0000000..4753266
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_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#00e0e07&|x|)| |-|>| +0#0000000&|x|;| @41
+@8|I|<|I|1|>| |i|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|)| |-|>| +0#0000000&|x|;| @31
+@8|I|<|I|1|>| |i|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|)| |-|>| +0#0000000&|x|;| @21
+@8|I|<|I|1|>| |i|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|)| |-|>| +0#0000000&|x|;| @35
+@8|I|<|I|1|>| |i|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|)| |-|>| +0#0000000&|x|;| @25
+@8|I|<|I|1|>| |i|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|)| |-|>| +0#0000000&|x|;| @15
+@8|I|<|I|1|>| |i|0|7| |=| |(+0#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| @42
+@8|I|<|I|1|>| |i|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| @32
+@8|I|<|I|1|>| |i|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| @22
+@8|I|<|I|1|>| |i|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|>| |i|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|>| |i|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| @16
+@75
+@57|1|9|,|0|-|1| @8|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_02.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_02.dump
new file mode 100644
index 0000000..258e3c0
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|I|<|I|1|[|]|>| |i@1|0|1| |=| |(+0#00e0e07&|I|1|.@2| |x|)| |-|>| +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#00e0e07&|I|1|.@2| |x|)| |-|>| +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#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|I|1|.@2| |x|)| |-|>| +0#0000000&|x|;| @16
+@8|I|<|I|1|[|]|>| |i@1|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1|.@2| |x|)| |-|>| +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#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1|.@2| |x|)| |-|>| +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#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1|.@2| |x|)| |-|>| +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#00e0e07&|x|,| |v+0#af5f00255&|a|r| +0#00e0e07&|y|)| |-|>| +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#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|,| +0#0000000&@16
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|y|)| |-|>| +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#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&@9
+| +0#00e0e07&@19|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|y|)| |-|>| +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#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|,| +0#0000000&@20
+| +0#00e0e07&@19|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|y|)| |-|>| +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#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+| +0#00e0e07&@19|v+0#af5f00255&|a|r| +0#00e0e07&|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|y|)| |-|>| +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
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|,| +0#0000000&@32
+@57|3|7|,|3|-|9| @7|2@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_03.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_03.dump
new file mode 100644
index 0000000..094bdd6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_03.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|,| +0#0000000&@32
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|y|)| |-|>| +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|1| |x|,| |I|1| |y|)| |-|>| +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#00e0e07&|I|1| |x|,| +0#0000000&@17
+| +0#00e0e07&@19>@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|I|1| |y|)| |-|>| +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#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|I|1| +0#0000000&@10
+| +0#00e0e07&@19|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|I|1| |y|)| |-|>| +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#00e0e07&|I|1| |x|,| +0#0000000&@21
+| +0#00e0e07&@19|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |y|)| |-|>| +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#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+| +0#00e0e07&@19|I|1| |x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |y|)| |-|>| +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
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |x|,| +0#0000000&@33
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+| +0#00e0e07&@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|I|1| |y|)| |-|>| +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|,| |y|)| |-|>| +0#0000000&|x|;| @23
+@57|5@1|,|6|-|2|1| @6|3|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_04.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_04.dump
new file mode 100644
index 0000000..4f0e5a3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_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|,| |y|)| |-|>| +0#0000000&|x|;| @23
+@8|I|<|I|1|>| |i|d|1| |=| |(+0#00e0e07&|x|)| |-|>| +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|1| |x|)| |-|>| +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#00e0e07&|I|1| |x|)| |-|>| +0#0000000&|x|;| |}|)|;| @21
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|1| |=| |(+0#00e0e07&|x|)| |-|>| +0#0000000&|(+0#00e0e07&|y|)| |-|>| +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#00e0e07&|x|)|-|>|(|v+0#af5f00255&|a|r| +0#00e0e07&|y|)|-|>|(+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#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|x|)|-|>|(|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#00e0e07&|v+0#af5f00255&|a|r| +0#00e0e07&|y|)| +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_05.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_05.dump
new file mode 100644
index 0000000..98ab331
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_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_06.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_06.dump
new file mode 100644
index 0000000..2887b48
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|e|c|h|o|(|O|b|j|e|c|t| |o|)| +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_07.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
new file mode 100644
index 0000000..7749ef2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_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+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
+@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
+@75
+@57|1|2|7|,|3|-|9| @6|8|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_08.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_08.dump
new file mode 100644
index 0000000..4267ebe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_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+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
+|~+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_lambda_expressions_99.dump b/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump
new file mode 100644
index 0000000..2a1fe2a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_99.dump
@@ -0,0 +1,20 @@
+| +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_methods_indent2_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_00.dump
new file mode 100644
index 0000000..6b7595f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_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| |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
+@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
+|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| @40
+|{| |/+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_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
new file mode 100644
index 0000000..950d878
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_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|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
new file mode 100644
index 0000000..48d31d1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_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|(|)| |{| |}| @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
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
new file mode 100644
index 0000000..f388cd9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@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
+| +0#00e0e07&@63|)|;+0#0000000&| @8
+| +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&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ|ʭ@1|$|0|_|(| +0#0000000&@23
+| +0#00e0e07&@31|@+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#00e0e07&|β| |b|)|;+0#0000000&| @8
+@75
+| +0#00e0e07&@1>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @15
+| +0#00e0e07&@1|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|1|_|(| +0#0000000&@25
+| +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&| @7
+@75
+| +0#00e0e07&@1|v+0#00e0003&|o|i|d| +0#00e0e07&|A|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @53
+| +0#00e0e07&@1|<|T|,| |U| |e|x|t|e|n|d|s| |S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#00e0e07&|Μ|ʭ@1|$|2|_|(|U| |u|)| +0#0000000&|{| |}| @25
+@75
+| +0#00e0e07&@1|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @22
+| +0#00e0e07&@1|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| +0#0000000&@14
+| +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&| @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
+| +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|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
new file mode 100644
index 0000000..0d9fa98
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_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
+| +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&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_|(| +0#0000000&@4
+| +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
+@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&|;| @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
+@57|7|3|,|3| @9|9|1|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent2_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent2_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_04.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
new file mode 100644
index 0000000..204e85a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
@@ -0,0 +1,20 @@
+| +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
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_00.dump
new file mode 100644
index 0000000..d6ad7af
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_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| |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
+@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
+|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| @40
+|{| |/+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_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_00.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
new file mode 100644
index 0000000..0f154c5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_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|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
new file mode 100644
index 0000000..ed7c8fb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_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|(|)| |{| |}| @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
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
new file mode 100644
index 0000000..bed45d9
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@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
+| +0#00e0e07&@63|)|;+0#0000000&| @8
+| +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&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ|ʭ@1|$|0|_|(| +0#0000000&@21
+| +0#00e0e07&@31|@+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#00e0e07&|β| |b|)|;+0#0000000&| @8
+@75
+| +0#00e0e07&@3>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+| +0#00e0e07&@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|1|_|(| +0#0000000&@23
+| +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&| @7
+@75
+| +0#00e0e07&@3|v+0#00e0003&|o|i|d| +0#00e0e07&|A|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @51
+| +0#00e0e07&@3|<|T|,| |U| |e|x|t|e|n|d|s| |S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#00e0e07&|Μ|ʭ@1|$|2|_|(|U| |u|)| +0#0000000&|{| |}| @23
+@75
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| +0#0000000&@12
+| +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&| @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
+| +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|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
new file mode 100644
index 0000000..9eabb63
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_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
+| +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&@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
+@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&|;| @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
+@57|7|3|,|5| @9|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent4_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
new file mode 100644
index 0000000..28fa0bc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
@@ -0,0 +1,20 @@
+| +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
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_00.dump
new file mode 100644
index 0000000..8be15fe
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_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| |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
+@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
+|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| @40
+|{| |/+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_00.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
new file mode 100644
index 0000000..269034b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_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|7|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_01.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
new file mode 100644
index 0000000..e5c7acc
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_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|(|)| |{| |}| @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
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_02.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
new file mode 100644
index 0000000..e80c44d
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
@@ -0,0 +1,20 @@
+| +0#00e0e07#ffffff0@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
+| +0#00e0e07&@63|)|;+0#0000000&| @8
+| +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&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ|ʭ@1|$|0|_|(| +0#0000000&@17
+| +0#00e0e07&@31|@+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#00e0e07&|β| |b|)|;+0#0000000&| @8
+@75
+| +0#00e0e07&@7>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @9
+| +0#00e0e07&@7|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|1|_|(| +0#0000000&@19
+| +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&| @7
+@75
+| +0#00e0e07&@7|v+0#00e0003&|o|i|d| +0#00e0e07&|A|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @47
+| +0#00e0e07&@7|<|T|,| |U| |e|x|t|e|n|d|s| |S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#00e0e07&|Μ|ʭ@1|$|2|_|(|U| |u|)| +0#0000000&|{| |}| @19
+@75
+| +0#00e0e07&@7|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @16
+| +0#00e0e07&@7|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| +0#0000000&@8
+| +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&| @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
+| +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|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_03.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
new file mode 100644
index 0000000..8ec6396
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@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
+@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
+@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
+@57|7|3|,|9| @9|9|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_04.vim b/runtime/syntax/testdir/dumps/java_methods_indent8_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
new file mode 100644
index 0000000..d20fbe1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
@@ -0,0 +1,20 @@
+| +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
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent_00.dump b/runtime/syntax/testdir/dumps/java_methods_indent_00.dump
deleted file mode 100644
index 8f90e91..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
->/+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|'| +0#0000000&@15
-@75
-@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|.|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|M|e|t|h|o|d|s|T|e|s|t|s| @41
-|{+0#00e0e07&| +0#0000000&|/+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
-| +0#00e0e07&@1|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|I|n|d|e|n|t|M|e|t|h|o|d|s|T|e|s|t|s|(|)| +0#0000000&|{+0#00e0e07&| +0#0000000&|}+0#00e0e07&| +0#0000000&@38
-@75
-| +0#00e0e07&@1|r|e|c|o|r|d| |Τ|ʬ|<|α|>|(|α| |a|)| +0#0000000&|{+0#00e0e07&| +0#0000000&|}+0#00e0e07&| +0#0000000&@51
-@75
-@2|e+0#00e0003&|n|u|m| +0#0000000&|𝓔| @66
-@2|{+0#00e0e07&| +0#0000000&@71
-| +0#00e0e07&@7|A|(|"|𝕬|"|)|,| |B|(|"|𝕭|"|)|,| |C|(|"|𝕮|"|)|,| |D|(|"|𝕯|"|)|,| +0#0000000&@35
-| +0#00e0e07&@7|E|(|"|𝕰|"|)|,+0#0000000&| |F|(|"+0#e000002&|𝕱|"|)+0#0000000&|,| |G|(|"+0#e000002&|𝕲|"|)+0#0000000&|,| |H|(|"+0#e000002&|𝕳|"|)+0#0000000&|;| @35
-@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |𝐬|;| @51
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|𝓔|(|S|t|r|i|n|g| |𝐬|)| |{+0#00e0e07&| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|𝐬| |=| |𝐬|;| |}+0#00e0e07&| +0#0000000&@31
-@2|}+0#00e0e07&| +0#0000000&@71
-@75
-@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent_01.dump b/runtime/syntax/testdir/dumps/java_methods_indent_01.dump
deleted file mode 100644
index 44066c3..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#00e0e07#ffffff0@7|A|(|"|𝕬|"|)|,| |B|(|"|𝕭|"|)|,| |C|(|"|𝕮|"|)|,| |D|(|"|𝕯|"|)|,| +0#0000000&@35
-| +0#00e0e07&@7|E|(|"|𝕰|"|)|,+0#0000000&| |F|(|"+0#e000002&|𝕱|"|)+0#0000000&|,| |G|(|"+0#e000002&|𝕲|"|)+0#0000000&|,| |H|(|"+0#e000002&|𝕳|"|)+0#0000000&|;| @35
-@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |𝐬|;| @51
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|𝓔|(|S|t|r|i|n|g| |𝐬|)| |{+0#00e0e07&| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|𝐬| |=| |𝐬|;| |}+0#00e0e07&| +0#0000000&@31
-@2|}+0#00e0e07&| +0#0000000&@71
-> @74
-@2|@+0#e000e06&|T|a|r|g|e|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|.|M|E|T|H|O|D|)| @24
-@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|(+0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+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|{+0#00e0e07&| +0#0000000&@71
-| +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&| @38
-@2|}+0#00e0e07&| +0#0000000&@71
-@75
-@2|@+0#e000e06&|T|a|r|g|e|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|.|M|E|T|H|O|D|)| @24
-@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @52
-@2|{+0#00e0e07&| +0#0000000&@71
-| +0#00e0e07&@7|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;+0#0000000&| @47
-@2|}+0#00e0e07&| +0#0000000&@71
-@75
-@57|1|9|,|0|-|1| @7|2|5|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent_02.dump b/runtime/syntax/testdir/dumps/java_methods_indent_02.dump
deleted file mode 100644
index 2ab6583..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent_02.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +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|{+0#00e0e07&| +0#0000000&@71
-| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|)| +0#0000000&|{+0#00e0e07&| +0#0000000&|}+0#00e0e07&| +0#0000000&@39
-| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|Α| |μ|ʭ@1|$|0|_|(|)| +0#0000000&|{+0#00e0e07&| +0#0000000&|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@31
-@2>}+0#00e0e07&| +0#0000000&@71
-@75
-@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&@53
-| +0#00e0e07&@1|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#0000000&| @47
-@75
-@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&@53
-| +0#00e0e07&@1|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ|ʭ@1|$|0|_|(|β| |𝛽|)|;+0#0000000&| @38
-@75
-@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&@63
-| +0#00e0e07&@1|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|1|_|(|)|;+0#0000000&| @41
-@75
-@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&@63
-@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|1|_|(| @35
-@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|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)|;| @7
-@57|3|7|,|3| @9|6|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent_03.dump b/runtime/syntax/testdir/dumps/java_methods_indent_03.dump
deleted file mode 100644
index 2ce2bba..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent_03.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@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|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)|;| @7
-@75
-| +0#00e0e07&@1|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|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&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| @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|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)|;| @5
-> @74
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(+0#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+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|{+0#00e0e07&| +0#0000000&|a|s|c|i@1|$|9|8|_|(|)|;| |}+0#00e0e07&| +0#0000000&@56
-@75
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(+0#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+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&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_|(| @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|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| @6
-@2|{+0#00e0e07&| +0#0000000&@71
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
-| +0#00e0e07&@7|I|n|d|e|n|t|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[+0#0000000&|0+0#e000002&|]+0#0000000&|;| @27
-@2|}+0#00e0e07&| +0#0000000&@71
-@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#0000000&|"+0#e000002&|c|a|s|t|"|)+0#0000000&| @37
-@57|5@1|,|0|-|1| @7|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_indent_99.dump b/runtime/syntax/testdir/dumps/java_methods_indent_99.dump
deleted file mode 100644
index 36ee838..0000000
--- a/runtime/syntax/testdir/dumps/java_methods_indent_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0#00e0e07#ffffff0@1|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|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&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| @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|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)|;| @5
-@75
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(+0#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+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|{+0#00e0e07&| +0#0000000&|a|s|c|i@1|$|9|8|_|(|)|;| |}+0#00e0e07&| +0#0000000&@56
-@75
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(+0#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+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&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|9@1|_|(| @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|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)| @6
-@2|{+0#00e0e07&| +0#0000000&@71
-@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
-| +0#00e0e07&@7|I|n|d|e|n|t|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[+0#0000000&|0+0#e000002&|]+0#0000000&|;| @27
-@2|}+0#00e0e07&| +0#0000000&@71
-@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#0000000&|"+0#e000002&|c|a|s|t|"|)+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|(|)| |{| |r|e|t|u|r|n| |(|S|t|r|i|n|g|)| +0#0000000&|"+0#e000002&|I|n|d|e|n|t|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@6
->}+0#00e0e07&| +0#0000000&@73
-@57|7|0|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_00.dump b/runtime/syntax/testdir/dumps/java_methods_style_00.dump
index 01d483c..64c435b 100644
--- a/runtime/syntax/testdir/dumps/java_methods_style_00.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_style_00.dump
@@ -1,20 +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| |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
@75
-@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
|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| @42
-|{+0#00e0e07&| +0#0000000&@73
-@4|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|(|)| |{+0#00e0e07&| +0#0000000&|}+0#00e0e07&| +0#0000000&@37
-@75
-@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{+0#00e0e07&| +0#0000000&|}+0#00e0e07&| +0#0000000&@49
+|{| @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&|𝓔| @64
-@4|{+0#00e0e07&| +0#0000000&@69
-@8|A|(|"+0#e000002&|𝕬|"|)+0#0000000&|,| |B|(|"+0#e000002&|𝕭|"|)+0#0000000&|,| |C|(|"+0#e000002&|𝕮|"|)+0#0000000&|,| |D|(|"+0#e000002&|𝕯|"|)+0#0000000&|,| @35
-@8|E|(|"+0#e000002&|𝕰|"|)+0#0000000&|,| |F|(|"+0#e000002&|𝕱|"|)+0#0000000&|,| |G|(|"+0#e000002&|𝕲|"|)+0#0000000&|,| |H|(|"+0#e000002&|𝕳|"|)+0#0000000&|;| @35
-@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |𝐬|;| @51
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|𝓔|(|S|t|r|i|n|g| |𝐬|)| |{+0#00e0e07&| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|𝐬| |=| |𝐬|;| |}+0#00e0e07&| +0#0000000&@31
-@4|}+0#00e0e07&| +0#0000000&@69
+@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_00.vim b/runtime/syntax/testdir/dumps/java_methods_style_00.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_01.dump b/runtime/syntax/testdir/dumps/java_methods_style_01.dump
index c944208..70056a7 100644
--- a/runtime/syntax/testdir/dumps/java_methods_style_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_style_01.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@7|A|(|"+0#e000002&|𝕬|"|)+0#0000000&|,| |B|(|"+0#e000002&|𝕭|"|)+0#0000000&|,| |C|(|"+0#e000002&|𝕮|"|)+0#0000000&|,| |D|(|"+0#e000002&|𝕯|"|)+0#0000000&|,| @35
-@8|E|(|"+0#e000002&|𝕰|"|)+0#0000000&|,| |F|(|"+0#e000002&|𝕱|"|)+0#0000000&|,| |G|(|"+0#e000002&|𝕲|"|)+0#0000000&|,| |H|(|"+0#e000002&|𝕳|"|)+0#0000000&|;| @35
-@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |𝐬|;| @51
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|𝓔|(|S|t|r|i|n|g| |𝐬|)| |{+0#00e0e07&| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|𝐬| |=| |𝐬|;| |}+0#00e0e07&| +0#0000000&@31
-@4|}+0#00e0e07&| +0#0000000&@69
+| +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&|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|)| @22
-@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|(+0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#0000000&| @21
+@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|{+0#00e0e07&| +0#0000000&@69
+@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&| @38
-@4|}+0#00e0e07&| +0#0000000&@69
+@4|}| @69
@75
-@4|@+0#e000e06&|T|a|r|g|e|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|.|M|E|T|H|O|D|)| @22
+@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|{+0#00e0e07&| +0#0000000&@69
+@4|{| @69
| +0#00e0e07&@7|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;+0#0000000&| @47
-@4|}+0#00e0e07&| +0#0000000&@69
+@4|}| @69
@75
-@57|1|9|,|0|-|1| @7|2|7|%|
+@57|1|9|,|0|-|1| @7|2|0|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_01.vim b/runtime/syntax/testdir/dumps/java_methods_style_01.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_02.dump b/runtime/syntax/testdir/dumps/java_methods_style_02.dump
index bbdc9bb..616e1f5 100644
--- a/runtime/syntax/testdir/dumps/java_methods_style_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_style_02.dump
@@ -1,20 +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|{+0#00e0e07&| +0#0000000&@69
-| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|)| +0#0000000&|{+0#00e0e07&| +0#0000000&|}+0#00e0e07&| +0#0000000&@39
-| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|Α| |μ|ʭ@1|$|0|_|(|)| +0#0000000&|{+0#00e0e07&| +0#0000000&|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}+0#00e0e07&| +0#0000000&@31
-@4>}+0#00e0e07&| +0#0000000&@69
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|)| +0#0000000&|{| |}| @39
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +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
-| +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
-| +0#00e0e07&@31|)|;+0#0000000&| @40
-| +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&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ|ʭ@1|$|0|_|(| +0#0000000&@21
-| +0#00e0e07&@11|/+0#0000e05&|*| |T+0#0000001#ffff4012|O|D|O|:+0#0000e05#ffffff0| |@|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"|b|e|s|p|o|k|e|"|)|*|/| +0#00e0e07&|β| |𝛽|)|;+0#0000000&| @17
+@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
-| +0#00e0e07&@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
-| +0#00e0e07&@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|1|_|(| +0#0000000&@23
-| +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&| @19
+@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|(|)| |{| |}| @17
+@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|)| |{| |}| @10
+@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|)| |{| |}| @10
@75
-| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
-| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| +0#0000000&@12
-| +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&| @17
-@57|3|7|,|2|-|5| @7|6|5|%|
+@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|,|2|-|5| @7|4|9|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_02.vim b/runtime/syntax/testdir/dumps/java_methods_style_02.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_03.dump b/runtime/syntax/testdir/dumps/java_methods_style_03.dump
index e8ce44b..0656184 100644
--- a/runtime/syntax/testdir/dumps/java_methods_style_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_style_03.dump
@@ -1,20 +1,20 @@
-| +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
+| +0#00e0e07#ffffff0@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
+| +0#00e0e07&@31|)|;+0#0000000&| @40
+| +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&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ|ʭ@1|$|0|_|(| +0#0000000&@21
+| +0#00e0e07&@15|@+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#00e0e07&|β| |b|)|;+0#0000000&| @24
@75
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(+0#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+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|{+0#00e0e07&| +0#0000000&|a|s|c|i@1|$|9|8|_|(|)|;| |}+0#00e0e07&| +0#0000000&@54
-> @74
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(+0#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+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|{+0#00e0e07&| +0#0000000&@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|}+0#00e0e07&| +0#0000000&@69
+| +0#00e0e07&@3>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+| +0#00e0e07&@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|p+0#00e0003&|r|i|v|a|t|e| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ|ʭ@1|$|1|_|(| +0#0000000&@23
+| +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&| @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|@+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#0000000&|"+0#e000002&|c|a|s|t|"|)+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&|{+0#00e0e07&| +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&| |}+0#00e0e07&| +0#0000000&@5
-|}+0#00e0e07&| +0#0000000&@73
-|~+0#4040ff13&| @73
-|~| @73
-| +0#0000000&@56|5@1|,|0|-|1| @7|B|o|t|
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| +0#0000000&@12
+| +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&| @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
+@57|5@1|,|2|-|5| @7|7@1|%|
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_03.vim b/runtime/syntax/testdir/dumps/java_methods_style_03.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_methods_style_04.dump b/runtime/syntax/testdir/dumps/java_methods_style_04.dump
new file mode 100644
index 0000000..e593fe1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_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
+| +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
+|~+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_04.vim b/runtime/syntax/testdir/dumps/java_methods_style_04.vim
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_04.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
index a2e3228..e8962ce 100644
--- a/runtime/syntax/testdir/dumps/java_methods_style_99.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_style_99.dump
@@ -1,20 +1,20 @@
-| +0#00e0e07#ffffff0@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
-| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|n+0#e000e06&|a|t|i|v|e| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ|ʭ@1|$|9|8|_|(| +0#0000000&@12
-| +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&| @17
+| +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#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#0000000&| @41
+@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|{+0#00e0e07&| +0#0000000&|a|s|c|i@1|$|9|8|_|(|)|;| |}+0#00e0e07&| +0#0000000&@54
+@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#0000000&|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#0000000&| @41
+@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|{+0#00e0e07&| +0#0000000&@69
+@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|}+0#00e0e07&| +0#0000000&@69
+@4|}| @69
@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#0000000&|"+0#e000002&|c|a|s|t|"|)+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&|{+0#00e0e07&| +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&| |}+0#00e0e07&| +0#0000000&@5
->}+0#00e0e07&| +0#0000000&@73
-@57|6@1|,|1| @9|B|o|t|
+| +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
new file mode 100644
index 0000000..1509558
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_00.dump b/runtime/syntax/testdir/dumps/java_unfoldment_00.dump
new file mode 100644
index 0000000..476a795
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t|l|o|c|a|l| |n|o|f|o|l|d|e|n|a|b|l|e| +0#0000000&@35
+|/+0#0000e05&@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&@10
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|{+0#0000000&| @51
+@4|"@2| @67
+| +0#e000002&@3|b|e|s|p|o|k|e| +0#0000000&@63
+| +0#e000002&@3|/|*| +0#0000000&@68
+| +0#e000002&@4|*| +0#0000000&@68
+| +0#e000002&@4|*|/| +0#0000000&@67
+| +0#e000002&@3|/|*@1| +0#0000000&@67
+| +0#e000002&@4|*| +0#0000000&@68
+| +0#e000002&@4|*|/| +0#0000000&@67
+| +0#e000002&@3|/@1| +0#0000000&@68
+| +0#e000002&@3|/@1| +0#0000000&@68
+| +0#e000002&@3|/@1| +0#0000000&@68
+| +0#e000002&@3|{| +0#0000000&@69
+| +0#e000002&@3|}| +0#0000000&@69
+|"@2| @71
+|}|)+0#e000e06&| +0#0000000&@72
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_01.dump b/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
new file mode 100644
index 0000000..cb57834
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_01.dump
@@ -0,0 +1,20 @@
+| +0#e000002#ffffff0@3|/@1| +0#0000000&@68
+| +0#e000002&@3|/@1| +0#0000000&@68
+| +0#e000002&@3|{| +0#0000000&@69
+| +0#e000002&@3|}| +0#0000000&@69
+|"@2| @71
+>}|)+0#e000e06&| +0#0000000&@72
+|c+0#00e0003&|l|a|s@1| +0#0000000&|U|n|f|o|l|d|i|n|g|T|e|s|t|s| |{| @52
+@4|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| @48
+@4|{| @69
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @52
+@12|{| @61
+@16|{| @57
+@20|n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{@2| @38
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
new file mode 100644
index 0000000..f557d66
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|}| @57
+@12|}| @61
+@8|}|;| @64
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|0+0#e000002&|)+0#0000000&| |{| @54
+@12>c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|:+0#0000000&| @55
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|:+0#0000000&| |{| @53
+@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
+@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
+@4|{| @69
+|o+0#af5f00255&|u|t|:+0#0000000&| |{| @68
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_03.dump b/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
new file mode 100644
index 0000000..e2735a7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|b+0#af5f00255&|r|e|a|k| +0#0000000&|o+0#af5f00255&|u|t|;+0#0000000&| @48
+@8|}| |w+0#af5f00255&|h|i|l|e| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&|;| @50
+|}| @73
+@4|}| @69
+@75
+@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|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_04.dump b/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
new file mode 100644
index 0000000..aa0ed17
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|/+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|%|
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_99.dump b/runtime/syntax/testdir/dumps/java_unfoldment_99.dump
new file mode 100644
index 0000000..9e10ac4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_99.dump
@@ -0,0 +1,20 @@
+|}+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/vim_ex_comment-vim9_00.dump b/runtime/syntax/testdir/dumps/vim9_comment_00.dump
index 57b0216..46d283f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment-vim9_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_00.dump
@@ -4,16 +4,16 @@
@75
|#+0#0000e05&| |V|i|m|9|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@53
@75
-| +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#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
@75
|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@59
-| +0#0000e05&@1|"| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
+@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
|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
-| +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#0000e05&| |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/vim_ex_comment-vim9_01.dump b/runtime/syntax/testdir/dumps/vim9_comment_01.dump
index 1b0d7c9..d596208 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment-vim9_01.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_01.dump
@@ -1,20 +1,20 @@
| +0&#ffffff0@74
|d+0#af5f00255&|e|f|!| +0#0000000&|B|a|r|(+0#e000e06&|)| +0#0000000&@64
-| +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#0000e05&| |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
-| +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#0000e05&| |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
-| +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#0000e05&| |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
@75
-|#+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
+|#+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|e|n|t|s| +0#0000000&@54
@75
-@57|1|9|,|0|-|1| @7|5|9|%|
+@57|1|9|,|0|-|1| @7|2|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim9_comment_02.dump b/runtime/syntax/testdir/dumps/vim9_comment_02.dump
new file mode 100644
index 0000000..e6a4de5
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_comment_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
+| +0#0000e05&@1|\| |c|o|n|t|i|n|u|i|n|g| |c|o|m@1|e|n|t| +0#0000000&@52
+| +0#0000e05&@1|\| |c|o|n|t|i|n|u|i|n|g| |c|o|m@1|e|n|t| +0#0000000&@52
+@75
+>#+0#0000e05&| |:|F|o@1| +0#0000000&@68
+| +0#0000e05&@5|\| |a|r|g|1| +0#0000000&@62
+| +0#0000e05&@5|#|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#0000e05&@5|\| |a|r|g|2| +0#0000000&@62
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|T|O|P|"| +0#0000000&@64
+@75
+@75
+|#+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|s| +0#0000000&@46
+@75
+|:|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
+@57|3|7|,|1| @9|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment-vim9_02.dump b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
index 7de6ffb..0e424ab 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment-vim9_02.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_03.dump
@@ -1,9 +1,14 @@
-| +0&#ffffff0@74
+| +0&#ffffff0@5|#+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
+> @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&
@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
-> @74
+@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
@@ -12,9 +17,4 @@
|~| @73
|~| @73
|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|3|7|,|0|-|1| @7|B|o|t|
+| +0#0000000&@56|5@1|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment-vim9_99.dump b/runtime/syntax/testdir/dumps/vim9_comment_99.dump
index f8759da..bed55bc 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment-vim9_99.dump
+++ b/runtime/syntax/testdir/dumps/vim9_comment_99.dump
@@ -1,9 +1,9 @@
-|}+0#e000e06#ffffff0| +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|#| |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
+| +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
@@ -17,4 +17,4 @@
|#+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|4|1|,|1| @9|B|o|t|
+@57|6|4|,|1| @9|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
new file mode 100644
index 0000000..ef9f580
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_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| |c|o|m@1|e|n|t| |s|t|r|i|n|g|s| +0#0000000&@53
+|#+0#0000e05&| |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
+@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
new file mode 100644
index 0000000..72a7dfb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_01.dump
@@ -0,0 +1,20 @@
+|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#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#e000e06&| +0#0000000&@73
+|~+0#4040ff13&| @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/vim9_ex_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump
new file mode 100644
index 0000000..efaf53b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_comment_strings_99.dump
@@ -0,0 +1,20 @@
+|#+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_no_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_00.dump
new file mode 100644
index 0000000..191b9f2
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_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| |c|o|m@1|e|n|t| |s|t|r|i|n|g|s| +0#0000000&@53
+|#+0#0000e05&| |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
+@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
new file mode 100644
index 0000000..ef54148
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_01.dump
@@ -0,0 +1,20 @@
+|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#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#e000e06&| +0#0000000&@73
+|~+0#4040ff13&| @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/vim9_ex_no_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump
new file mode 100644
index 0000000..c384e74
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_ex_no_comment_strings_99.dump
@@ -0,0 +1,20 @@
+|#+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_01.vim b/runtime/syntax/testdir/dumps/vim9_keymap_01.vim
new file mode 100644
index 0000000..546837c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_keymap_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[“�]+?+ge
diff --git a/runtime/syntax/testdir/dumps/vim9_keymap_99.vim b/runtime/syntax/testdir/dumps/vim9_keymap_99.vim
new file mode 100644
index 0000000..546837c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_keymap_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[“�]+?+ge
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump
index 2f682d9..a5f1802 100644
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_legacy_header_00.dump
@@ -12,7 +12,7 @@
@75
|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@75
-| +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#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
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
index d400e31..27ff90e 100644
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
+++ b/runtime/syntax/testdir/dumps/vim9_legacy_header_99.dump
@@ -12,7 +12,7 @@
@75
|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@75
-| +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#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
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump
index b324c46..fe8e737 100644
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump
+++ b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_00.dump
@@ -3,7 +3,7 @@
@75
|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@75
-| +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#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
diff --git a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
index b3fa847..fe339c4 100644
--- a/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
+++ b/runtime/syntax/testdir/dumps/vim9_legacy_header_fold_99.dump
@@ -3,7 +3,7 @@
@75
|#+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
@75
-| +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#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
diff --git a/runtime/syntax/testdir/dumps/vim9_shebang_00.dump b/runtime/syntax/testdir/dumps/vim9_shebang_00.dump
new file mode 100644
index 0000000..3f2818c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_shebang_00.dump
@@ -0,0 +1,20 @@
+>#+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|1|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim9_shebang_99.dump b/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
new file mode 100644
index 0000000..71f543e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim9_shebang_99.dump
@@ -0,0 +1,20 @@
+|#+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_99.dump b/runtime/syntax/testdir/dumps/vim_99.dump
deleted file mode 100644
index 8e9320c..0000000
--- a/runtime/syntax/testdir/dumps/vim_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| +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
-| +0#e000e06&@17|\| +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
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|.|v|i|m|"| |1@1|L|,| |2|0|9|B| @31|1@1|,|1| @9|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_00.dump b/runtime/syntax/testdir/dumps/vim_comment_00.dump
index a1c1880..335fc3f 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_00.dump
@@ -5,7 +5,7 @@
|#| |4+0#e000002&|2| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@60
@75
|f+0#af5f00255&|u|n|c|t|i|o|n|!| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@59
-| +0#0000e05&@1|"| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
+@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
|e+0#af5f00255&|n|d|f|u|n|c|t|i|o|n| +0#0000000&@63
@75
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_01.dump b/runtime/syntax/testdir/dumps/vim_comment_01.dump
index 513f64c..ebf0c42 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_01.dump
@@ -12,9 +12,9 @@
|}+0#e000e06&| +0#0000000&@73
@75
@75
-|"+0#0000e05&| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
+|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|e|n|t|s| +0#0000000&@54
@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
-@57|1|9|,|3| @9|5|0|%|
+|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@65
+| +0#0000e05&@1|\| |c|o|n|t|i|n|u|i|n|g| |c|o|m@1|e|n|t| +0#0000000&@52
+| +0#0000e05&@1|\| |c|o|n|t|i|n|u|i|n|g| |c|o|m@1|e|n|t| +0#0000000&@52
+@57|1|9|,|3| @9|2|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_comment_02.dump b/runtime/syntax/testdir/dumps/vim_comment_02.dump
new file mode 100644
index 0000000..8e31fb6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_comment_02.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#ffffff0@1|\| |c|o|n|t|i|n|u|i|n|g| |c|o|m@1|e|n|t| +0#0000000&@52
+@75
+|"+0#0000e05&| |:|F|o@1| +0#0000000&@68
+| +0#0000e05&@5|\| |a|r|g|1| +0#0000000&@62
+| +0#0000e05&@5|"|\| |c|o|m@1|e|n|t| +0#0000000&@58
+| +0#0000e05&@5>\| |a|r|g|2| +0#0000000&@62
+@75
+|e+0#af5f00255&|c|h|o| +0#0000000&|"+0#e000002&|T|O|P|"| +0#0000000&@64
+@75
+@75
+|"+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|s| +0#0000000&@46
+@75
+|:|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
+@57|3|7|,|7| @9|6|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_00.dump b/runtime/syntax/testdir/dumps/vim_comment_03.dump
index 852148f..2d40f6c 100644
--- a/runtime/syntax/testdir/dumps/vim_00.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_03.dump
@@ -1,20 +1,20 @@
->"+0#0000e05#ffffff0| +0#0000000&|I+0#e000e06&|s@1|u|e|:| +0#0000e05&|#|1|3|0|4|7| +0#0000000&@59
+| +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
-| +0#e000e06&@17|\| +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
+@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
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|"+0#0000000&|i|n|p|u|t|/|v|i|m|.|v|i|m|"| |1@1|L|,| |2|0|9|B| @31|1|,|1| @10|A|l@1|
+@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|5@1|,|5|-|1|9| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_99.dump b/runtime/syntax/testdir/dumps/vim_comment_99.dump
index e9bcabe..bb1fbb0 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_comment_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_comment_99.dump
@@ -15,6 +15,6 @@
|"+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|#| +0#0000000&|T+0#e000e06&|i|t|l|e|:| +0#0000e05&|.@2| +0#0000000&@60
+| +0#0000e05&@1|#| |T|i|t|l|e|:| |.@2| +0#0000000&@60
>e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-@57|4|5|,|1| @9|B|o|t|
+@57|6|8|,|1| @9|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_catch_00.dump b/runtime/syntax/testdir/dumps/vim_ex_catch_00.dump
new file mode 100644
index 0000000..748c48b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_catch_00.dump
@@ -0,0 +1,20 @@
+>"+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|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump b/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump
new file mode 100644
index 0000000..39e47c1
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_catch_99.dump
@@ -0,0 +1,20 @@
+|"+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_comment_02.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_02.dump
deleted file mode 100644
index e2b6092..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_comment_02.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@17|\+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
-> @74
-|"+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|#| +0#0000000&|T+0#e000e06&|i|t|l|e|:| +0#0000e05&|.@2| +0#0000000&@60
-|e+0#af5f00255&|n|d@1|e|f| +0#0000000&@68
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|3|7|,|0|-|1| @7|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_00.dump
new file mode 100644
index 0000000..9500d07
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |c|o|m@1|e|n|t| |s|t|r|i|n|g|s| +0#0000000&@53
+|"+0#0000e05&| |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
+@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump
new file mode 100644
index 0000000..90edc97
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_comment_strings_99.dump
@@ -0,0 +1,20 @@
+|"+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_06.dump b/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
deleted file mode 100644
index f073026..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_def_06.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|e+0#af5f00255#ffffff0|n|d@1|e|f| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@58
-@75
-@75
-|"+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
-@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
-@57|1|0|9|,|1| @8|9|7|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_func_00.dump b/runtime/syntax/testdir/dumps/vim_ex_func_00.dump
deleted file mode 100644
index d89f64e..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_func_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
->"+0#0000e05#ffffff0| |Y|N|T|A|X|_|E|X|E| |l|e|t| |g|:|v|i|m|s|y|n|_|n|o|e|r@1|o|r| |=| |1| +0#0000000&@38
-@75
-|f+0#af5f00255&|u|n|c| +0#0000000&|d+0#ffffff16#ff404010|o|i|t|(+0#e000e06#ffffff0|)| +0#0000000&@63
-@75
-|e+0#af5f00255&|n|d|f|u|n|c| +0#0000000&@67
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@74
diff --git a/runtime/syntax/testdir/dumps/vim_ex_func_99.dump b/runtime/syntax/testdir/dumps/vim_ex_func_99.dump
deleted file mode 100644
index f4ec08f..0000000
--- a/runtime/syntax/testdir/dumps/vim_ex_func_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|"+0#0000e05#ffffff0| |Y|N|T|A|X|_|E|X|E| |l|e|t| |g|:|v|i|m|s|y|n|_|n|o|e|r@1|o|r| |=| |1| +0#0000000&@38
-@75
-|f+0#af5f00255&|u|n|c| +0#0000000&|d+0#ffffff16#ff404010|o|i|t|(+0#e000e06#ffffff0|)| +0#0000000&@63
-@75
->e+0#af5f00255&|n|d|f|u|n|c| +0#0000000&@67
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@74
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
index 40b00b0..8438849 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_07.dump
@@ -5,7 +5,7 @@
@75
>f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
@2|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|4+0#e000002&|2| +0#0000000&@63
-| +0#0000e05&@1|"| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@51
+@2|"+0#0000e05&| |t|r|a|i|l|i|n|g| |w|h|i|t|e|s|p|a|c|e| +0#0000000&@51
|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|o@1|(+0#e000e06&|)| +0#0000000&@60
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
index 94f80da..4c2a626 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_09.dump
@@ -10,7 +10,7 @@
|"+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
-| +0#0000e05&@1|"| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
+@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
diff --git a/runtime/syntax/testdir/dumps/vim_ex_function_99.dump b/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
index 7eed707..b00e2ac 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_function_99.dump
@@ -4,7 +4,7 @@
|"+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
-| +0#0000e05&@1|"| |L|e|g|a|c|y|-|s|c|r|i|p|t| |c|o|m@1|e|n|t| +0#0000000&@49
+@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
diff --git a/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_00.dump b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_00.dump
new file mode 100644
index 0000000..245eab6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_00.dump
@@ -0,0 +1,20 @@
+>"+0#0000e05#ffffff0| |V|i|m| |c|o|m@1|e|n|t| |s|t|r|i|n|g|s| +0#0000000&@53
+|"+0#0000e05&| |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
+@57|1|,|1| @10|T|o|p|
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
new file mode 100644
index 0000000..8559c6c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_no_comment_strings_99.dump
@@ -0,0 +1,20 @@
+|"+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_sleep_00.dump b/runtime/syntax/testdir/dumps/vim_ex_sleep_00.dump
new file mode 100644
index 0000000..002b9ff
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_sleep_00.dump
@@ -0,0 +1,20 @@
+>"+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| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump b/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump
new file mode 100644
index 0000000..4fc3d5e
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_sleep_99.dump
@@ -0,0 +1,20 @@
+|"+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_01.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump
index 806101c..a9624de 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_01.dump
@@ -17,4 +17,4 @@
|f+0#af5f00255&|u|n|c|t|i|o|n| +0#0000000&|F|o@1|(+0#e000e06&|)| +0#0000000&@60
| +0#af5f00255&@1|s|u|b|s|t|i|t|u|t|e|/+0#e000e06&|f+0#0000000&|o@1|/+0#e000e06&|b+0#0000000&|a|r|/+0#e000e06&| +0#0000000&@53
@2|l+0#af5f00255&|e|t| +0#0000000&|b+0#00e0e07&|a|r| +0#0000000&|=+0#af5f00255&| +0#0000000&|s|t|r|-+0#af5f00255&|>|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&@25
-@57|1|9|,|1| @9|1|9|%|
+@57|1|9|,|1| @9|1|0|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump
index b0e722d..fed54f9 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_02.dump
@@ -17,4 +17,4 @@
|s+0#af5f00255&|'+0#e000e06&|/+0#0000000&|'+0#e000e06&|/+0#0000000&@1|'+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000e05#ffffff0|-| |m|a|t|c|h|e|s| |v|i|m|U|s|e|r|F|u|n|c| +0#0000000&@45
|"+0#0000e05&| |s|(|/|(|/@1|(| |"| |c|o|m@1|e|n|t| +0#0000000&@55
-@57|3|7|,|3| @9|4|6|%|
+@57|3|7|,|3| @9|2|4|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_03.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_03.dump
index cb12bb3..68aac6b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_03.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_03.dump
@@ -17,4 +17,4 @@
|"+0#0000e05&| |s|\|/|\|/@1|\| |"| |c|o|m@1|e|n|t| |(|d|i|s|a|l@1|o|w|e|d|)| +0#0000000&@42
|s+0#af5f00255&|]+0#e000e06&|/+0#0000000&|]+0#e000e06&|/+0#0000000&@1|]+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
|s+0#af5f00255&|^+0#e000e06&|/+0#0000000&|^+0#e000e06&|/+0#0000000&@1|^+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-@57|5@1|,|1| @9|7|3|%|
+@57|5@1|,|1| @9|3|9|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_04.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_04.dump
index b378260..8d95e9b 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_04.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_04.dump
@@ -6,15 +6,15 @@
>s+0#af5f00255&|}+0#e000e06&|/+0#0000000&|}+0#e000e06&|/+0#0000000&@1|}+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
|s+0#af5f00255&|~+0#e000e06&|/+0#0000000&|~+0#e000e06&|/+0#0000000&@1|~+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
@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
-@75
-@57|7|3|,|1| @9|B|o|t|
+|s+0#af5f00255&| +0#0000000&|!+0#e000e06&|/+0#0000000&|!+0#e000e06&|/+0#0000000&@1|!+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|"+0#0000e05&| |s| |"+0#e000002&|/|"|/+0#0000e05&@1|"| |"| |c|o|m@1|e|n|t| |(|w|o|r|k|s| |b|u|t| |d|i|s|a|l@1|o|w|e|d|)| +0#0000000&@31
+|s+0#af5f00255&| +0#0000000&|#+0#e000e06&|/+0#0000000&|#+0#e000e06&|/+0#0000000&@1|#+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|$+0#e000e06&|/+0#0000000&|$+0#e000e06&|/+0#0000000&@1|$+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|%+0#e000e06&|/+0#0000000&|%+0#e000e06&|/+0#0000000&@1|%+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|&+0#e000e06&|/+0#0000000&|&+0#e000e06&|/+0#0000000&@1|&+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|'+0#e000e06&|/+0#0000000&|'+0#e000e06&|/+0#0000000&@1|'+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|"+0#0000e05&| |F+0#0000001#ffff4012|I|X|M|E| +0#0000e05#ffffff0|-| |m|a|t|c|h|e|s| |v|i|m|U|s|e|r|F|u|n|c| +0#0000000&@45
+|"+0#0000e05&| |s| |(|/|(|/@1|(| |"| |c|o|m@1|e|n|t| +0#0000000&@54
+|s+0#af5f00255&| +0#0000000&|)+0#e000e06&|/+0#0000000&|)+0#e000e06&|/+0#0000000&@1|)+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|/+0#0000000&@1|*+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+@57|7|3|,|1| @9|5|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_05.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_05.dump
new file mode 100644
index 0000000..58cc3c8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_05.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0| +0#0000000&|*+0#e000e06&|/+0#0000000&|*+0#e000e06&|/+0#0000000&@1|*+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|++0#e000e06&|/+0#0000000&|++0#e000e06&|/+0#0000000&@1|++0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|,+0#e000e06&|/+0#0000000&|,+0#e000e06&|/+0#0000000&@1|,+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|-+0#e000e06&|/+0#0000000&|-+0#e000e06&|/+0#0000000&@1|-+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|.+0#e000e06&|/+0#0000000&|.+0#e000e06&|/+0#0000000&@1|.+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+>s+0#af5f00255&| +0#0000000&|/+0#e000e06&|X+0#0000000&|/+0#e000e06&|X+0#0000000&@1|/+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|:+0#e000e06&|/+0#0000000&|:+0#e000e06&|/+0#0000000&@1|:+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|;+0#e000e06&|/+0#0000000&|;+0#e000e06&|/+0#0000000&@1|;+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|<+0#e000e06&|/+0#0000000&|<+0#e000e06&|/+0#0000000&@1|<+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|=+0#e000e06&|/+0#0000000&|=+0#e000e06&|/+0#0000000&@1|=+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|>+0#e000e06&|/+0#0000000&|>+0#e000e06&|/+0#0000000&@1|>+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|?+0#e000e06&|/+0#0000000&|?+0#e000e06&|/+0#0000000&@1|?+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|@+0#e000e06&|/+0#0000000&|@+0#e000e06&|/+0#0000000&@1|@+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|[+0#e000e06&|/+0#0000000&|[+0#e000e06&|/+0#0000000&@1|[+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|"+0#0000e05&| |s| |\|/|\|/@1|\| |"| |c|o|m@1|e|n|t| |(|d|i|s|a|l@1|o|w|e|d|)| +0#0000000&@41
+|s+0#af5f00255&| +0#0000000&|]+0#e000e06&|/+0#0000000&|]+0#e000e06&|/+0#0000000&@1|]+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|^+0#e000e06&|/+0#0000000&|^+0#e000e06&|/+0#0000000&@1|^+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|_+0#e000e06&|/+0#0000000&|_+0#e000e06&|/+0#0000000&@1|_+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|`+0#e000e06&|/+0#0000000&|`+0#e000e06&|/+0#0000000&@1|`+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+@57|9|1|,|1| @9|6|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_06.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_06.dump
new file mode 100644
index 0000000..e4f5474
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_06.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0| +0#0000000&|`+0#e000e06&|/+0#0000000&|`+0#e000e06&|/+0#0000000&@1|`+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|{+0#e000e06&|/+0#0000000&|{+0#e000e06&|/+0#0000000&@1|{+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|"+0#0000e05&| |s| |||/|||/@1||| |"| |c|o|m@1|e|n|t| |(|d|i|s|a|l@1|o|w|e|d|)| +0#0000000&@41
+|s+0#af5f00255&| +0#0000000&|}+0#e000e06&|/+0#0000000&|}+0#e000e06&|/+0#0000000&@1|}+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+|s+0#af5f00255&| +0#0000000&|~+0#e000e06&|/+0#0000000&|~+0#e000e06&|/+0#0000000&@1|~+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@56
+> @74
+|s+0#af5f00255&|/+0#e000e06&@1|{+0#0000000&|s|t|r|i|n|g|}|/+0#e000e06&| +0#0000000&@62
+|s+0#af5f00255&| +0#0000000&|/+0#e000e06&@1|{+0#0000000&|s|t|r|i|n|g|}|/+0#e000e06&| +0#0000000&@61
+@75
+@75
+|"+0#0000e05&| |V|i| |c|o|m|p|a|t|i|b|i|l|i|t|y| +0#0000000&@56
+@75
+|s+0#af5f00255&|\+0#e000e06&|/|{+0#0000000&|s|t|r|i|n|g|}|/+0#e000e06&| +0#0000000&@62
+|s+0#af5f00255&|\+0#e000e06&|?|{+0#0000000&|s|t|r|i|n|g|}|?+0#e000e06&| +0#0000000&@62
+|s+0#af5f00255&|\+0#e000e06&|&|{+0#0000000&|s|t|r|i|n|g|}|&+0#e000e06&| +0#0000000&@62
+@75
+|s+0#af5f00255&| +0#0000000&|\+0#e000e06&|/|{+0#0000000&|s|t|r|i|n|g|}|/+0#e000e06&| +0#0000000&@61
+|s+0#af5f00255&| +0#0000000&|\+0#e000e06&|?|{+0#0000000&|s|t|r|i|n|g|}|?+0#e000e06&| +0#0000000&@61
+|s+0#af5f00255&| +0#0000000&|\+0#e000e06&|&|{+0#0000000&|s|t|r|i|n|g|}|&+0#e000e06&| +0#0000000&@61
+@57|1|0|9|,|0|-|1| @6|8|2|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_07.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_07.dump
new file mode 100644
index 0000000..29caf89
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_07.dump
@@ -0,0 +1,20 @@
+|s+0#af5f00255#ffffff0| +0#0000000&|\+0#e000e06&|&|{+0#0000000&|s|t|r|i|n|g|}|&+0#e000e06&| +0#0000000&@61
+@75
+@75
+|"+0#0000e05&| |T|r|a|i|l|i|n|g| |c|o|m@1|e|n|t| |a|n|d| |b|a|r| +0#0000000&@48
+@75
+>"+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
+@57|1|2|7|,|1| @8|9|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump b/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
index 88cb7dc..6864a4a 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_substitute_99.dump
@@ -1,10 +1,10 @@
-|s+0#af5f00255#ffffff0|^+0#e000e06&|/+0#0000000&|^+0#e000e06&|/+0#0000000&@1|^+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-|s+0#af5f00255&|_+0#e000e06&|/+0#0000000&|_+0#e000e06&|/+0#0000000&@1|_+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-|s+0#af5f00255&|`+0#e000e06&|/+0#0000000&|`+0#e000e06&|/+0#0000000&@1|`+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-|s+0#af5f00255&|{+0#e000e06&|/+0#0000000&|{+0#e000e06&|/+0#0000000&@1|{+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-|"+0#0000e05&| |s|||/|||/@1||| |"| |c|o|m@1|e|n|t| |(|d|i|s|a|l@1|o|w|e|d|)| +0#0000000&@42
-|s+0#af5f00255&|}+0#e000e06&|/+0#0000000&|}+0#e000e06&|/+0#0000000&@1|}+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
-|s+0#af5f00255&|~+0#e000e06&|/+0#0000000&|~+0#e000e06&|/+0#0000000&@1|~+0#e000e06&| +0#0000000&|"+0#0000e05&| |c|o|m@1|e|n|t| +0#0000000&@57
+| +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
@@ -17,4 +17,4 @@
@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|8|6|,|0|-|1| @7|B|o|t|
+@57|1|4@1|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
index ade5bd5..5240e4e 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_09.dump
@@ -12,9 +12,9 @@
|"+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
-| +0#0000e05&@1|"| |.@2| +0#0000000&@67
+@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
-| +0#0000e05&@3|"| |.@2| +0#0000000&@65
+@4|"+0#0000e05&| |.@2| +0#0000000&@65
@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-| +0#0000e05&@1|"| |.@2| +0#0000000&@67
+@2|"+0#0000e05&| |.@2| +0#0000000&@67
@57|1|6|3|,|7| @8|9@1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump b/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
index c1942c8..c06ac66 100644
--- a/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_ex_syntax_99.dump
@@ -11,10 +11,10 @@
|"+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
-| +0#0000e05&@1|"| |.@2| +0#0000000&@67
+@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
-| +0#0000e05&@3|"| |.@2| +0#0000000&@65
+@4|"+0#0000e05&| |.@2| +0#0000000&@65
@2|e+0#af5f00255&|n|d|f|o|r| +0#0000000&@66
-| +0#0000e05&@1|"| |.@2| +0#0000000&@67
+@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_00.dump b/runtime/syntax/testdir/dumps/vim_ex_throw_00.dump
new file mode 100644
index 0000000..c4089e8
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_throw_00.dump
@@ -0,0 +1,20 @@
+>"+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|1|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump b/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump
new file mode 100644
index 0000000..b53fff4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_ex_throw_99.dump
@@ -0,0 +1,20 @@
+|"+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_keymap_99.vim b/runtime/syntax/testdir/dumps/vim_keymap_99.vim
new file mode 100644
index 0000000..546837c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_keymap_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[“�]+?+ge
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
index c4ceded..e18a56d 100644
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_02.dump
@@ -9,11 +9,11 @@
@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
-| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
+@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
-| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
+@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
-| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
+@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
|~+0#4040ff13&| @73
diff --git a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump b/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
index 05ea464..3e2c83d 100644
--- a/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
+++ b/runtime/syntax/testdir/dumps/vim_line_continuation_99.dump
@@ -10,11 +10,11 @@
@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
-| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |1| +0#0000000&@56
+@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
-| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |2| +0#0000000&@56
+@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
-| +0#0000e05&@5|"|\| |e|l|e|m|e|n|t| |3| +0#0000000&@56
+@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_shebang_00.dump b/runtime/syntax/testdir/dumps/vim_shebang_00.dump
new file mode 100644
index 0000000..c79da44
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_shebang_00.dump
@@ -0,0 +1,20 @@
+>#+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|1|,|1| @10|A|l@1|
diff --git a/runtime/syntax/testdir/dumps/vim_shebang_99.dump b/runtime/syntax/testdir/dumps/vim_shebang_99.dump
new file mode 100644
index 0000000..0102412
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/vim_shebang_99.dump
@@ -0,0 +1,20 @@
+|#+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_syntax_00.dump b/runtime/syntax/testdir/dumps/vim_syntax_00.dump
deleted file mode 100644
index 916f96d..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_00.dump
+++ /dev/null
@@ -1,20 +0,0 @@
->"+0#0000e05#ffffff0| |V|i|m| |:|s|y|n|t|a|x| |c|o|m@1|a|n|d| +0#0000000&@53
-@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&|"+0#e000002&|p|a|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"+0#0000e05&| |t|a|i|l| |c|o|m@1|e|n|t| +0#0000000&@20
-|"+0#0000e05&| +0#0000000&|N+0#e000e06&|O|T|E|:| +0#0000e05&|c|o|m@1|e|n|t|s| |n|o|t| |c|u|r@1|e|n|t|l|y| |s|u|p@1|o|r|t|e|d| +0#0000000&@34
-|s+0#af5f00255&|y|n| +0#0000000&|k+0#00e0003&|e|y|w|o|r|d| +0#0000000&|t+0#00e0003&|e|s|t|K|e|y|w|o|r|d| +0#0000000&|k|e|y|w|o|r|d| |c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @18
-|s+0#af5f00255&|y|n| +0#0000000&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +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&|s+0#00e0003&|k|i|p|=|"+0#e000002&|s|k|i|p|-|p|a|t@1|e|r|n|"| +0#0000000&|e+0#00e0003&|n|d|=|"+0#e000002&|e|n|d|-|p|a
-|t@1|e|r|n|"| +0#0000000&|c+0#e000e06&|o|n|t|a|i|n|e|d| +0#0000000&|"| |t|a|i|l| |c|o|m@1|e|n|t| @43
-@75
-|"+0#0000e05&| |M|u|l|t|i|l|i|n|e| |c|o|m@1|a|n|d|s| +0#0000000&@54
-@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|K|e|y|w|o|r|d| +0#0000000&@51
-@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&|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
-@57|1|,|1| @10|T|o|p|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_01.dump b/runtime/syntax/testdir/dumps/vim_syntax_01.dump
deleted file mode 100644
index 800e4a7..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_01.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|"+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&|\| |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
-@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
-@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&|\| |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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_02.dump b/runtime/syntax/testdir/dumps/vim_syntax_02.dump
deleted file mode 100644
index 1caffc1..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_02.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+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
-|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
-@6|\+0#e000e06&| +0#0000000&|/+0#e000002&| +0#0000000&@65
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |1| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
-| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|1|a| |.|*| |p|a|t|1|b| +0#0000000&@53
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |2| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
-| +0#e000002&@5|\+0#e000e06&|p+0#e000002&|a|t|2|a| |.|*| |p|a|t|2|b| +0#0000000&@53
-| +0#e000002&@5|"+0#0000e05&|\| |p|a|r|t| |3| |d|e|s|c|r|i|p|t|i|o|n| +0#0000000&@47
-| +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|2|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_03.dump b/runtime/syntax/testdir/dumps/vim_syntax_03.dump
deleted file mode 100644
index 31ab527..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_03.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|"+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&|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&|\| |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
-@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
-@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|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_04.dump b/runtime/syntax/testdir/dumps/vim_syntax_04.dump
deleted file mode 100644
index d5d9f40..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_04.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|\+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&|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
-@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
-@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&|r+0#00e0003&|e|g|i|o|n| +0#0000000&|t+0#00e0003&|e|s|t|R|e|g|i|o|n| +0#0000000&@53
-@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|6|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_05.dump b/runtime/syntax/testdir/dumps/vim_syntax_05.dump
deleted file mode 100644
index 47d60c2..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_05.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|"+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@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&|\| |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
-@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|8|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_06.dump b/runtime/syntax/testdir/dumps/vim_syntax_06.dump
deleted file mode 100644
index db1872c..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_06.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|"+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&|\| |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
-@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
-@6|"+0#0000e05&|\| |c|o|n|c|e|a|l|e|n|d|s| |o|p|t|i|o|n| +0#0000000&@47
-@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|7|1|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_07.dump b/runtime/syntax/testdir/dumps/vim_syntax_07.dump
deleted file mode 100644
index eb36317..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_07.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-| +0&#ffffff0@5|"+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#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
-@6|"+0#0000e05&|\| |O|P|T|I|O|N|S| +0#0000000&@58
-@6|"+0#0000e05&|\| |a|d@1| |o|p|t|i|o|n| +0#0000000&@55
-@6|\+0#e000e06&| +0#0000000&|a+0#e000e06&|d@1|=|t+0#0000000&|e|s|t|A|d@1| @55
-@6|"+0#0000e05&|\| |r|e|m|o|v|e| |o|p|t|i|o|n| +0#0000000&@52
-@6|\+0#e000e06&| +0#0000000&|r+0#e000e06&|e|m|o|v|e|=|t+0#0000000&|e|s|t|R|e|m|o|v|e| @49
-@75
-@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|8|3|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_08.dump b/runtime/syntax/testdir/dumps/vim_syntax_08.dump
deleted file mode 100644
index 3906e55..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_08.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|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
-|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|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
-|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|9| +0#0000000&|k|e|y|w|o|r|d| @45
-@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|K|e|y|w|o|r|d| +0#0000000&@51
-@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|=| +0#0000000&@56
-@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|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|9|5|%|
diff --git a/runtime/syntax/testdir/dumps/vim_syntax_99.dump b/runtime/syntax/testdir/dumps/vim_syntax_99.dump
deleted file mode 100644
index 4ca16c6..0000000
--- a/runtime/syntax/testdir/dumps/vim_syntax_99.dump
+++ /dev/null
@@ -1,20 +0,0 @@
-|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|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
-|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|9| +0#0000000&|k|e|y|w|o|r|d| @45
-@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|K|e|y|w|o|r|d| +0#0000000&@51
-@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|=| +0#0000000&@56
-@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|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
-@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
-> @74
-@57|1|6|4|,|0|-|1| @6|B|o|t|
diff --git a/runtime/syntax/testdir/input/html.html b/runtime/syntax/testdir/input/html.html
new file mode 100644
index 0000000..a4d0eb5
--- /dev/null
+++ b/runtime/syntax/testdir/input/html.html
@@ -0,0 +1,153 @@
+<!--
+ HTML Syntax Test File
+ Maintainer: Doug Kearns <dougkearns@gmail.com>
+ Last Change: 2024 Jun 13
+ VIM_TEST_SETUP let g:html_no_rendering = 1
+
+ TODO: Investigate macOS test failures when comparing italicized text with,
+ for example, <em> and <i> elements. FreeBSD fails with an empty <strike>
+ element. See #13591 and #14215.
+-->
+
+<!-- HTML Elements -->
+<a></a>
+<abbr></abbr>
+<address></address>
+<area>
+<article></article>
+<aside></aside>
+<audio></audio>
+<b>bring attention to</b>
+<base>
+<bdi></bdi>
+<bdo></bdo>
+<blockquote></blockquote>
+<body></body>
+<br>
+<button></button>
+<canvas></canvas>
+<caption></caption>
+<cite></cite>
+<code></code>
+<col>
+<colgroup></colgroup>
+<data></data>
+<datalist></datalist>
+<dd></dd>
+<del>deleted text</del>
+<details></details>
+<dfn></dfn>
+<dialog></dialog>
+<div></div>
+<dl></dl>
+<dt></dt>
+<em>emphasis</em>
+<embed>
+<fieldset></fieldset>
+<figcaption></figcaption>
+<figure></figure>
+<footer></footer>
+<form></form>
+<h1>Heading Level 1</h1>
+<h2>Heading Level 3</h2>
+<h3>Heading Level 4</h3>
+<h4>Heading Level 4</h4>
+<h5>Heading Level 5</h5>
+<h6>Heading Level 6</h6>
+<head></head>
+<header></header>
+<hgroup></hgroup>
+<hr>
+<html></html>
+<i>idiomatic text</i>
+<iframe></iframe>
+<img>
+<input>
+<ins></ins>
+<kbd></kbd>
+<label></label>
+<legend></legend>
+<li></li>
+<link>
+<main></main>
+<map></map>
+<mark></mark>
+<menu></menu>
+<meta>
+<meter></meter>
+<nav></nav>
+<noscript></noscript>
+<object></object>
+<ol></ol>
+<optgroup></optgroup>
+<option></option>
+<output></output>
+<p></p>
+<picture></picture>
+<pre>preformatted text</pre>
+<progress></progress>
+<q></q>
+<rp></rp>
+<rt></rt>
+<ruby></ruby>
+<!-- FreeBSD failure
+<s>strikethrough</s>
+-->
+<samp></samp>
+<script></script>
+<search></search>
+<section></section>
+<select></select>
+<slot></slot>
+<small></small>
+<source>
+<span></span>
+<strong>strong importance</strong>
+<style></style>
+<sub></sub>
+<summary></summary>
+<sup></sup>
+<table></table>
+<tbody></tbody>
+<td></td>
+<template></template>
+<textarea></textarea>
+<tfoot></tfoot>
+<th></th>
+<thead></thead>
+<time></time>
+<title></title>
+<tr></tr>
+<track>
+<u>unarticulated annotation</u>
+<ul></ul>
+<var></var>
+<video></video>
+<wbr>
+<xmp></xmp>
+
+<!-- Deprecated Elements -->
+<acronym></acronym>
+<big></big>
+<center></center>
+<dir></dir>
+<font></font>
+<frame></frame>
+<frameset></frameset>
+<marquee></marquee>
+<menuitem></menuitem>
+<nobr></nobr>
+<noframes></noframes>
+<param>
+<rb></rb>
+<rtc></rtc>
+<strike>strikethrough</strike>
+<tt></tt>
+
+<!-- Experimental - not highlighted -->
+<portal></portal>
+
+<!-- Note: these deprecated elements have never been matched -->
+<image>
+<noembed>
+<plaintext>
diff --git a/runtime/syntax/testdir/input/html_html b/runtime/syntax/testdir/input/html_html
deleted file mode 100644
index bfeca26..0000000
--- a/runtime/syntax/testdir/input/html_html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!--
- HTML Syntax Test File
- Maintainer: Doug Kearns <dougkearns@gmail.com>
- Last Change: 2023 Nov 28
--->
-
-<!-- HTML Elements -->
-<a>
-<abbr>
-<address>
-<area>
-<article>
-<aside>
-<audio>
-<b>...</b>
-<base>
-<bdi>
-<bdo>
-<blockquote>
-<body>
-<br>
-<button>
-<canvas>
-<caption>
-<cite>
-<code>
-<col>
-<colgroup>
-<data>
-<datalist>
-<dd>
-<del>...</del>
-<details>
-<dfn>
-<dialog>
-<div>
-<dl>
-<dt>
-<em>...</em>
-<embed>
-<fieldset>
-<figcaption>
-<figure>
-<footer>
-<form>
-<h1>...</h1>
-<h2>...</h2>
-<h3>...</h3>
-<h4>...</h4>
-<h5>...</h5>
-<h6>...</h6>
-<head>...</head>
-<header>
-<hgroup>
-<hr>
-<html>
-<i>...</i>
-<iframe>
-<img>
-<input>
-<ins>
-<kbd>
-<label>
-<legend>
-<li>
-<link>
-<main>
-<map>
-<mark>
-<menu>
-<meta>
-<meter>
-<nav>
-<noscript>
-<object>
-<ol>
-<optgroup>
-<option>
-<output>
-<p>
-<picture>
-<pre>...</pre>
-<progress>
-<q>
-<rp>
-<rt>
-<ruby>
-<s>...</s>
-<samp>
-<script>...</script>
-<search>
-<section>
-<select>
-<slot>
-<small>
-<source>
-<span>
-<strong>...</strong>
-<style>...</style>
-<sub>
-<summary>
-<sup>
-<table>
-<tbody>
-<td>
-<template>
-<textarea>
-<tfoot>
-<th>
-<thead>
-<time>
-<title>...</title>
-<tr>
-<track>
-<u>...</u>
-<ul>
-<var>
-<video>
-<wbr>
-<xmp>
-
-<!-- Deprecated Elements -->
-<acronym>
-<big>
-<center>
-<dir>
-<font>
-<frame>
-<frameset>
-<marquee>
-<menuitem>
-<nobr>
-<noframes>
-<param>
-<rb>
-<rtc>
-<strike>...</strike>
-<tt>
-
-<!-- Note: these deprecated elements have never been matched -->
-<image>
-<noembed>
-<plaintext>
-
-<!-- Experimental -->
-<portal>
diff --git a/runtime/syntax/testdir/input/java_annotations.java b/runtime/syntax/testdir/input/java_annotations.java
new file mode 100644
index 0000000..c5871c3
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_annotations.java
@@ -0,0 +1,78 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+class AnnotationsTests
+{
+ @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 = AnnotationsTests.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 = AnnotationsTests.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
new file mode 100644
index 0000000..b534122
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_enfoldment.java
@@ -0,0 +1,86 @@
+// VIM_TEST_SETUP setlocal foldenable foldcolumn=2 foldmethod=syntax
+// VIM_TEST_SETUP let g:java_mark_braces_in_parens_as_errors = 1
+
+ @SuppressWarnings({
+ """
+ bespoke
+ /*
+ *
+ */
+ /**
+ *
+ */
+ //
+ //
+ //
+ {
+ }
+"""
+})
+class FoldingTests {
+ interface Foldenable
+ {
+ }
+
+ static {
+ new Object() {
+ {
+ {
+ new Object() {{{
+ new Object() {{{}}};
+ }}};
+ }
+ }
+ };
+
+ switch (0) {
+ case 0:
+ case 1: {
+ break;
+ }
+ default: ;
+ };
+ }
+
+ { Object bb = ((Object) new byte[]{}); }
+ {
+out: {
+ do {
+ if (true)
+ break out;
+ } while (false);
+}
+ }
+
+ /**
+ * No operation.
+ */
+ void noOp1() { }
+ /** No operation. */
+ void noOp2()
+ {
+ }
+ /** No operation. */
+ void noOp3() {
+ }
+ /** No operation. */
+ void noOp4() {
+ /*/\/\/\*/ ; }
+}
+
+/*
+ * Some note.
+ * {
+ * }
+ */
+/**
+ * A summary.
+ * {
+ * }
+ */
+//
+// {
+// }
+
+/* 122|..........................................................................................*/ interface Foldenable {
+}
diff --git a/runtime/syntax/testdir/input/java_lambda_expressions.java b/runtime/syntax/testdir/input/java_lambda_expressions.java
new file mode 100644
index 0000000..75f5af4
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_lambda_expressions.java
@@ -0,0 +1,154 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+
+
+import java.lang.annotation.ElementType;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+class LambdaExpressionsTests // JDK 21+.
+{
+ <I1, C1, C2, T1, T2, T3, Z1, Z2, Z3, S1, S2, S3> void test()
+ { // Schönfinkel's functions.
+ I<I1> i = x -> x;
+ C<C1, C2> c = x -> y -> x;
+ T<T1, T2, T3> t = f -> y -> x -> f.apply(x).apply(y);
+ Z<Z1, Z2, Z3> z = f -> g -> x -> f.apply(g.apply(x));
+ S<S1, S2, S3> s = f -> g -> x -> f.apply(x)
+ .apply(g.apply(x));
+
+ I<I1> i01 = (var x) -> x;
+ I<I1> i02 = (@Taggable var x) -> x;
+ I<I1> i03 = (@Taggable @Taggable var x) -> x;
+ I<I1> i04 = (final var x) -> x;
+ I<I1> i05 = (@Taggable final var x) -> x;
+ I<I1> i06 = (@Taggable @Taggable final var x) -> x;
+ I<I1> i07 = (I1 x) -> x;
+ I<I1> i08 = (@Taggable I1 x) -> x;
+ I<I1> i09 = (@Taggable @Taggable I1 x) -> x;
+ I<I1> i10 = (final I1 x) -> x;
+ I<I1> i11 = (@Taggable final I1 x) -> x;
+ I<I1> i12 = (@Taggable @Taggable final I1 x) -> x;
+
+ I<I1[]> ii01 = (I1... x) -> x;
+ I<I1[]> ii02 = (@Taggable I1... x) -> x;
+ I<I1[]> ii03 = (@Taggable @Taggable I1... x) -> x;
+ I<I1[]> ii04 = (final I1... x) -> x;
+ I<I1[]> ii05 = (@Taggable final I1... x) -> x;
+ I<I1[]> ii06 = (@Taggable @Taggable final I1... x) -> x;
+
+ BinaryOperator<I1> leftConst01 = (var x, var y) -> x;
+ BinaryOperator<I1> leftConst02 = (@Taggable var x,
+ @Taggable var y) -> x;
+ BinaryOperator<I1> leftConst03 = (@Taggable @Taggable var
+ x, @Taggable @Taggable var y) -> x;
+ BinaryOperator<I1> leftConst04 = (final var x,
+ final var y) -> x;
+ BinaryOperator<I1> leftConst05 = (@Taggable final
+ var x, @Taggable final var y) -> x;
+ BinaryOperator<I1> leftConst06 = (@Taggable
+ @Taggable final var x,
+ @Taggable
+ @Taggable final var y) -> x;
+ BinaryOperator<I1> leftConst07 = (I1 x, I1 y) -> x;
+ BinaryOperator<I1> leftConst08 = (@Taggable I1 x,
+ @Taggable I1 y) -> x;
+ BinaryOperator<I1> leftConst09 = (@Taggable @Taggable I1
+ x, @Taggable @Taggable I1 y) -> x;
+ BinaryOperator<I1> leftConst10 = (final I1 x,
+ final I1 y) -> x;
+ BinaryOperator<I1> leftConst11 = (@Taggable final
+ I1 x, @Taggable final I1 y) -> x;
+ BinaryOperator<I1> leftConst12 = (@Taggable
+ @Taggable final I1 x,
+ @Taggable
+ @Taggable final I1 y) -> x;
+
+ Runnable noOp = () -> {};
+ BinaryOperator<I1> leftConst = (x, y) -> x;
+ I<I1> id1 = (x) -> (x);
+ @SuppressWarnings("unchecked") I<I1> id2 =
+ ((I<I<I1>>) (I<?>) (Function<I1,
+ I1> x) -> x).apply(switch (0) {
+ case ((int) (byte) 1) -> (I1 x) -> x;
+ default -> (@Taggable I1 x) -> x; });
+ C<C1, C2> const1 = (x) -> (y) -> (x);
+ C<C1, C2> 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<A1> extends Function<A1, A1> { }
+ interface C<A1, A2> extends Function<A1, Function<A2, A1>> { }
+ interface T<A1, A2, A3> extends
+ Function<Function<A1, Function<A2, A3>>,
+ Function<A2,
+ Function<A1, A3>>> { }
+ interface Z<A1, A2, A3> extends Function<Function<A2, A3>,
+ Function<Function<A1, A2>,
+ Function<A1, A3>>> { }
+ interface S<A1, A2, A3> extends
+ Function<Function<A1, Function<A2, A3>>,
+ Function<Function<A1, A2>,
+ Function<A1, A3>>> { }
+
+ 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 !"<empty>".equals(switch (str) {
+ case String str_ when
+ Predicate.<String>not(text ->
+ !text.isEmpty())
+ .test(str_)
+ -> "<empty>";
+ case String str_ -> str_;
+ }): { echo(str); break; }
+ case null: default: { echo("Other"); }
+ };
+
+ echo(switch (null) {
+ case String str when !"<empty>".equals(
+ switch (str) {
+ case String str_ when
+ Predicate.<String>not(text ->
+ !text.isEmpty())
+ .test(str_)
+ -> "<empty>";
+ case String str_ -> str_;
+ }) -> str;
+ case null, default -> "Other";
+ });
+ }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent.java b/runtime/syntax/testdir/input/java_methods_indent.java
deleted file mode 100644
index 627eb8b..0000000
--- a/runtime/syntax/testdir/input/java_methods_indent.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// VIM_TEST_SETUP let g:java_highlight_functions = 'indent'
-
-
-import java.lang.annotation.Target;
-
-abstract class IndentMethodsTests
-{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
- protected IndentMethodsTests() { }
-
- record Τʬ<α>(α a) { }
-
- enum 𝓔
- {
- A("𝕬"), B("𝕭"), C("𝕮"), D("𝕯"),
- E("𝕰"), F("𝕱"), G("𝕲"), H("𝕳");
- final String 𝐬;
- private 𝓔(String 𝐬) { this.𝐬 = 𝐬; }
- }
-
- @Target(java.lang.annotation.ElementType.METHOD)
- @java.lang.annotation.Repeatable(Tɐggablɘs.class)
- @interface Tɐggablɘ
- {
- String[] value() default "";
- }
-
- @Target(java.lang.annotation.ElementType.METHOD)
- @interface Tɐggablɘs
- {
- Tɐggablɘ[] value();
- }
-
- interface Stylable<Α>
- {
- default void ascii$0_() { }
- default Α μʭʭ$0_() { return null; }
- }
-
- @Tɐggablɘ @Tɐggablɘ
- abstract void ascii$0_();
-
- @Tɐggablɘ @Tɐggablɘ
- abstract <α, β> Τʬ<α> μʭʭ$0_(β 𝛽);
-
- @Tɐggablɘ
- private native void ascii$1_();
-
- @Tɐggablɘ
- private native <α, β> Τʬ<α>[] μʭʭ$1_(
- java.util.function.Function<β, Τʬ<α>[]> ƒ);
-
- 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
- IndentMethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
- }
-
- @Override @SuppressWarnings("cast")
- public String toString() { return (String) "IndentMethodsTests"; }
-}
diff --git a/runtime/syntax/testdir/input/java_methods_indent2.java b/runtime/syntax/testdir/input/java_methods_indent2.java
new file mode 100644
index 0000000..58a6900
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent2.java
@@ -0,0 +1,92 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent2'
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent2MethodsTests
+{ // 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 Indent2MethodsTests() { }
+ <T extends Comparable<T>> Indent2MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Indent2MethodsTests(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_() { }
+ <T, U extends Stylable<T>> 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
+ Indent2MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Indent2MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Indent2MethodsTests"; }
+}
+
+enum E2
+{
+ @SuppressWarnings("bespoke") A("a"),
+ B("b"),
+ C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E2(String s) { this.s = s; }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent4.java b/runtime/syntax/testdir/input/java_methods_indent4.java
new file mode 100644
index 0000000..972cdf3
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent4.java
@@ -0,0 +1,92 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent4'
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent4MethodsTests
+{ // 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 Indent4MethodsTests() { }
+ <T extends Comparable<T>> Indent4MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Indent4MethodsTests(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_() { }
+ <T, U extends Stylable<T>> 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
+ Indent4MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Indent4MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Indent4MethodsTests"; }
+}
+
+enum E4
+{
+ @SuppressWarnings("bespoke") A("a"),
+ B("b"),
+ C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E4(String s) { this.s = s; }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_indent8.java b/runtime/syntax/testdir/input/java_methods_indent8.java
new file mode 100644
index 0000000..40fd26b
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent8.java
@@ -0,0 +1,92 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent8'
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent8MethodsTests
+{ // 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 Indent8MethodsTests() { }
+ <T extends Comparable<T>> Indent8MethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> Indent8MethodsTests(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_() { }
+ <T, U extends Stylable<T>> 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
+ Indent8MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+ }
+
+ public static Class<?> classLock() { return Indent8MethodsTests.class; }
+
+ @Override @SuppressWarnings("cast")
+ public String toString() { return (String) "Indent8MethodsTests"; }
+}
+
+enum E8
+{
+ @SuppressWarnings("bespoke") A("a"),
+ B("b"),
+ C("c"), D("d"),
+ E("e"), F("f"), G("g"), H("h");
+ final String s;
+ private E8(String s) { this.s = s; }
+}
diff --git a/runtime/syntax/testdir/input/java_methods_style.java b/runtime/syntax/testdir/input/java_methods_style.java
index b3e36fb..e2e7d38 100644
--- a/runtime/syntax/testdir/input/java_methods_style.java
+++ b/runtime/syntax/testdir/input/java_methods_style.java
@@ -1,30 +1,30 @@
// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
-
+import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
abstract class StyleMethodsTests
{
- protected StyleMethodsTests() { }
-
+ // TYPES.
record Τʬ<α>(α a) { }
- enum 𝓔
+ enum E
{
- A("𝕬"), B("𝕭"), C("𝕮"), D("𝕯"),
- E("𝕰"), F("𝕱"), G("𝕲"), H("𝕳");
- final String 𝐬;
- private 𝓔(String 𝐬) { this.𝐬 = 𝐬; }
+ 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(java.lang.annotation.ElementType.METHOD)
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
@java.lang.annotation.Repeatable(Tɐggablɘs.class)
@interface Tɐggablɘ
{
String[] value() default "";
}
- @Target(java.lang.annotation.ElementType.METHOD)
+ @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
@interface Tɐggablɘs
{
Tɐggablɘ[] value();
@@ -36,15 +36,29 @@ abstract class StyleMethodsTests
default Α μʭʭ$0_() { return null; }
}
+ // FIELDS.
+ private static final Class<?> CLASS_LOCK = classLock();
+
+ private final Object instanceLock = new Object();
+
+ // CONSTRUCTORS.
+ @Tɐggablɘ @Tɐggablɘ protected StyleMethodsTests() { }
+ <T extends Comparable<T>> StyleMethodsTests(T t, Void v) { }
+ private <T extends Comparable<T>> StyleMethodsTests(T t) { }
+
+ // METHODS.
@Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
);
@Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
- /* TODO: @SuppressWarnings("bespoke")*/ β 𝛽);
+ @SuppressWarnings("bespoke") β b);
@Tɐggablɘ private native void ascii$1_(/*////////////*/);
@Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
java.util.function.Function<β, Τʬ<α>[]> ƒ);
+ void Ascii$2_() { }
+ <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
static final native synchronized void ascii$98_();
static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
java.util.function.Function<β, Τʬ<α>[][]> ƒ);
@@ -61,6 +75,8 @@ abstract class StyleMethodsTests
StyleMethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
}
+ public static Class<?> classLock() { return StyleMethodsTests.class; }
+
@Override @SuppressWarnings("cast")
public String toString() { return (String) "StyleMethodsTests"; }
}
diff --git a/runtime/syntax/testdir/input/java_unfoldment.java b/runtime/syntax/testdir/input/java_unfoldment.java
new file mode 100644
index 0000000..78dd234
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_unfoldment.java
@@ -0,0 +1,86 @@
+// VIM_TEST_SETUP setlocal nofoldenable
+// VIM_TEST_SETUP let g:java_mark_braces_in_parens_as_errors = 1
+
+ @SuppressWarnings({
+ """
+ bespoke
+ /*
+ *
+ */
+ /**
+ *
+ */
+ //
+ //
+ //
+ {
+ }
+"""
+})
+class UnfoldingTests {
+ interface Unfoldenable
+ {
+ }
+
+ static {
+ new Object() {
+ {
+ {
+ new Object() {{{
+ new Object() {{{}}};
+ }}};
+ }
+ }
+ };
+
+ switch (0) {
+ case 0:
+ case 1: {
+ break;
+ }
+ default: ;
+ };
+ }
+
+ { Object bb = ((Object) new byte[]{}); }
+ {
+out: {
+ do {
+ if (true)
+ break out;
+ } while (false);
+}
+ }
+
+ /**
+ * No operation.
+ */
+ void noOp1() { }
+ /** No operation. */
+ void noOp2()
+ {
+ }
+ /** No operation. */
+ void noOp3() {
+ }
+ /** No operation. */
+ void noOp4() {
+ /*/\/\/\*/ ; }
+}
+
+/*
+ * Some note.
+ * {
+ * }
+ */
+/**
+ * A summary.
+ * {
+ * }
+ */
+//
+// {
+// }
+
+/* 122|........................................................................................*/ interface Unfoldenable {
+}
diff --git a/runtime/syntax/testdir/input/vim_ex_comment-vim9.vim b/runtime/syntax/testdir/input/vim9_comment.vim
index 786d11b..fd6a5d2 100644
--- a/runtime/syntax/testdir/input/vim_ex_comment-vim9.vim
+++ b/runtime/syntax/testdir/input/vim9_comment.vim
@@ -28,6 +28,29 @@ autocmd BufNewFile * {
}
+# Multiline comments
+
+# comment
+ \ continuing comment
+ \ continuing comment
+
+# :Foo
+ \ arg1
+ #\ comment
+ \ arg2
+
+echo "TOP"
+
+
+# Line-continuation comments
+
+:Foo
+ #\ line continuation comment
+ \ arg1
+ #\ line continuation comment
+ \ arg2
+
+
# Issue: #13047
if !exists(":DiffOrig")
diff --git a/runtime/syntax/testdir/input/vim9_ex_comment_strings.vim b/runtime/syntax/testdir/input/vim9_ex_comment_strings.vim
new file mode 100644
index 0000000..fd02c1a
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_comment_strings.vim
@@ -0,0 +1,22 @@
+vim9script
+
+# Vim comment strings
+# VIM_TEST_SETUP let g:vimsyn_comment_strings = v:true
+
+# pre "string" post
+
+function Foo()
+ " pre "string" post
+endfunction
+
+def Bar()
+ # pre "string" post
+enddef
+
+command Foo {
+ # pre "string" post
+}
+
+autocmd BufNewFile * {
+ # pre "string" post
+}
diff --git a/runtime/syntax/testdir/input/vim9_ex_no_comment_strings.vim b/runtime/syntax/testdir/input/vim9_ex_no_comment_strings.vim
new file mode 100644
index 0000000..dcea14d
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_ex_no_comment_strings.vim
@@ -0,0 +1,22 @@
+vim9script
+
+# Vim comment strings
+# VIM_TEST_SETUP let g:vimsyn_comment_strings = v:false
+
+# pre "string" post
+
+function Foo()
+ " pre "string" post
+endfunction
+
+def Bar()
+ # pre "string" post
+enddef
+
+command Foo {
+ # pre "string" post
+}
+
+autocmd BufNewFile * {
+ # pre "string" post
+}
diff --git a/runtime/syntax/testdir/input/vim9_shebang.vim b/runtime/syntax/testdir/input/vim9_shebang.vim
new file mode 100755
index 0000000..c012fd9
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim9_shebang.vim
@@ -0,0 +1,7 @@
+#!/usr/bin/env vim -S
+vim9script
+
+# Vim shebang line
+
+# just a line comment
+#!/usr/bin/env vim -S
diff --git a/runtime/syntax/testdir/input/vim_ex_comment.vim b/runtime/syntax/testdir/input/vim_comment.vim
index 54e514e..f382f8d 100644
--- a/runtime/syntax/testdir/input/vim_ex_comment.vim
+++ b/runtime/syntax/testdir/input/vim_comment.vim
@@ -25,6 +25,29 @@ autocmd BufNewFile * {
}
+" Multiline comments
+
+" comment
+ \ continuing comment
+ \ continuing comment
+
+" :Foo
+ \ arg1
+ "\ comment
+ \ arg2
+
+echo "TOP"
+
+
+" Line-continuation comments
+
+:Foo
+ "\ line continuation comment
+ \ arg1
+ "\ line continuation comment
+ \ arg2
+
+
" Issue: #13047
if !exists(":DiffOrig")
diff --git a/runtime/syntax/testdir/input/vim_ex_catch.vim b/runtime/syntax/testdir/input/vim_ex_catch.vim
new file mode 100644
index 0000000..f0e2a8f
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_catch.vim
@@ -0,0 +1,17 @@
+" Vim :catch command
+
+" :help :catch
+
+catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C)
+catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors
+catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts
+catch /^Vim(write):/ " catch all errors in :write
+catch /^Vim\%((\a\+)\)\=:E123:/ " catch error E123
+catch /my-exception/ " catch user exception
+catch /.*/ " catch everything
+catch " same as /.*/
+
+" :help :try
+
+try | sleep 100 | catch /^Vim:Interrupt$/ | endtry
+try | edit | catch /^Vim(edit):E\d\+/ | echo "error" | endtry
diff --git a/runtime/syntax/testdir/input/vim_ex_comment_strings.vim b/runtime/syntax/testdir/input/vim_ex_comment_strings.vim
new file mode 100644
index 0000000..4214d6b
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_comment_strings.vim
@@ -0,0 +1,20 @@
+" Vim comment strings
+" VIM_TEST_SETUP let g:vimsyn_comment_strings = v:true
+
+" pre "string" post
+
+function Foo()
+ " pre "string" post
+endfunction
+
+def Bar()
+ # pre "string" post
+enddef
+
+command Foo {
+ # pre "string" post
+}
+
+autocmd BufNewFile * {
+ # pre "string" post
+}
diff --git a/runtime/syntax/testdir/input/vim_ex_no_comment_strings.vim b/runtime/syntax/testdir/input/vim_ex_no_comment_strings.vim
new file mode 100644
index 0000000..d9b53b3
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_no_comment_strings.vim
@@ -0,0 +1,20 @@
+" Vim comment strings
+" VIM_TEST_SETUP let g:vimsyn_comment_strings = v:false
+
+" pre "string" post
+
+function Foo()
+ " pre "string" post
+endfunction
+
+def Bar()
+ # pre "string" post
+enddef
+
+command Foo {
+ # pre "string" post
+}
+
+autocmd BufNewFile * {
+ # pre "string" post
+}
diff --git a/runtime/syntax/testdir/input/vim_ex_sleep.vim b/runtime/syntax/testdir/input/vim_ex_sleep.vim
new file mode 100644
index 0000000..49fd31e
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_sleep.vim
@@ -0,0 +1,11 @@
+" Vim :sleep command
+
+sleep " sleep for one second
+5 sleep " sleep for five seconds
+sleep 100m " sleep for 100 milliseconds
+100 sleep m " sleep for 100 milliseconds
+
+sleep! " sleep for one second
+5 sleep! " sleep for five seconds
+sleep! 100m " sleep for 100 milliseconds
+100 sleep! m " sleep for 100 milliseconds
diff --git a/runtime/syntax/testdir/input/vim_ex_substitute.vim b/runtime/syntax/testdir/input/vim_ex_substitute.vim
index 340d573..021060a 100644
--- a/runtime/syntax/testdir/input/vim_ex_substitute.vim
+++ b/runtime/syntax/testdir/input/vim_ex_substitute.vim
@@ -73,6 +73,64 @@ s{/{//{ " comment
s}/}//} " comment
s~/~//~ " comment
+s !/!//! " comment
+" s "/"//" " comment (works but disallowed)
+s #/#//# " comment
+s $/$//$ " comment
+s %/%//% " comment
+s &/&//& " comment
+s '/'//' " comment
+" FIXME - matches vimUserFunc
+" s (/(//( " comment
+s )/)//) " comment
+s */*//* " comment
+s +/+//+ " comment
+s ,/,//, " comment
+s -/-//- " comment
+s ././/. " comment
+s /X/XX/ " comment
+s :/://: " comment
+s ;/;//; " comment
+s </<//< " comment
+s =/=//= " comment
+s >/>//> " comment
+s ?/?//? " comment
+s @/@//@ " comment
+s [/[//[ " comment
+" s \/\//\ " comment (disallowed)
+s ]/]//] " comment
+s ^/^//^ " comment
+s _/_//_ " comment
+s `/`//` " comment
+s {/{//{ " comment
+" s |/|//| " comment (disallowed)
+s }/}//} " comment
+s ~/~//~ " comment
+
+s//{string}/
+s //{string}/
+
+
+" Vi compatibility
+
+s\/{string}/
+s\?{string}?
+s\&{string}&
+
+s \/{string}/
+s \?{string}?
+s \&{string}&
+
+
+" Trailing comment and bar
+
+" FIXME: trailing comment, no whitespace
+s" comment
+s| echo "Foo"
+
+s " comment
+s | echo "Foo"
+
" Issue #13883
diff --git a/runtime/syntax/testdir/input/vim_ex_throw.vim b/runtime/syntax/testdir/input/vim_ex_throw.vim
new file mode 100644
index 0000000..4adbc88
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_ex_throw.vim
@@ -0,0 +1,5 @@
+" Vim :throw command
+
+" :help :throw
+
+try | throw "oops" | catch /^oo/ | echo "caught" | endtry
diff --git a/runtime/syntax/testdir/input/vim_shebang.vim b/runtime/syntax/testdir/input/vim_shebang.vim
new file mode 100755
index 0000000..47a550c
--- /dev/null
+++ b/runtime/syntax/testdir/input/vim_shebang.vim
@@ -0,0 +1,5 @@
+#!/usr/bin/env vim -S
+
+" Vim shebang line
+
+#!/usr/bin/env vim -S