changeset 35781:c020fc9af07f

runtime(java): Optionally highlight the :: token for method references Commit: https://github.com/vim/vim/commit/e73e5b889b52675a9ea58cf154235c7f25d107d5 Author: Aliaksei Budavei <0x000c70@gmail.com> Date: Wed Jul 24 20:15:15 2024 +0200 runtime(java): Optionally highlight the :: token for method references This token will be highlighted, similar to the arrow of lambda expressions, whenever "g:java_highlight_functions" is defined. Also: - Improve the recognition of _switch-case_ labels (D-Cysteine). - Remove insignificant empty statements in syntax test files. closes: #15322 References: https://docs.oracle.com/javase/specs/jls/se21/html/jls-15.html#jls-15.13 https://github.com/fleiner/vim/pull/1 Co-authored-by: D-Cysteine <54219287+D-Cysteine@users.noreply.github.com> Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 24 Jul 2024 20:30:04 +0200
parents ec6a8f01fa65
children b13fed316f2e
files runtime/doc/syntax.txt runtime/syntax/java.vim runtime/syntax/testdir/dumps/java_generics_05.dump runtime/syntax/testdir/dumps/java_generics_signature_05.dump runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump runtime/syntax/testdir/dumps/java_method_references_00.dump runtime/syntax/testdir/dumps/java_method_references_01.dump runtime/syntax/testdir/dumps/java_method_references_02.dump runtime/syntax/testdir/dumps/java_method_references_03.dump runtime/syntax/testdir/dumps/java_method_references_04.dump runtime/syntax/testdir/dumps/java_method_references_05.dump runtime/syntax/testdir/dumps/java_method_references_06.dump runtime/syntax/testdir/dumps/java_method_references_07.dump runtime/syntax/testdir/dumps/java_method_references_08.dump runtime/syntax/testdir/dumps/java_method_references_09.dump runtime/syntax/testdir/dumps/java_method_references_10.dump runtime/syntax/testdir/dumps/java_method_references_signature_00.dump runtime/syntax/testdir/dumps/java_method_references_signature_01.dump runtime/syntax/testdir/dumps/java_method_references_signature_02.dump runtime/syntax/testdir/dumps/java_method_references_signature_03.dump runtime/syntax/testdir/dumps/java_method_references_signature_04.dump runtime/syntax/testdir/dumps/java_method_references_signature_05.dump runtime/syntax/testdir/dumps/java_method_references_signature_06.dump runtime/syntax/testdir/dumps/java_method_references_signature_07.dump runtime/syntax/testdir/dumps/java_method_references_signature_08.dump runtime/syntax/testdir/dumps/java_method_references_signature_09.dump runtime/syntax/testdir/dumps/java_method_references_signature_10.dump runtime/syntax/testdir/dumps/java_switch_03.dump runtime/syntax/testdir/dumps/java_switch_04.dump runtime/syntax/testdir/dumps/java_switch_05.dump runtime/syntax/testdir/dumps/java_switch_06.dump runtime/syntax/testdir/dumps/java_unfoldment_02.dump runtime/syntax/testdir/input/java_enfoldment.java runtime/syntax/testdir/input/java_lambda_expressions.java runtime/syntax/testdir/input/java_lambda_expressions_signature.java runtime/syntax/testdir/input/java_method_references.java runtime/syntax/testdir/input/java_method_references_signature.java runtime/syntax/testdir/input/java_switch.java runtime/syntax/testdir/input/java_unfoldment.java src/testdir/test_filetype.vim
diffstat 41 files changed, 856 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 9.1.  Last change: 2024 Jul 16
+*syntax.txt*	For Vim version 9.1.  Last change: 2024 Jul 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2046,11 +2046,11 @@ use the following: >
 	:let java_highlight_java_io=1
 Check the javaid.vim file for a list of all the packages that are supported.
 
-Function names are not highlighted, as the way to find functions depends on
-how you write Java code.  The syntax file knows two possible ways to highlight
-headers of function declarations:
-
-If you write function declarations that are consistently indented by either
+Headers of indented function declarations can be highlighted (along with parts
+of lambda expressions and method reference expressions), but it depends on how
+you write Java code.  Two formats are recognized:
+
+1) If you write function declarations that are consistently indented by either
 a tab, or a space . . . or eight space character(s), you may want to set >
 	:let java_highlight_functions="indent"
 	:let java_highlight_functions="indent1"
