runtime(java): Optionally highlight the :: token for method references

Commit: 
https://github.com/vim/vim/commit/e73e5b889b52675a9ea58cf154235c7f25d107d5
Author: Aliaksei Budavei <0x000...@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-cyste...@users.noreply.github.com>
    Signed-off-by: Aliaksei Budavei <0x000...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 2dfc5b628..f84308218 100644
--- 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:
+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:
 
-If you write function declarations that are consistently indented by either
+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 character(s), 
you may want to set >
        :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
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 4beeaad22..9c4964db7 100644
--- 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 <clau...@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
diff --git a/runtime/syntax/testdir/dumps/java_generics_05.dump 
b/runtime/syntax/testdir/dumps/java_generics_05.dump
index 7e51e7d64..70b814d7a 100644
--- 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
diff --git a/runtime/syntax/testdir/dumps/java_generics_signature_05.dump 
b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
index 5f93da4ff..8c0fe8480 100644
--- 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
diff --git a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump 
b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
index 7749ef2b6..5d11fe37e 100644
--- a/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_07.dump
@@ -15,6 +15,6 @@
 @12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| 
|s|t|r|_|;| @30
 @12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| 
|}| @29
 @8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| 
|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| 
|e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
-@8|}|;| @64
+@8|}| @65
 @75
 @57|1|2|7|,|3|-|9| @6|8|9|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump 