@@ -2062,10 +2062,12 @@ a tab, or a space . . . or eight space c
 	:let java_highlight_functions="indent7"
 	:let java_highlight_functions="indent8"
 Note that in terms of 'shiftwidth', this is the leftmost step of indentation.
-However, if you follow the Java guidelines about how functions and classes are
-supposed to be named (with respect to upper- and lowercase) and there is any
-amount of indentation, you may want to set >
+
+2) However, if you follow the Java guidelines about how functions and types
+are supposed to be named (with respect to upper- and lowercase) and there is
+any amount of indentation, you may want to set >
 	:let java_highlight_functions="style"
+
 In addition, you can combine any value of "java_highlight_functions" with >
 	:let java_highlight_signature=1
 to have the name of a function with its parameter list parens distinctly
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -3,7 +3,7 @@
 " Maintainer:		Aliaksei Budavei <0x000c70 AT gmail DOT com>
 " Former Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " Repository:		https://github.com/zzzyxwvut/java-vim.git
-" Last Change:		2024 Jun 22
+" Last Change:		2024 Jul 23
 
 " Please check :help java.vim for comments on some of the options available.
 
@@ -260,7 +260,7 @@ if exists("java_space_errors")
   endif
 endif
 
-exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*:"he=e-1'
+exec 'syn match javaUserLabel "^\s*\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!\s*::\@!"he=e-1'
 syn region  javaLabelRegion	transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":\|->" contains=javaLabelCastType,javaLabelNumber,javaCharacter,javaString,javaConstant,@javaClasses,javaGenerics,javaLabelDefault,javaLabelVarType,javaLabelWhenClause
 syn region  javaLabelRegion	transparent matchgroup=javaLabel start="\<default\>\%(\s*\%(:\|->\)\)\@=" matchgroup=NONE end=":\|->" oneline
 " Consider grouped _default_ _case_ labels, i.e.
@@ -497,8 +497,12 @@ syn match   javaParenError	 "\]"
 
 hi def link javaParenError	javaError
 
-" Lambda expressions (JLS-17, §15.27).
+" Lambda expressions (JLS-17, §15.27) and method references (JLS-17,
+" §15.13).
 if exists("java_highlight_functions")
+  syn match javaMethodRef ":::\@!"
+  hi def link javaMethodRef javaFuncDef
+
   if exists("java_highlight_signature")
     let s:ff.LambdaDef = s:ff.LeftConstant
   else
--- a/runtime/syntax/testdir/dumps/java_generics_05.dump
+++ b/runtime/syntax/testdir/dumps/java_generics_05.dump
@@ -5,10 +5,10 @@
 @8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
 @20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
 @8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:@1|t|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:@1|t|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:@1|t|o|H|e|x|S|t|r|i|n|g|)|;| @13
-@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|H|e|x|S|t|r|i|n|g|)|;| @13
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
 @24|y+0#00e0e07&| |-|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
 @8|}|;| @64
 @8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
--- a/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
@@ -5,10 +5,10 @@
 @8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
 @20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
 @8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:@1|t|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:@1|t|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
-@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:@1|t|o|H|e|x|S|t|r|i|n|g|)|;| @13
-@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|B|i|n|a|r|y|S|t|r|i|n|g|)|;| @11
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|8+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|O|c|t|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|O|c|t|a|l|S|t|r|i|n|g|)|;| @12
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|1+0#e000002&|6| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|H|e|x|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| |L|o|n|g|:+0#00e0e07&@1|t+0#0000000&|o|H|e|x|S|t|r|i|n|g|)|;| @13
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|D|e|c|:+0#00e0e07&@1|n+0#af5f00255&|e|w|,+0#0000000&| @33
 @24|y| |-+0#00e0e07&|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
 @8|}|;| @64
 @8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
@@ -15,6 +15,6 @@
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
 @12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
+@8|}| @65
 @75
 @57|1|2|7|,|3|-|9| @6|8|9|%| 
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
@@ -15,6 +15,6 @@
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
 @12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
+@8|}| @65
 @75
 @57|1|2|7|,|3|-|9| @6|8|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| |n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| @25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| |0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|2| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|3| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|4| |=| |"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|5| |=| |i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;| @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| |:+0#00e0e07&@1| +0#0000000&@13
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;| @15
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| +0#0000000&@13
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| +0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|9| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s|a| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| |(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| |I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s+0#00e0e07&| |-|>| +0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| |S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|2| |=| |i+0#00e0e07&@1| |-|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| |0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| @24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| @22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|t|i|f|1| |=| |s+0#00e0e07&| |-|>| +0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| +0#0000000&|f|3| |=| |C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| +0#0000000&|f|4| |=| |p+0#00e0e07&|c|i| |-|>| +0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| |/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| |C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| |C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&| +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| |=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| @43
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @12
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @13
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,| @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@57|9|1|,|2|-|5| @7|5|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m+0#00e0e07&|h| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @19
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| +0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| |e|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t+0#00e0e07&|h|a|t| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| +0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| +0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| +0#00e0e07&|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| |T| |o|)| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| |m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| |E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| |j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| @14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(| @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| @32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| |{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| @55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| @3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @29
+@12|}| @61
+@8|}| @65
+@75
+| +0#00e0e07&@7>s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T| |e|x|t|e|n|d|s| |O|b|j|e|c|t|>| |F|u|n|c|t|i|o|n|<|T+0#0000000&|,+0#00e0e07&| |S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| |s|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| |"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| @34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| |n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| @25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| |0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|2| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|3| |=| |(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| |f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|4| |=| |"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|5| |=| |i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;| @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| |:+0#00e0e07&@1| +0#0000000&@12
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;| @14
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| +0#0000000&@12
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| +0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| +0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|s|9| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s|a| |=| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| |(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&| @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| |(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| |I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s| |-+0#00e0e07&|>| +0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| |S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|2| |=| |i@1| |-+0#00e0e07&|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| |0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| @24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| @22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|t|i|f|1| |=| |s| |-+0#00e0e07&|>| +0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| +0#0000000&|f|3| |=| |C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| +0#0000000&|f|4| |=| |p|c|i| |-+0#00e0e07&|>| +0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| |/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| |C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| |C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&| +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| +0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&| +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| |=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| @42
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @11
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| |=| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @12
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| |/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| @1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,| @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@57|9|1|,|2|-|5| @7|5|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m|h| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @18
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|e+0#00e0e07&|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| |f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&| @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t|h|a|t| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| +0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&| |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| +0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|i+0#00e0e07&|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| |T| |o|)+0#00e0e07&| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| |m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| |E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| |j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| @14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(| @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| @32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| |{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| +0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| @55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| @3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| |t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @29
+@12|}| @61
+@8|}| @65
+@75
+@8>s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|O|b|j|e|c|t|>| |F+0#00e0e07&|u|n|c|t|i|o|n|<|T+0#0000000&|,| |S|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| |"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t| 
--- a/runtime/syntax/testdir/dumps/java_switch_03.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_03.dump
@@ -7,7 +7,7 @@
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| @5|{| |e|c|h|o|(|"+0#e000002&|n|u|l@1|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @26
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s|[|]| |l@1|:| @1|{| |e|c|h|o|(|"+0#e000002&|S|w|i|t|c|h|T|e|s|t|s|$|1|L|e|t@1|e|r|s|[|]|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @4
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|"+0#e000002&|j|a|v|a|.|l|a|n|g|.|O|b|j|e|c|t|"|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @14
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|)| |{| @49
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1| +0#0000000&@6|-|>| |"+0#e000002&|n|u|l@1|"|;+0#0000000&| @36
--- a/runtime/syntax/testdir/dumps/java_switch_04.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_04.dump
@@ -3,7 +3,7 @@
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|a|'|:+0#0000000&| @6|{| |e|c|h|o|(|'+0#e000002&|a|'|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|b|'|:+0#0000000&| @6|{| |e|c|h|o|(|'+0#e000002&|b|'|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|'+0#e000002&|\+0#e000e06&|u|0@3|'+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @24
-@8>}|;| @64
+@8>}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|c|h|)| |{| @48
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|'+0#e000002&|a|'| +0#0000000&@3|-|>| |'+0#e000002&|a|'|;+0#0000000&| @43
--- a/runtime/syntax/testdir/dumps/java_switch_05.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_05.dump
@@ -1,5 +1,5 @@
 | +0&#ffffff0@7|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @23
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|b|)| |{| @49
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|)+0#0000000&| |-|>| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @34
@@ -13,7 +13,7 @@
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&|:| @2|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @19
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&|:| @2|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @19
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @22
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|h|)| |{| @48
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|(@1|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|)+0#0000000&| @3|-|>| |(|s+0#00e0003&|h|o|r|t|)+0#0000000&| |0+0#e000002&|;+0#0000000&| @29
--- a/runtime/syntax/testdir/dumps/java_switch_06.dump
+++ b/runtime/syntax/testdir/dumps/java_switch_06.dump
@@ -9,7 +9,7 @@
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|b|0|_@1|0@1|_@2|0@2|:+0#0000000&| |{| |e|c|h|o|(|0+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|x|0@2|_@2|0@1|_@1|1|:+0#0000000&| |{| |e|c|h|o|(|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
 @8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @7|{| |e|c|h|o|(|-|1+0#e000002&|)+0#0000000&|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @30
-@8|}|;| @64
+@8|}| @65
 @75
 @8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|i|)| |{| @49
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|0+0#e000002&|_|0|_|0|_|0|_|0| +0#0000000&@1|-|>| |0+0#e000002&|;+0#0000000&| @41
--- a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
@@ -8,7 +8,7 @@
 @16|b+0#af5f00255&|r|e|a|k|;+0#0000000&| @52
 @12|}| @61
 @12|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| |;| @52