b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
index 4b035bf0b..065886746 100644
--- 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|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_00.dump 
b/runtime/syntax/testdir/dumps/java_method_references_00.dump
new file mode 100644
index 000000000..72ea3ca0c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| 
+0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+@75
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| 
@34
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| 
@34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| 
@47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_01.dump 
b/runtime/syntax/testdir/dumps/java_method_references_01.dump
new file mode 100644
index 000000000..a1c03956f
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| 
@34
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| 
@47
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| 
|n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| 
+0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| 
@25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| 
|0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|2| |=| 
|(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;|
 @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|3| |=| 
|(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| 
|f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| 
@9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|4| |=| 
|"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&|
 +0#0000000&|s|5| |=| 
|i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;|
 @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| |:+0#00e0e07&@1| 
+0#0000000&@13
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_02.dump 
b/runtime/syntax/testdir/dumps/java_method_references_02.dump
new file mode 100644
index 000000000..790c0e2b6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_02.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&|
 +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;|
 @15
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| 
+0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1| 
+0#0000000&@13
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| 
+0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| 
+0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&|
 +0#0000000&|s|9| |=| 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| 
+0#0000000&|s|a| |=| 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| 
|(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_03.dump 
b/runtime/syntax/testdir/dumps/java_method_references_03.dump
new file mode 100644
index 000000000..0a3d817fb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| 
|I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s+0#00e0e07&| |-|>| 
+0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| 
|S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| 
+0#0000000&|f|2| |=| |i+0#00e0e07&@1| |-|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| 
|0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| 
@24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| 
+0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| 
@22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| 
+0#0000000&|t|i|f|1| |=| |s+0#00e0e07&| |-|>| 
+0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| 
+0#0000000&|f|3| |=| 
|C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| 
@24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| 
+0#0000000&|f|4| |=| |p+0#00e0e07&|c|i| |-|>| 
+0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| 
|/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&|
 +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| 
|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| 
|C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| 
+0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&|
 +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| 
+0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&|
 +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| 
+0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_04.dump 
b/runtime/syntax/testdir/dumps/java_method_references_04.dump
new file mode 100644
index 000000000..25211f07c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_04.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&|
 +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| 
+0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| 
|=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|(|)| @43
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| 
|=| 
|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;|
 @12
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| 
|=| 
|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;|
 @13
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| 
+0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
|s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| 
|/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_05.dump 
b/runtime/syntax/testdir/dumps/java_method_references_05.dump
new file mode 100644
index 000000000..3ebf3fbef
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_05.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| 
|/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| 
+0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
|s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| 
@1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| 
+0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
|s|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| 
|f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,|
 @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&|
 @32
+@57|9|1|,|2|-|5| @7|5|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_06.dump 
b/runtime/syntax/testdir/dumps/java_method_references_06.dump
new file mode 100644
index 000000000..f1bd812cb
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_06.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&|
 @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m+0#00e0e07&|h| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|T|e|s|t|s| @19
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;|
 @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+| +0#00e0e07&@7|d+0#4040ff13&|e|f|a|u|l|t| 
+0#00e0e07&|P|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
|e|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| 
|f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&|
 
|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&|
 @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t+0#00e0e07&|h|a|t| |-|>| +0#0000000&|o+0#00e0e07&| |-|>| 
+0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&|
 |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| 
+0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_07.dump 
b/runtime/syntax/testdir/dumps/java_method_references_07.dump
new file mode 100644
index 000000000..6f5549e96
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+| +0#00e0e07&@3|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T|>| 
|b+0#00e0003&|o@1|l|e|a|n| 
+0#00e0e07&|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M|e|t|h|o|d|H|a|n|d|l|e| |m|h|,| 
|T| |o|)| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| 
|m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| 
+0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| 
+0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| 
|E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_08.dump 
b/runtime/syntax/testdir/dumps/java_method_references_08.dump
new file mode 100644
index 000000000..537c5d5c6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| 
|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| 
@14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(|
 @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| 
@32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| 
+0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| 
|{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| 
+0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| 
+0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_09.dump 
b/runtime/syntax/testdir/dumps/java_method_references_09.dump
new file mode 100644
index 000000000..d5110b62c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| 
@55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| 
|t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,|
 |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| 
@3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| 
|t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%| 
diff --git a/runtime/syntax/testdir/dumps/java_method_references_10.dump 
b/runtime/syntax/testdir/dumps/java_method_references_10.dump
new file mode 100644
index 000000000..19280b021
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;|
 @29
+@12|}| @61
+@8|}| @65
+@75
+| +0#00e0e07&@7>s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|<|T| |e|x|t|e|n|d|s| 
|O|b|j|e|c|t|>| |F|u|n|c|t|i|o|n|<|T+0#0000000&|,+0#00e0e07&| 
|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| |s|t|r|i|n|g|e|r|(|)| +0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| 
|"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
new file mode 100644
index 000000000..029e66125
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| 
+0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+@75
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|;| @37
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|P|r|e|d|i|c|a|t|e|;| @36
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|F|u|n|c|t|i|o|n|;| @36
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|I|n|t|S|u|p@1|l|i|e|r|;| @36
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|S|u|p@1|l|i|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|T|o|I|n|t|F|u|n|c|t|i|o|n|;| 
@34
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| 
@34
+@75
+|c+0#00e0003&|l|a|s@1| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@57|1|,|1| @10|T|o|p| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
new file mode 100644
index 000000000..13d64f533
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_01.dump
@@ -0,0 +1,20 @@
+|i+0#e000e06#ffffff0|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|U|n|a|r|y|O|p|e|r|a|t|o|r|;| 
@34
+@75
+|c+0#00e0003&|l|a|s@1| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @46
+|{| @73
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>/+0#0000e05&@1| |P|r|i|m|a|r|y| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|I|d|e|n|t|i|f|i|e|r| +0#0000000&@26
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|R|u|n@1|a|b|l|e| |r|1| |=| |(@1|R|u|n|t|i|m|e|)| 
|n+0#e000002&|u|l@1|)+0#0000000&|:+0#00e0e07&@1|g+0#0000000&|c|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| 
+0#0000000&|(|N|u|l@1|P|o|i|n|t|e|r|E|x|c|e|p|t|i|o|n| |e|x|p|e|c|t|e|d|)| |{| 
@25
+@8|}| @65
+@75
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|1| |=| |(@1|N|u|m|b|e|r|)| 
|0+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @20
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|2| |=| 
|(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| 
|'+0#e000002&|\+0#e000e06&|0|'+0#e000002&|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;|
 @10
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|3| |=| 
|(@1|C+0#00e0e07&|o|m|p|a|r|a|b|l|e|<|?+0#0000000&|>+0#00e0e07&|)+0#0000000&| 
|f+0#e000002&|a|l|s|e|)+0#0000000&|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| 
@9
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|4| |=| 
|"+0#e000002&|:@1|"|:+0#00e0e07&@1|h+0#0000000&|a|s|h|C|o|d|e|;| @28
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|l|a|s@1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&|
 +0#0000000&|s|5| |=| 
|i+0#00e0003&|n|t|[+0#0000000&|]|.|c+0#00e0003&|l|a|s@1|:+0#00e0e07&@1|a+0#0000000&|r@1|a|y|T|y|p|e|;|
 @19
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|6| |=| |n+0#af5f00255&|e|w| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| |:+0#00e0e07&@1| 
+0#0000000&@12
+@12|h|a|s|h|C|o|d|e|;| @53
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&| 
+0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@57|1|9|,|3|-|9| @8|7|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
new file mode 100644
index 000000000..a223c38b7
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_02.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@7|S+0#00e0e07&|u|p@1|l|i|e|r|<|I+0#0000000&|n|t|e|g|e|r|>+0#00e0e07&|
 +0#0000000&|s|7| |=| |(@1|N|u|m|b|e|r|)| @34
+@12|(|n+0#af5f00255&|e|w| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|)|[|0+0#e000002&|]+0#0000000&|)|:+0#00e0e07&@1|i+0#0000000&|n|t|V|a|l|u|e|;|
 @14
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|i+0#00e0003&|n|t|[+0#0000000&|]|>+0#00e0e07&| 
+0#0000000&|s|8| |=| |n+0#af5f00255&|e|w| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)|.|x|y|:+0#00e0e07&@1|
 +0#0000000&@12
+@12|c|l|o|n|e|;| @56
+@8|C+0#00e0e07&|o|n|s|u|m|e|r|<|O+0#0000000&|b|j|e|c|t|>+0#00e0e07&| 
+0#0000000&|c|1| |=| |S|y|s|t|e|m|.|o|u|t| |:+0#00e0e07&@1| 
+0#0000000&|p|r|i|n|t|l|n|;| @22
+@8>S+0#00e0e07&|u|p@1|l|i|e|r|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&|
 +0#0000000&|s|9| |=| 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 |(+0#00e0e07&|)|-|>|"+0#e000002&|(|)|"|)+0#0000000&|.|g|e|t|(|)| @9
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|B|y|t|e|s|;| @51
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| 
+0#0000000&|s|a| |=| 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 @25
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 @23
+@12|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 
|(@1|S+0#00e0e07&|u|p@1|l|i|e|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&|)+0#0000000&|
 @23
+@12|(+0#00e0e07&|)| |-|>| +0#0000000&|"+0#e000002&|(|)| |-|>| 
|(|)|"|)+0#0000000&| @45
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|g+0#0000000&|e|t|)| @56
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|)| @51
+@12|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| @51
+@75
+@8|/+0#0000e05&@1| |E|x|p|r|e|s@1|i|o|n|N|a|m|e| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@19
+@8|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@57|3|7|,|3|-|9| @7|1|8|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
new file mode 100644
index 000000000..85ea29bc4
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|/+0#0000e05&@1| |R|e|f|e|r|e|n|c|e|T|y|p|e| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@20
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|,| 
|I|n|t|S|u|p@1|l|i|e|r|>+0#00e0e07&| +0#0000000&|f|1| |=| |s| |-+0#00e0e07&|>| 
+0#0000000&@27
+@24|s| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|;| @38
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|,| 
|S+0#00e0003&|u|p@1|l|i|e|r|<|i|n|t|[+0#0000000&|]|>+0#00e0003&|>+0#00e0e07&| 
+0#0000000&|f|2| |=| |i@1| |-+0#00e0e07&|>| +0#0000000&@21
+@12|(@1|i+0#00e0003&|n|t|[+0#0000000&|]|)| |(|i@1|.|l|e|n|g|t|h| |>| 
|0+0#e000002&| +0#0000000&|?| |i@1|[|0+0#e000002&|]+0#0000000&| |:| |i@1|)@1| 
@24
+@28>:+0#00e0e07&@1| +0#0000000&|c|l|o|n|e|;| @37
+@8|U+0#00e0e07&|n|a|r|y|O|p|e|r|a|t|o|r|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| 
+0#0000000&|u|o|1| |=| |S|t|r|i|n|g|:+0#00e0e07&@1|v+0#0000000&|a|l|u|e|O|f|;| 
@22
+@8|T+0#00e0e07&|o|I|n|t|F|u|n|c|t|i|o|n|<|S+0#0000000&|t|r|i|n|g|>+0#00e0e07&| 
+0#0000000&|t|i|f|1| |=| |s| |-+0#00e0e07&|>| 
+0#0000000&|s|.|t|r|a|n|s|f|o|r|m|(| @20
+@24|S|t|r|i|n|g| |:+0#00e0e07&@1| +0#0000000&|l|e|n|g|t|h|)|;| @32
+@75
+@8|/+0#0000e05&@1| |C|l|a|s@1|T|y|p|e| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|n|e|w| +0#0000000&@31
+@8|/+0#0000e05&@1| |A|r@1|a|y|T|y|p|e| |:@1| |n|e|w| +0#0000000&@47
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|O+0#0000000&|b|j|e|c|t|,| |C|2|>+0#00e0e07&| 
+0#0000000&|f|3| |=| 
|C|2|:+0#00e0e07&@1|<+0#0000000&|O|b|j|e|c|t|>|n+0#af5f00255&|e|w|;+0#0000000&| 
@24
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,| |C|2|.|C|2|1|>+0#00e0e07&| 
+0#0000000&|f|4| |=| |p|c|i| |-+0#00e0e07&|>| 
+0#0000000&|p|c|i|.|n+0#af5f00255&|e|w| +0#0000000&@26
+@20|<|S|t|r|i|n|g|>|C|2|1|(|n+0#e000002&|u|l@1|)+0#0000000&|;| 
|/+0#0000e05&@1| |C|f|.| |"|d|"|.| +0#0000000&@24
+@8|S+0#00e0e07&|u|p@1|l|i|e|r|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&|
 +0#0000000&|s|b| |=| |C|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|;+0#0000000&| @37
+@8|F+0#00e0e07&|u|n|c|t|i|o|n|<|B+0#0000000&|y|t|e|,| 
|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|>+0#00e0e07&| +0#0000000&|f|5| |=| 
|C+0#00e0e07&|1|<|V+0#0000000&|o|i|d|>+0#00e0e07&| +0#0000000&|:+0#00e0e07&@1| 
+0#0000000&|<|B|y|t|e|>| |n+0#af5f00255&|e|w|;+0#0000000&| @16
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|C+0#00e0003&|1|<|?+0#0000000&|>+0#00e0003&|[|]|>+0#00e0e07&|
 +0#0000000&|i|f|1| |=| |C+0#00e0e07&|1|<|?+0#0000000&|>+0#00e0e07&|[|]| 
+0#0000000&|:+0#00e0e07&@1| +0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @24
+@8|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&|
 +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| 
+0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@57|5@1|,|8|-|2|9| @6|2|9|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
new file mode 100644
index 000000000..5215cb27a
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_04.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@7|I+0#00e0e07&|n|t|F|u|n|c|t|i|o|n|<|b+0#00e0003&|y|t|e|[+0#0000000&|]|>+0#00e0e07&|
 +0#0000000&|i|f|2| |=| |b+0#00e0003&|y|t|e|[+0#0000000&|]| |:+0#00e0e07&@1| 
+0#0000000&|n+0#af5f00255&|e|w|;+0#0000000&| @26
+@4|}| @69
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|i+0#00e0003&|n|t|[+0#0000000&|]| |x|y| 
|=| |{| |0+0#e000002&|,+0#0000000&| |1+0#e000002&| +0#0000000&|}|;| @44
+@75
+@4>/+0#0000e05&@1| |s|u|p|e|r| |:@1| |[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| 
|I|d|e|n|t|i|f|i|e|r| +0#0000000&@32
+@4|/+0#0000e05&@1| |T|y|p|e|N|a|m|e| |.| |s|u|p|e|r| |:@1| 
|[|T|y|p|e|A|r|g|u|m|e|n|t|s|]| |I|d|e|n|t|i|f|i|e|r| +0#0000000&@21
+@4|<|T|>| |M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|(|)| @42
+@4|{| @69
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|1| 
|=| 
|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;|
 @11
+@8|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&|p|2| 
|=| 
|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s|.|t+0#00e0003&|h|i|s|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;|
 @12
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|4|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| 
+0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|3| @53
+@16|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| 
|/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@57|7|3|,|2|-|5| @7|4|0|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
new file mode 100644
index 000000000..e50878873
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_05.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@15|.|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| 
|/+0#0000e05&|*| |"|a|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|3|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4>{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| 
+0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|2|.| @52
+@16|s+0#00e0003&|u|p|e|r|:+0#00e0e07&@1|e+0#0000000&|q|u|a|l|s|;| 
@1|/+0#0000e05&|*| |"|b|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|2|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@41
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| 
+0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|s+0#00e0e07&|u|p|e|r|E|q|u|a|l|i|s|t|(|)| +0#0000000&@30
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| 
|f|o|r| |s|u|p|e|r|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@13
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|,|
 @23
+@28|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&|
 @32
+@57|9|1|,|2|-|5| @7|5|0|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
new file mode 100644
index 000000000..a5234eca3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_06.dump
@@ -0,0 +1,20 @@
+| 
+0&#ffffff0@27|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&|
 @32
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|m|h| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| 
+0#0000000&|M|e|t|h|o|d|R|e|f|e|r|e|n|c|e|s|$|T|e|s|t|s| @18
+@24|.|i|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|m|h|,| |o|)@1| @26
+@16|.|a|p@1|l|y|(|E|Q|U|A|L|S|.|b|i|n|d|T|o|(|t+0#00e0003&|h|i|s|)+0#0000000&@1|;|
 @30
+@8>}| @65
+@4|}| @69
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| 
+0#0000000&|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@55
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| 
+0#0000000&|P+0#00e0e07&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0e07&| 
+0#0000000&|e+0#00e0e07&|q|u|a|l|i|s|t|(|)| +0#0000000&@35
+@8|{| @2|/+0#0000e05&|*| |N|o|n|-|c|a|p|t|u|r|i|n|g| |g|y|m|n|a|s|t|i|c|s| 
|f|o|r| |t|h|i|s|:@1|e|q|u|a|l|s|.| |*|/| +0#0000000&@14
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|F|u|n|c|t|i|o|n|.|<|F+0#00e0e07&|u|n|c|t|i|o|n|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&|
 
|P+0#00e0003&|r|e|d|i|c|a|t|e|<|T+0#0000000&|>+0#00e0003&|>+0#00e0e07&|>+0#0000000&|
 @15
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@16|.|a|p@1|l|y|(|t|h|a|t| |-+0#00e0e07&|>| +0#0000000&|o| |-+0#00e0e07&|>| 
+0#0000000&|F|u|n|c|t|i|o|n| @30
+@24|.|<|B+0#00e0e07&|i|P|r|e|d|i|c|a|t|e|<|I+0#00e0003&|1|<|T+0#0000000&|>+0#00e0003&|,+0#0000000&|
 |T|>+0#00e0e07&|>+0#0000000&| @26
+@32|i|d|e|n|t|i|t|y|(|)| @32
+@20|.|a|p@1|l|y|(|I+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&|:@1| 
+0#0000000&@1|/+0#0000e05&|*| |"|c|"| |*|/| +0#0000000&@29
+@24|e|q|u|a|l|s|)| @43
+@57|1|0|9|,|3|-|9| @6|6|1|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
new file mode 100644
index 000000000..535f972a3
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@23|e|q|u|a|l|s|)| @43
+@20|.|t|e|s|t|(|t|h|a|t|,| |o|)@1| @39
+@16|.|a|p@1|l|y|(|I|1|.|t+0#00e0003&|h|i|s|)+0#0000000&|;| @42
+@8|}| @65
+@4|}| @69
+> @74
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|>| |b+0#00e0003&|o@1|l|e|a|n| 
+0#0000000&|i+0#00e0e07&|n|v|o|k|e|P|r|e|d|i|c|a|t|e|(|M+0#0000000&|e|t|h|o|d|H|a|n|d|l|e|
 |m|h|,| |T| |o|)+0#00e0e07&| +0#0000000&@14
+@4|{| @69
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|(|b+0#00e0003&|o@1|l|e|a|n|)+0#0000000&| 
|m|h|.|i|n|v|o|k|e|E|x|a|c|t|(|o|)|;| @27
+@8|}| |c+0#af5f00255&|a|t|c|h| +0#0000000&|(|T|h|r|o|w|a|b|l|e| |t|h|)| |{| @42
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| 
+0#0000000&|R|u|n|t|i|m|e|E|x|c|e|p|t|i|o|n|(|t|h|)|;| @31
+@8|}| @65
+@4|}| @69
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| 
+0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|M|e|t|h|o|d|H|a|n|d|l|e| 
|E|Q|U|A|L|S|;| @29
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@57|1|2|7|,|0|-|1| @6|7|2|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
new file mode 100644
index 000000000..537c5d5c6
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t+0#af5f00255&|r|y| +0#0000000&|{| @61
+@12|E|Q|U|A|L|S| |=| 
|j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|H|a|n|d|l|e|s|.|l|o@1|k|u|p|(|)| 
@14
+@28|.|f|i|n|d|S|p|e|c|i|a|l|(| @33
+@16|I|1|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @49
+@16|"+0#e000002&|e|q|u|a|l|s|"|,+0#0000000&| @49
+@16>j|a|v|a|.|l|a|n|g|.|i|n|v|o|k|e|.|M|e|t|h|o|d|T|y|p|e|.|m|e|t|h|o|d|T|y|p|e|(|
 @19
+@28|b+0#00e0003&|o@1|l|e|a|n|.+0#0000000&|c+0#00e0003&|l|a|s@1|,+0#0000000&| 
@32
+@28|O|b|j|e|c|t|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|,| @32
+@16|I|2|.|c+0#00e0003&|l|a|s@1|)+0#0000000&|;| @48
+@8|}| |c+0#af5f00255&|a|t|c|h| 
+0#0000000&|(|R|e|f|l|e|c|t|i|v|e|O|p|e|r|a|t|i|o|n|E|x|c|e|p|t|i|o|n| |e|)| 
|{| @24
+@12|t+0#af5f00255&|h|r|o|w| +0#0000000&|n+0#af5f00255&|e|w| 
+0#0000000&|E|r@1|o|r|(|e|)|;| @43
+@8|}| @65
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| 
+0#0000000&|C+0#00e0e07&|1|<|T+0#0000000&|>+0#00e0e07&| +0#0000000&@52
+@4|{| @69
+@8|C|1|(|)| |{| |}| @58
+@8|<|A|>| |C|1|(|A| |d|u|m@1|y|)| |{| |}| @47
+@4|}| @69
+@57|1|4|5|,|5|-|1|7| @5|8|3|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
new file mode 100644
index 000000000..d5110b62c
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_09.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|C|2| 
@55
+@4|{| @69
+@8|C|2|(|)| |{| |<|S|t|r|i|n|g|>| 
|t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @39
+> @74
+@8|<|A|>| |C|2|(|A| |d|u|m@1|y|)| @51
+@8|{| @65
+@12|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(@2|F+0#00e0e07&|u|n|c|t|i|o|n|<|C+0#0000000&|2|,|
 |C|2|.|C|2|1|>+0#00e0e07&|)+0#0000000&| @19
+@24|C|2|.|C|2|1|:+0#00e0e07&@1|n+0#af5f00255&|e|w|)+0#0000000&| 
@3|/+0#0000e05&|*| |"|d|"| |*|/| +0#0000000&@25
+@20|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&@1|;| @37
+@8|}| @65
+@75
+@4| +0#00e0003&@3|c|l|a|s@1| +0#0000000&|C|2|1| @57
+@8|{| @65
+@12|C|2|1|(|)| |{| |<|S|t|r|i|n|g|>| 
|t+0#00e0003&|h|i|s|(+0#0000000&|"+0#e000002&@1|)+0#0000000&|;| |}| @34
+@75
+@12|<|B|>| |C|2|1|(|B| |d|u|m@1|y|)| @46
+@12|{| @61
+@57|1|6|3|,|0|-|1| @6|9|4|%| 
diff --git 
a/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump 
b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
new file mode 100644
index 000000000..7bc18d819
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_method_references_signature_10.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|{| @61
+@16|C|2|.|s|t|r|i|n|g|e|r|(|)|.|a|p@1|l|y|(|C|2|.|t+0#00e0003&|h|i|s|)+0#0000000&|;|
 @29
+@12|}| @61
+@8|}| @65
+@75
+@8>s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| 
+0#0000000&|O|b|j|e|c|t|>| |F+0#00e0e07&|u|n|c|t|i|o|n|<|T+0#0000000&|,| 
|S|t|r|i|n|g|>+0#00e0e07&| +0#0000000&|s+0#00e0e07&|t|r|i|n|g|e|r|(|)| 
+0#0000000&@10
+@8|{| @65
+@12|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|T|:+0#00e0e07&@1|t+0#0000000&|o|S|t|r|i|n|g|;| |/+0#0000e05&|*| 
|"|e|"| |*|/| +0#0000000&@33
+@8|}| @65
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|8|1|,|3|-|9| @6|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_switch_03.dump 
b/runtime/syntax/testdir/dumps/java_switch_03.dump
index afe2a1ad1..123a254f2 100644
--- 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
diff --git a/runtime/syntax/testdir/dumps/java_switch_04.dump 
b/runtime/syntax/testdir/dumps/java_switch_04.dump
index 0fc8cb052..a2f1c866e 100644
--- 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
diff --git a/runtime/syntax/testdir/dumps/java_switch_05.dump 
b/runtime/syntax/testdir/dumps/java_switch_05.dump
index d806ef669..15939bee2 100644
--- 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
diff --git a/runtime/syntax/testdir/dumps/java_switch_06.dump 
b/runtime/syntax/testdir/dumps/java_switch_06.dump
index e71067524..3e3483cf1 100644
--- 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
diff --git a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump 
b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
index c216624cc..c99fa3393 100644
--- a/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
+++ b/runtime/syntax/testdir/dumps/java_unfoldment_02.dump
@@ -8,7 +8,7 @@
 @16|b+0#af5f00255&|r|e|a|k|;+0#0000000&| @52
 @12|}| @61
 @12|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| |;| @52
-@8|}|;| @64
+@8|}| @65
 @4|}| @69
 @75
 @4|{| |O|b|j|e|c|t| |b@1| |=| |(@1|O|b|j|e|c|t|)| |n+0#af5f00255&|e|w| 
+0#0000000&|b+0#00e0003&|y|t|e|[+0#0000000&|]|{+0#ffffff16#ff404010|}|)+0#0000000#ffffff0|;|
 |}| @30
diff --git a/runtime/syntax/testdir/input/java_enfoldment.java 
b/runtime/syntax/testdir/input/java_enfoldment.java
index 628e23089..300325711 100644
--- 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[]{}); }
diff --git a/runtime/syntax/testdir/input/java_lambda_expressions.java 
b/runtime/syntax/testdir/input/java_lambda_expressions.java
index 75f5af4cc..95531f918 100644
--- a/runtime/syntax/testdir/input/java_lambda_expressions.java
+++ b/runtime/syntax/testdir/input/java_lambda_expressions.java
@@ -136,7 +136,7 @@ class LambdaExpressionsTests        // JDK 21+.
                        case String str_                -> str_;
                        }):                     { echo(str); break; }
                case null: default:             { echo("Other"); }
-               };
+               }
 
                echo(switch (null) {
                        case String str when !"<empty>".equals(
diff --git 
a/runtime/syntax/testdir/input/java_lambda_expressions_signature.java 
b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
index 16cf9905d..0d89e9c8e 100644
--- 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(
diff --git a/runtime/syntax/testdir/input/java_method_references.java 
b/runtime/syntax/testdir/input/java_method_references.java
new file mode 100644
index 000000000..d9cdf4224
--- /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<?>) '
+               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" */
+               }
+       }
+}
diff --git a/runtime/syntax/testdir/input/java_method_references_signature.java 
b/runtime/syntax/testdir/input/java_method_references_signature.java
new file mode 100644
index 000000000..a154b12c9
--- /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<?>) '
+               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" */
+               }
+       }
+}
diff --git a/runtime/syntax/testdir/input/java_switch.java 
b/runtime/syntax/testdir/input/java_switch.java
index 14b2e1149..d82fcb183 100644
--- a/runtime/syntax/testdir/input/java_switch.java
+++ b/runtime/syntax/testdir/input/java_switch.java
@@ -55,7 +55,7 @@ class SwitchTests     // JDK 21+.
                case null:              { echo("null"); break; }
                case Letters[] ll:      { echo("SwitchTests$1Letters[]"); 
break; }
                default:                { echo("java.lang.Object"); break; }