-@8|}|;| @64
+@8|}| @65
 @4|}| @69
 @75
 @4|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| +0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;| |}| @30
--- a/runtime/syntax/testdir/input/java_enfoldment.java
+++ b/runtime/syntax/testdir/input/java_enfoldment.java
@@ -39,7 +39,7 @@ class FoldingTests {
 				break;
 			}
 			default: ;
-		};
+		}
 	}
 
 	{ Object bb = ((Object) new byte[]{}); }
--- a/runtime/syntax/testdir/input/java_lambda_expressions.java
+++ b/runtime/syntax/testdir/input/java_lambda_expressions.java
@@ -136,7 +136,7 @@ class LambdaExpressionsTests	// JDK 21+.
 			case String str_		-> str_;
 			}):			{ echo(str); break; }
 		case null: default:		{ echo("Other"); }
-		};
+		}
 
 		echo(switch (null) {
 			case String str when !"<empty>".equals(
--- a/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
+++ b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
@@ -136,7 +136,7 @@ class LambdaExpressions$Tests	// JDK 21+
 			case String str_		-> str_;
 			}):			{ echo(str); break; }
 		case null: default:		{ echo("Other"); }
-		};
+		}
 
 		echo(switch (null) {
 			case String str when !"<empty>".equals(
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_method_references.java
@@ -0,0 +1,186 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+
+
+import java.lang.invoke.MethodHandle;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.IntFunction;
+import java.util.function.IntSupplier;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.ToIntFunction;
+import java.util.function.UnaryOperator;
+
+class MethodReferencesTests
+{
+	static {
+		// Primary :: [TypeArguments] Identifier
+		try {
+			Runnable r1 = ((Runtime) null)::gc;
+		} catch (NullPointerException expected) {
+		}
+
+		Supplier<Integer> s1 = ((Number) 0)::hashCode;
+		Supplier<Integer> s2 = ((Comparable<?>) '\0')::hashCode;
+		Supplier<Integer> s3 = ((Comparable<?>) false)::hashCode;
+		Supplier<Integer> s4 = "::"::hashCode;
+		Supplier<Class<?>> s5 = int[].class::arrayType;
+		Supplier<Integer> s6 = new MethodReferencesTests() ::
+			hashCode;
+		Supplier<Integer> s7 = ((Number)
+			(new MethodReferencesTests().xy)[0])::intValue;
+		Supplier<int[]> s8 = new MethodReferencesTests().xy::
+			clone;
+		Consumer<Object> c1 = System.out :: println;
+		Supplier<byte[]> s9 = ((Supplier<String>) ()->"()").get()
+			::getBytes;
+		Supplier<String> sa = ((Supplier<String>)
+			((Supplier<String>) ((Supplier<String>)
+			((Supplier<String>) ((Supplier<String>)
+			() -> "() -> ()")
+			::toString)
+			::toString)
+			::get)
+			::toString)
+			::toString;
+
+		// ExpressionName :: [TypeArguments] Identifier
+		// ReferenceType :: [TypeArguments] Identifier
+		Function<String, IntSupplier> f1 = s ->
+						s :: length;
+		Function<int[][], Supplier<int[]>> f2 = ii ->
+			((int[]) (ii.length > 0 ? ii[0] : ii))
+							:: clone;
+		UnaryOperator<String> uo1 = String::valueOf;
+		ToIntFunction<String> tif1 = s -> s.transform(
+						String :: length);
+
+		// ClassType :: [TypeArguments] new
+		// ArrayType :: new
+		Function<Object, C2> f3 = C2::<Object>new;
+		Function<C2, C2.C21> f4 = pci -> pci.new
+					<String>C21(null); // Cf. "d".
+		Supplier<C1<?>> sb = C1::new;
+		Function<Byte, C1<?>> f5 = C1<Void> :: <Byte> new;
+		IntFunction<C1<?>[]> if1 = C1<?>[] :: new;
+		IntFunction<byte[]> if2 = byte[] :: new;
+	}
+
+	final int[] xy = { 0, 1 };
+
+	// super :: [TypeArguments] Identifier
+	// TypeName . super :: [TypeArguments] Identifier
+	<T> MethodReferencesTests()
+	{
+		Predicate<T> p1 = MethodReferencesTests.super::equals;
+		Predicate<T> p2 = MethodReferencesTests.this::equals;
+	}
+
+	interface I4<T> extends I3<T>
+	{
+		default Predicate<T> superEqualist()
+		{
+			return I3
+				.super::equals;	/* "a" */
+		}
+	}
+
+	interface I3<T> extends I2<T>
+	{
+		default Predicate<T> superEqualist()
+		{
+			return I2.
+				super::equals;	/* "b" */
+		}
+	}
+
+	interface I2<T> extends I1<T>
+	{
+		default Predicate<T> superEqualist()
+		{	/* Non-capturing gymnastics for super::equals. */
+			return Function.<Function<MethodHandle,
+							Predicate<T>>>
+								identity()
+				.apply(mh -> o -> MethodReferencesTests
+						.invokePredicate(mh, o))
+				.apply(EQUALS.bindTo(this));
+		}
+	}
+
+	interface I1<T>
+	{
+		default Predicate<T> equalist()
+		{	/* Non-capturing gymnastics for this::equals. */
+			return Function.<Function<I1<T>, Predicate<T>>>
+								identity()
+				.apply(that -> o -> Function
+						.<BiPredicate<I1<T>, T>>
+								identity()
+					.apply(I1<T>::	/* "c" */
+						equals)
+					.test(that, o))
+				.apply(I1.this);
+		}
+	}
+
+	static <T> boolean invokePredicate(MethodHandle mh, T o)
+	{
+		try {
+			return (boolean) mh.invokeExact(o);
+		} catch (Throwable th) {
+			throw new RuntimeException(th);
+		}
+	}
+
+	private static final MethodHandle EQUALS;
+
+	static {
+		try {
+			EQUALS = java.lang.invoke.MethodHandles.lookup()
+							.findSpecial(
+				I1.class,
+				"equals",
+				java.lang.invoke.MethodType.methodType(
+							boolean.class,
+							Object.class),
+				I2.class);
+		} catch (ReflectiveOperationException e) {
+			throw new Error(e);
+		}
+	}
+
+	static class C1<T>
+	{
+		C1() { }
+		<A> C1(A dummy) { }
+	}
+
+	static class C2
+	{
+		C2() { <String> this(""); }
+
+		<A> C2(A dummy)
+		{
+			C2.stringer().apply(((Function<C2, C2.C21>)
+						C2.C21::new)	/* "d" */
+					.apply(C2.this));
+		}
+
+		class C21
+		{
+			C21() { <String> this(""); }
+
+			<B> C21(B dummy)
+			{
+				C2.stringer().apply(C2.this);
+			}
+		}
+
+		static <T extends Object> Function<T, String> stringer()
+		{
+			return T::toString;	/* "e" */
+		}
+	}
+}
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_method_references_signature.java
@@ -0,0 +1,186 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+
+import java.lang.invoke.MethodHandle;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.IntFunction;
+import java.util.function.IntSupplier;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.ToIntFunction;
+import java.util.function.UnaryOperator;
+
+class MethodReferences$Tests
+{
+	static {
+		// Primary :: [TypeArguments] Identifier
+		try {
+			Runnable r1 = ((Runtime) null)::gc;
+		} catch (NullPointerException expected) {
+		}
+
+		Supplier<Integer> s1 = ((Number) 0)::hashCode;
+		Supplier<Integer> s2 = ((Comparable<?>) '\0')::hashCode;
+		Supplier<Integer> s3 = ((Comparable<?>) false)::hashCode;
+		Supplier<Integer> s4 = "::"::hashCode;
+		Supplier<Class<?>> s5 = int[].class::arrayType;
+		Supplier<Integer> s6 = new MethodReferences$Tests() ::
+			hashCode;
+		Supplier<Integer> s7 = ((Number)
+			(new MethodReferences$Tests().xy)[0])::intValue;
+		Supplier<int[]> s8 = new MethodReferences$Tests().xy::
+			clone;
+		Consumer<Object> c1 = System.out :: println;
+		Supplier<byte[]> s9 = ((Supplier<String>) ()->"()").get()
+			::getBytes;
+		Supplier<String> sa = ((Supplier<String>)
+			((Supplier<String>) ((Supplier<String>)
+			((Supplier<String>) ((Supplier<String>)
+			() -> "() -> ()")
+			::toString)
+			::toString)
+			::get)
+			::toString)
+			::toString;
+
+		// ExpressionName :: [TypeArguments] Identifier
+		// ReferenceType :: [TypeArguments] Identifier
+		Function<String, IntSupplier> f1 = s ->
+						s :: length;
+		Function<int[][], Supplier<int[]>> f2 = ii ->
+			((int[]) (ii.length > 0 ? ii[0] : ii))
+							:: clone;
+		UnaryOperator<String> uo1 = String::valueOf;
+		ToIntFunction<String> tif1 = s -> s.transform(
+						String :: length);
+
+		// ClassType :: [TypeArguments] new
+		// ArrayType :: new
+		Function<Object, C2> f3 = C2::<Object>new;
+		Function<C2, C2.C21> f4 = pci -> pci.new
+					<String>C21(null); // Cf. "d".
+		Supplier<C1<?>> sb = C1::new;
+		Function<Byte, C1<?>> f5 = C1<Void> :: <Byte> new;
+		IntFunction<C1<?>[]> if1 = C1<?>[] :: new;
+		IntFunction<byte[]> if2 = byte[] :: new;
+	}
+
+	final int[] xy = { 0, 1 };
+
+	// super :: [TypeArguments] Identifier
+	// TypeName . super :: [TypeArguments] Identifier
+	<T> MethodReferences$Tests()
+	{
+		Predicate<T> p1 = MethodReferences$Tests.super::equals;
+		Predicate<T> p2 = MethodReferences$Tests.this::equals;
+	}
+
+	interface I4<T> extends I3<T>
+	{
+		default Predicate<T> superEqualist()
+		{
+			return I3
+				.super::equals;	/* "a" */
+		}
+	}
+
+	interface I3<T> extends I2<T>
+	{
+		default Predicate<T> superEqualist()
+		{
+			return I2.
+				super::equals;	/* "b" */
+		}
+	}
+
+	interface I2<T> extends I1<T>
+	{
+		default Predicate<T> superEqualist()
+		{	/* Non-capturing gymnastics for super::equals. */
+			return Function.<Function<MethodHandle,
+							Predicate<T>>>
+								identity()
+				.apply(mh -> o -> MethodReferences$Tests
+						.invokePredicate(mh, o))
+				.apply(EQUALS.bindTo(this));
+		}
+	}
+
+	interface I1<T>
+	{
+		default Predicate<T> equalist()
+		{	/* Non-capturing gymnastics for this::equals. */
+			return Function.<Function<I1<T>, Predicate<T>>>
+								identity()
+				.apply(that -> o -> Function
+						.<BiPredicate<I1<T>, T>>
+								identity()
+					.apply(I1<T>::	/* "c" */
+						equals)
+					.test(that, o))
+				.apply(I1.this);
+		}
+	}
+
+	static <T> boolean invokePredicate(MethodHandle mh, T o)
+	{
+		try {
+			return (boolean) mh.invokeExact(o);
+		} catch (Throwable th) {
+			throw new RuntimeException(th);
+		}
+	}
+
+	private static final MethodHandle EQUALS;
+
+	static {
+		try {
+			EQUALS = java.lang.invoke.MethodHandles.lookup()
+							.findSpecial(
+				I1.class,
+				"equals",
+				java.lang.invoke.MethodType.methodType(
+							boolean.class,
+							Object.class),
+				I2.class);
+		} catch (ReflectiveOperationException e) {
+			throw new Error(e);
+		}
+	}
+
+	static class C1<T>
+	{
+		C1() { }
+		<A> C1(A dummy) { }
+	}
+
+	static class C2
+	{
+		C2() { <String> this(""); }
+
+		<A> C2(A dummy)
+		{
+			C2.stringer().apply(((Function<C2, C2.C21>)
+						C2.C21::new)	/* "d" */
+					.apply(C2.this));
+		}
+
+		class C21
+		{
+			C21() { <String> this(""); }
+
+			<B> C21(B dummy)
+			{
+				C2.stringer().apply(C2.this);
+			}
+		}
+
+		static <T extends Object> Function<T, String> stringer()
+		{
+			return T::toString;	/* "e" */
+		}
+	}
+}
--- a/runtime/syntax/testdir/input/java_switch.java
+++ b/runtime/syntax/testdir/input/java_switch.java
@@ -55,7 +55,7 @@ class SwitchTests	// JDK 21+.
 		case null:		{ echo("null"); break; }
 		case Letters[] ll:	{ echo("SwitchTests$1Letters[]"); break; }
 		default:		{ echo("java.lang.Object"); break; }
-		};
+		}
 
 		echo(switch (o) {
 			case null		-> "null";
@@ -69,7 +69,7 @@ class SwitchTests	// JDK 21+.
 		case 'a':		{ echo('a'); break; }
 		case 'b':		{ echo('b'); break; }
 		default:		{ echo('\u0000'); break; }
-		};
+		}
 
 		echo(switch (ch) {
 			case 'a'	-> 'a';
@@ -83,7 +83,7 @@ class SwitchTests	// JDK 21+.
 		case ((byte) 0):	{ echo((byte) 0); break; }
 		case ((byte) 1):	{ echo((byte) 1); break; }
 		default:		{ echo((byte) -1); break; }
-		};
+		}
 
 		echo(switch (b) {
 			case ((byte) 0)	-> (byte) 0;
@@ -97,7 +97,7 @@ class SwitchTests	// JDK 21+.
 		case ((short) 0):	{ echo((short) 0); break; }
 		case ((short) 1):	{ echo((short) 1); break; }
 		default:		{ echo((short) -1); break; }
-		};
+		}
 
 		echo(switch (sh) {
 			case ((short) 0)	-> (short) 0;
@@ -111,7 +111,7 @@ class SwitchTests	// JDK 21+.
 		case 0b0__00___000:	{ echo(0); break; }
 		case 0x000___00__1:	{ echo(1); break; }
 		default:		{ echo(-1); break; }
-		};
+		}
 
 		echo(switch (i) {
 			case 0_0_0_0_0	-> 0;
--- a/runtime/syntax/testdir/input/java_unfoldment.java
+++ b/runtime/syntax/testdir/input/java_unfoldment.java
@@ -39,7 +39,7 @@ class UnfoldingTests {
 				break;
 			}
 			default: ;
-		};
+		}
 	}
 
 	{ Object bb = ((Object) new byte[]{}); }
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -369,7 +369,7 @@ def s:GetFilenameChecks(): dict<list<str
     jq: ['file.jq'],
     jovial: ['file.jov', 'file.j73', 'file.jovial'],
     jproperties: ['file.properties', 'file.properties_xx', 'file.properties_xx_xx', 'some.properties_xx_xx_file', 'org.eclipse.xyz.prefs'],
-    json: ['file.json', 'file.jsonp', 'file.json-patch', 'file.geojson', 'file.webmanifest', 'Pipfile.lock', 'file.ipynb', 'file.jupyterlab-settings', 
+    json: ['file.json', 'file.jsonp', 'file.json-patch', 'file.geojson', 'file.webmanifest', 'Pipfile.lock', 'file.ipynb', 'file.jupyterlab-settings',
     '.prettierrc', '.firebaserc', '.stylelintrc', '.lintstagedrc', 'file.slnf', 'file.sublime-project', 'file.sublime-settings', 'file.sublime-workspace',
     'file.bd', 'file.bda', 'file.xci', 'flake.lock', 'pack.mcmeta', 'deno.lock'],
     json5: ['file.json5'],