-               };
+               }
 
                echo(switch (o) {
                        case null               -> "null";
@@ -69,7 +69,7 @@ class SwitchTests     // JDK 21+.
                case 'a':               { echo('a'); break; }
                case 'b':               { echo('b'); break; }
                default:                { echo('\u0000'); break; }
-               };
+               }
 
                echo(switch (ch) {
                        case 'a'        -> 'a';
@@ -83,7 +83,7 @@ class SwitchTests     // JDK 21+.
                case ((byte) 0):        { echo((byte) 0); break; }
                case ((byte) 1):        { echo((byte) 1); break; }
                default:                { echo((byte) -1); break; }
-               };
+               }
 
                echo(switch (b) {
                        case ((byte) 0) -> (byte) 0;
@@ -97,7 +97,7 @@ class SwitchTests     // JDK 21+.
                case ((short) 0):       { echo((short) 0); break; }
                case ((short) 1):       { echo((short) 1); break; }
                default:                { echo((short) -1); break; }
-               };
+               }
 
                echo(switch (sh) {
                        case ((short) 0)        -> (short) 0;
@@ -111,7 +111,7 @@ class SwitchTests   // JDK 21+.
                case 0b0__00___000:     { echo(0); break; }
                case 0x000___00__1:     { echo(1); break; }
                default:                { echo(-1); break; }
-               };
+               }
 
                echo(switch (i) {
                        case 0_0_0_0_0  -> 0;
diff --git a/runtime/syntax/testdir/input/java_unfoldment.java 
b/runtime/syntax/testdir/input/java_unfoldment.java
index 258ed05c0..ffea21690 100644
--- a/runtime/syntax/testdir/input/java_unfoldment.java
+++ b/runtime/syntax/testdir/input/java_unfoldment.java
@@ -39,7 +39,7 @@ class UnfoldingTests {
                                break;
                        }
                        default: ;
-               };
+               }
        }
 
        { Object bb = ((Object) new byte[]{}); }
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index b9291d597..cee7c21f3 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -369,7 +369,7 @@ def s:GetFilenameChecks(): dict<list<string>>
     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'],

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/E1sWgkW-008FrK-Ti%40256bit.org.

Raspunde prin e-mail lui