changeset 35503:ff0250ab0d8a

runtime(java): Compose "g:java_highlight_signature" and "g:java_highlight_functions" Commit: https://github.com/vim/vim/commit/01a4fb104dbee6a8b7ef20394a2a7c5b49cf49ca Author: Aliaksei Budavei <0x000c70@gmail.com> Date: Sun Jun 23 10:03:33 2024 +0200 runtime(java): Compose "g:java_highlight_signature" and "g:java_highlight_functions" With the variables defined, distinctly highlight parts of a method declaration header: its name and parameter list parens, from its type parameters, return type, and formal parameters; and distinctly highlight parts of a lambda expression: its parameter list parens and the arrow, from its formal parameters and identifiers. closes: #15083 Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sun, 23 Jun 2024 10:15:06 +0200
parents 2513db81df13
children deb5a5c92cbd
files runtime/doc/syntax.txt runtime/syntax/java.vim runtime/syntax/testdir/dumps/java_annotations_signature_00.dump runtime/syntax/testdir/dumps/java_annotations_signature_01.dump runtime/syntax/testdir/dumps/java_annotations_signature_02.dump runtime/syntax/testdir/dumps/java_annotations_signature_03.dump runtime/syntax/testdir/dumps/java_annotations_signature_04.dump runtime/syntax/testdir/dumps/java_annotations_signature_99.dump runtime/syntax/testdir/dumps/java_generics_signature_00.dump runtime/syntax/testdir/dumps/java_generics_signature_01.dump runtime/syntax/testdir/dumps/java_generics_signature_02.dump runtime/syntax/testdir/dumps/java_generics_signature_03.dump runtime/syntax/testdir/dumps/java_generics_signature_04.dump runtime/syntax/testdir/dumps/java_generics_signature_05.dump runtime/syntax/testdir/dumps/java_generics_signature_06.dump runtime/syntax/testdir/dumps/java_generics_signature_07.dump runtime/syntax/testdir/dumps/java_generics_signature_99.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump runtime/syntax/testdir/dumps/java_lambda_expressions_signature_99.dump runtime/syntax/testdir/dumps/java_methods_indent2_01.dump runtime/syntax/testdir/dumps/java_methods_indent2_02.dump runtime/syntax/testdir/dumps/java_methods_indent2_03.dump runtime/syntax/testdir/dumps/java_methods_indent2_04.dump runtime/syntax/testdir/dumps/java_methods_indent2_05.dump runtime/syntax/testdir/dumps/java_methods_indent2_05.vim runtime/syntax/testdir/dumps/java_methods_indent2_99.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim runtime/syntax/testdir/dumps/java_methods_indent2_signature_99.dump runtime/syntax/testdir/dumps/java_methods_indent2_signature_99.vim runtime/syntax/testdir/dumps/java_methods_indent4_01.dump runtime/syntax/testdir/dumps/java_methods_indent4_02.dump runtime/syntax/testdir/dumps/java_methods_indent4_03.dump runtime/syntax/testdir/dumps/java_methods_indent4_04.dump runtime/syntax/testdir/dumps/java_methods_indent4_05.dump runtime/syntax/testdir/dumps/java_methods_indent4_05.vim runtime/syntax/testdir/dumps/java_methods_indent4_99.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim runtime/syntax/testdir/dumps/java_methods_indent4_signature_99.dump runtime/syntax/testdir/dumps/java_methods_indent4_signature_99.vim runtime/syntax/testdir/dumps/java_methods_indent8_01.dump runtime/syntax/testdir/dumps/java_methods_indent8_02.dump runtime/syntax/testdir/dumps/java_methods_indent8_03.dump runtime/syntax/testdir/dumps/java_methods_indent8_04.dump runtime/syntax/testdir/dumps/java_methods_indent8_05.dump runtime/syntax/testdir/dumps/java_methods_indent8_05.vim runtime/syntax/testdir/dumps/java_methods_indent8_99.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim runtime/syntax/testdir/dumps/java_methods_indent8_signature_99.dump runtime/syntax/testdir/dumps/java_methods_indent8_signature_99.vim runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim runtime/syntax/testdir/dumps/java_methods_style_signature_99.dump runtime/syntax/testdir/dumps/java_methods_style_signature_99.vim runtime/syntax/testdir/input/java_annotations_signature.java runtime/syntax/testdir/input/java_generics_signature.java runtime/syntax/testdir/input/java_lambda_expressions_signature.java runtime/syntax/testdir/input/java_methods_indent2.java runtime/syntax/testdir/input/java_methods_indent2_signature.java runtime/syntax/testdir/input/java_methods_indent4.java runtime/syntax/testdir/input/java_methods_indent4_signature.java runtime/syntax/testdir/input/java_methods_indent8.java runtime/syntax/testdir/input/java_methods_indent8_signature.java runtime/syntax/testdir/input/java_methods_style_signature.java
diffstat 112 files changed, 2099 insertions(+), 86 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 Jun 19
+*syntax.txt*	For Vim version 9.1.  Last change: 2024 Jun 22
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2032,6 +2032,13 @@ However, if you follow the Java guidelin
 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
+highlighted from its type parameters, return type, and formal parameters; and
+to have the parameter list parens of a lambda expression with its arrow
+distinctly highlighted from its formal parameters or identifiers.
+
 If neither setting does work for you, but you would still want headers of
 function declarations to be highlighted, modify the current syntax definitions
 or compose new ones.
--- 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 19
+" Last Change:		2024 Jun 22
 
 " Please check :help java.vim for comments on some of the options available.
 
@@ -139,6 +139,12 @@ else
   let [s:ff.Engine, s:ff.UpperCase, s:ff.LowerCase] = repeat([s:ff.RightConstant], 3)
 endif
 
+if exists("java_highlight_signature")
+  let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.LeftConstant], 3)
+else
+  let [s:ff.PeekTo, s:ff.PeekFrom, s:ff.GroupArgs] = repeat([s:ff.RightConstant], 3)
+endif
+
 " Java modules (since Java 9, for "module-info.java" file).
 if s:module_info_cur_buf
   syn keyword javaModuleStorageClass	module transitive
@@ -228,9 +234,17 @@ if exists("java_highlight_all")  || exis
   hi def link javaE_		     javaExceptions
   hi def link javaC_		     javaConstant
 
-  syn keyword javaLangObject clone equals finalize getClass hashCode
-  syn keyword javaLangObject notify notifyAll toString wait
-  hi def link javaLangObject		     javaConstant
+  syn keyword javaLangObject getClass notify notifyAll wait
+
+  " Lower the syntax priority of overridable java.lang.Object method
+  " names for zero-width matching (define g:java_highlight_signature
+  " and see their base declarations for java.lang.Object):
+  syn match javaLangObject "\<clone\>"
+  syn match javaLangObject "\<equals\>"
+  syn match javaLangObject "\<finalize\>"
+  syn match javaLangObject "\<hashCode\>"
+  syn match javaLangObject "\<toString\>"
+  hi def link javaLangObject javaConstant
 endif
 
 if filereadable(expand("<sfile>:p:h") . "/javaid.vim")
@@ -364,30 +378,49 @@ syn match   javaSpecial "\\u\x\x\x\x"
 if exists("java_highlight_functions")
   syn cluster javaFuncParams contains=javaAnnotation,@javaClasses,javaGenerics,javaType,javaVarArg,javaComment,javaLineComment
 
+  if exists("java_highlight_signature")
+    syn keyword javaParamModifier contained final
+    syn cluster javaFuncParams add=javaParamModifier
+    hi def link javaParamModifier javaConceptKind
+    hi def link javaFuncDefStart javaFuncDef
+  else
+    syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
+  endif
+
   if java_highlight_functions =~# '^indent[1-8]\=$'
     let s:last = java_highlight_functions[-1 :]
     let s:indent = s:last != 't' ? repeat("\x20", s:last) : "\t"
-    syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
     " Try to not match other type members, initialiser blocks, enum
     " constants (JLS-17, §8.9.1), and constructors (JLS-17, §8.1.7):
     " at any _conventional_ indentation, skip over all fields with
     " "[^=]*", all records with "\<record\s", and let the "*Skip*"
     " definitions take care of constructor declarations and enum
-    " constants (with no support for @Foo(value = "bar")).
-    exec 'syn region javaFuncDef start=+^' . s:indent . '\%(<[^>]\+>\+\s\+\|\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)\+\)\=\%(\<\K\k*\>\.\)*\K\k*\>[^=]*\%(\<record\)\@' . s:ff.Peek('6', '') . '<!\s\K\k*\s*(+ end=+)+ contains=@javaFuncParams'
+    " constants (with no support for @Foo(value = "bar")).  Also,
+    " reject inlined declarations with "[^{]" for signature.
+    exec 'syn region javaFuncDef ' . s:ff.GroupArgs('transparent matchgroup=javaFuncDefStart', '') . ' start=/' . s:ff.PeekTo('\%(', '') . '^' . s:indent . '\%(<[^>]\+>\+\s\+\|\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)\+\)\=\%(\<\K\k*\>\.\)*\K\k*\>[^={]*\%(\<record\)\@' . s:ff.Peek('6', '') . '<!\s' . s:ff.PeekFrom('\)\@' . s:ff.Peek('80', '') . '<=', '') . '\K\k*\s*(/ end=/)/ contains=@javaFuncParams'
     " As long as package-private constructors cannot be matched with
     " javaFuncDef, do not look with javaConstructorSkipDeclarator for
     " them.
-    exec 'syn match javaConstructorSkipDeclarator transparent +^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*p\%(ublic\|rotected\|rivate\)\s\+\%(<[^>]\+>\+\s\+\)\=\K\k*\s*\ze(+ contains=javaAnnotation,javaScopeDecl'
-    exec 'syn match javaEnumSkipArgumentativeConstant transparent +^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\K\k*\s*\ze(+ contains=javaAnnotation'
+    exec 'syn match javaConstructorSkipDeclarator transparent /^' . s:indent . '\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*p\%(ublic\|rotected\|rivate\)\s\+\%(<[^>]\+>\+\s\+\)\=\K\k*\s*\ze(/ contains=javaAnnotation,javaScopeDecl,javaClassDecl,javaTypedef,javaGenerics'
+    " With a zero-width span for signature applicable on demand to
+    " javaFuncDef, make related adjustments:
+    " (1) Claim all enum constants of a line as a unit.
+    exec 'syn match javaEnumSkipConstant contained transparent /^' . s:indent . '\%(\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\K\k*\s*\%((.*)\)\=\s*[,;({]\s*\)\+/ contains=@javaEnumConstants'
+    " (2) Define a syntax group for top level enumerations and tell
+    " apart their constants from method declarations.
+    exec 'syn region javaTopEnumDeclaration transparent start=/\%(^\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(strictfp\s\+\)\=\<enum\_s\+\)\@' . s:ff.Peek('80', '') . '<=\K\k*\%(\_s\+implements\_s.\+\)\=\_s*{/ end=/}/ contains=@javaTop,javaEnumSkipConstant'
+    " (3) Define a base variant of javaParenT without using @javaTop
+    " in order to not include javaFuncDef.
+    syn region javaParenE transparent matchgroup=javaParen start="(" end=")" contains=@javaEnumConstants,javaInParen
+    syn region javaParenE transparent matchgroup=javaParen start="\[" end="\]" contains=@javaEnumConstants
+    syn cluster javaEnumConstants contains=TOP,javaTopEnumDeclaration,javaFuncDef,javaParenT
     unlet s:indent s:last
   else
     " This is the "style" variant (:help ft-java-syntax).
-    syn cluster javaFuncParams add=javaScopeDecl,javaConceptKind,javaStorageClass,javaExternal
 
     " Match arbitrarily indented camelCasedName method declarations.
     " Match: [@ɐ] [abstract] [<α, β>] Τʬ[<γ>][[][]] μʭʭ(/* ... */);
-    exec 'syn region javaFuncDef start=/' . s:ff.Engine('\%#=2', '') . '^\s\+\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(\%(abstract\|default\)\s\+\|\%(\%(final\|\%(native\|strictfp\)\|s\%(tatic\|ynchronized\)\)\s\+\)*\)\=\%(<.*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\s\+\)\=\%(void\|\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\)\%(\[\]\)*\)\s\+\<' . s:ff.LowerCase('[$_[:lower:]]', '[^A-Z0-9]') . '\k*\>\s*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=@javaFuncParams'
+    exec 'syn region javaFuncDef ' . s:ff.GroupArgs('transparent matchgroup=javaFuncDefStart', '') . ' start=/' . s:ff.Engine('\%#=2', '') . s:ff.PeekTo('\%(', '') . '^\s\+\%(\%(@\%(\K\k*\.\)*\K\k*\>\)\s\+\)*\%(p\%(ublic\|rotected\|rivate\)\s\+\)\=\%(\%(abstract\|default\)\s\+\|\%(\%(final\|\%(native\|strictfp\)\|s\%(tatic\|ynchronized\)\)\s\+\)*\)\=\%(<.*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\s\+\)\=\%(void\|\%(b\%(oolean\|yte\)\|char\|short\|int\|long\|float\|double\|\%(\<\K\k*\>\.\)*\<' . s:ff.UpperCase('[$_[:upper:]]', '[^a-z0-9]') . '\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\)\%(\[\]\)*\)\s\+' . s:ff.PeekFrom('\)\@' . s:ff.Peek('80', '') . '<=', '') . '\<' . s:ff.LowerCase('[$_[:lower:]]', '[^A-Z0-9]') . '\k*\>\s*(/ end=/)/ skip=/\/\*.\{-}\*\/\|\/\/.*$/ contains=@javaFuncParams'
   endif
 endif
 
@@ -466,19 +499,29 @@ hi def link javaParenError	javaError
 
 " Lambda expressions (JLS-17, §15.27).
 if exists("java_highlight_functions")
+  if exists("java_highlight_signature")
+    let s:ff.LambdaDef = s:ff.LeftConstant
+  else
+    let s:ff.LambdaDef = s:ff.RightConstant
+  endif
+
   " Make ()-matching definitions after the parenthesis error catcher.
   "
+  " Note that here and elsewhere a single-line token is used for \z,
+  " with other tokens repeated as necessary, to overcome the lack of
+  " support for multi-line matching with \z.
+  "
   " Match: ([@A [@B ...] final] var a[, var b, ...]) ->
   "	| ([@A [@B ...] final] T[<α>][[][]] a[, T b, ...]) ->
   " There is no recognition of expressions interspersed with comments
   " or of expressions whose parameterised parameter types are written
   " across multiple lines.
-  exec 'syn match javaLambdaDef "\k\@' . s:ff.Peek('4', '') . '<!([[:space:]\n]*\%(\%(@\%(\K\k*\.\)*\K\k*\>\%((\_.\{-1,})\)\{-,1}[[:space:]\n]\+\)*\%(final[[:space:]\n]\+\)\=\%(\<\K\k*\>\.\)*\<\K\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\%(\%(\%(\[\]\)\+\|\.\.\.\)\)\=[[:space:]\n]\+\<\K\k*\>\%(\[\]\)*\%(,[[:space:]\n]*\)\=\)\+)[[:space:]\n]*->" contains=javaAnnotation,javaParamModifier,javaLambdaVarType,javaType,@javaClasses,javaGenerics,javaVarArg'
+  exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent matchgroup=javaLambdaDefStart start=/', 'match javaLambdaDef "') . '\k\@' . s:ff.Peek('4', '') . '<!(' . s:ff.LambdaDef('\%(', '') . '[[:space:]\n]*\%(\%(@\%(\K\k*\.\)*\K\k*\>\%((\_.\{-1,})\)\{-,1}[[:space:]\n]\+\)*\%(final[[:space:]\n]\+\)\=\%(\<\K\k*\>\.\)*\<\K\k*\>\%(<[^(){}]*[[:space:]-]\@' . s:ff.Peek('1', '') . '<!>\)\=\%(\%(\%(\[\]\)\+\|\.\.\.\)\)\=[[:space:]\n]\+\<\K\k*\>\%(\[\]\)*\%(,[[:space:]\n]*\)\=\)\+)[[:space:]\n]*' . s:ff.LambdaDef('\z(->\)\)\@=/ end=/)[[:space:]\n]*\z1/', '->"') . ' contains=javaAnnotation,javaParamModifier,javaLambdaVarType,javaType,@javaClasses,javaGenerics,javaVarArg'
   " Match: () ->
   "	| (a[, b, ...]) ->
-  exec 'syn match javaLambdaDef "\k\@' . s:ff.Peek('4', '') . '<!([[:space:]\n]*\%(\<\K\k*\>\%(,[[:space:]\n]*\)\=\)*)[[:space:]\n]*->"'
+  exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent matchgroup=javaLambdaDefStart start=/', 'match javaLambdaDef "') . '\k\@' . s:ff.Peek('4', '') . '<!(' . s:ff.LambdaDef('\%(', '') . '[[:space:]\n]*\%(\<\K\k*\>\%(,[[:space:]\n]*\)\=\)*)[[:space:]\n]*' . s:ff.LambdaDef('\z(->\)\)\@=/ end=/)[[:space:]\n]*\z1/', '->"')
   " Match: a ->
-  exec 'syn match javaLambdaDef "\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<![[:space:]\n]*->"'
+  exec 'syn ' . s:ff.LambdaDef('region javaLambdaDef transparent start=/', 'match javaLambdaDef "') . '\<\K\k*\>\%(\<default\>\)\@' . s:ff.Peek('7', '') . '<!' . s:ff.LambdaDef('\%([[:space:]\n]*\z(->\)\)\@=/ matchgroup=javaLambdaDefStart end=/\z1/', '[[:space:]\n]*->"')
 
   syn keyword javaParamModifier contained final
   hi def link javaParamModifier javaConceptKind
@@ -488,7 +531,7 @@ endif
 
 " The @javaTop cluster comprises non-contained Java syntax groups.
 " Note that the syntax file "aidl.vim" relies on its availability.
-syn cluster javaTop contains=TOP
+syn cluster javaTop contains=TOP,javaTopEnumDeclaration
 
 if !exists("java_minlines")
   let java_minlines = 10
@@ -504,7 +547,8 @@ exec "syn sync ccomment javaComment minl
 
 " The default highlighting.
 hi def link javaLambdaDef		Function
-hi def link javaFuncDef		Function
+hi def link javaLambdaDefStart		Function
+hi def link javaFuncDef			Function
 hi def link javaVarArg			Function
 hi def link javaBranch			Conditional
 hi def link javaUserLabelRef		javaUserLabel
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s| @51
+|{| @73
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g| @56
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@8|S|t|r|i|n|g| |k+0#00e0e07&|i|n|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @41
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|e|x|t| @55
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|{|"+0#e000002&@1|}+0#0000000&|;| @36
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@41
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|e|x|t| @55
+@4|{| @69
+@8>S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|{|"+0#e000002&@1|}+0#0000000&|;| @36
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&| @61
+@8|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| @47
+@8|E|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|,| @44
+@8|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|,| @49
+@4|}|)+0#e000e06&| +0#0000000&@68
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|L|a|b|e|l|s| @53
+@4|{| @69
+@8|L|a|b|e|l|[|]| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @50
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|{+0#0000000&| @40
+@57|1|9|,|3|-|9| @7|2@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|{+0#0000000&| @40
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| @26
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|,| @23
+@8|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|,| @28
+@4|}|)+0#e000e06&| +0#0000000&@68
+@4>@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|L+0#0000000&|a|b|e|l|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@24
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|L|a|b|e|l| @54
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@8|C|l|a|s@1|<|?|>| |t+0#00e0e07&|y|p|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|L|a|b|e|l|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @30
+@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|r+0#00e0e07&|e|d|u|n|d|a|n|t|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|t+0#e000002&|r|u|e|;+0#0000000&| @33
+@8|T|e|x|t| |t+0#00e0e07&|e|x|t|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|e|x|t|;+0#0000000&| @40
+@8|T|a|g| |h+0#00e0e07&|e|a|d|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|)|;+0#0000000&| @40
+@8|T|a|g| |t+0#00e0e07&|a|i|l|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&@1|,+0#0000000&| |k|i|n|d| |=| |"+0#e000002&@1|)+0#e000e06&|;+0#0000000&| @19
+@4|}| @69
+@75
+@4|/+0#0000e05&|*| |U|s|e| |i|d|e|n|t|i|t|y| |c|a|s|t| |e|x|p|r|e|s@1|i|o|n|s| |t|o| |n|e|s|t| |T|Y|P|E|_|U|S|E| |a|n@1|o|t|a|t|i|o|n|s|.| |*|/| +0#0000000&@5
+@32|@+0#e000e06&|L|a|b|e|l|(| +0#0000000&@35
+@28|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| @38
+@57|3|7|,|2|-|5| @7|5|2|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@27|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| @38
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|a|"|,+0#0000000&| |"+0#e000002&|a@1|"|,+0#0000000&| |"+0#e000002&|a@2|"|,+0#0000000&| |"+0#e000002&|a@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|a|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|b|"|,+0#0000000&| |"+0#e000002&|b@1|"|,+0#0000000&| |"+0#e000002&|b@2|"|,+0#0000000&| |"+0#e000002&|b@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|b|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|c|"|,+0#0000000&| |"+0#e000002&|c@1|"|,+0#0000000&| |"+0#e000002&|c@2|"|,+0#0000000&| |"+0#e000002&|c@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|c|s|"|,+0#0000000&| @15
+@8|(|@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|d|"|,+0#0000000&| |"+0#e000002&|d@1|"|,+0#0000000&| |"+0#e000002&|d@2|"|,+0#0000000&| |"+0#e000002&|d@3|"|,+0#0000000&| |}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|d|s|"|,+0#0000000&| @15
+@28>}|)+0#e000e06&| +0#0000000&|S|t|r|i|n|g|)| |"+0#e000002&|a|b|c|d|"|)+0#e000e06&| +0#0000000&@28
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|P|r|i|m|e|r| |{| |}| @50
+@75
+@4|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#0000000&@2| @44
+| +0#e000002&@3|n|\| +0#0000000&@68
+| +0#e000002&@3|o|\| +0#0000000&@68
+| +0#e000002&@3|O|\| +0#0000000&@68
+| +0#e000002&@3|p|"+0#0000000&@2|)+0#e000e06&| +0#0000000&@65
+@4|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|/+0#0000e05&|*|,| |k|i|n|d| |=| |"|n|a|m|e|"|*|/|)+0#e000e06&@1| +0#0000000&@14
+@4|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|M|e|t|h|o|d|"|,| +0#0000000&@43
+@8|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @35
+@8|r|e|d|u|n|d|a|n|t| |=| |!@2|(|1+0#e000002&| +0#0000000&|!|=| |1+0#e000002&|)+0#0000000&|,| @42
+@8|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @36
+@8|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@57|5@1|,|8|-|2|9| @6|8|3|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|n+0#00e0e07&|o|O|p|(|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#e000002&|d|u|m@1|y|"|)+0#e000e06&| +0#0000000&@22
+@8|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|/+0#0000e05&|*|v|a|l|u|e| |=| |"|@|L|a|b|e|l|"|,|*|/| +0#0000000&|k|i|n|d| |=| |"+0#e000002&|n|a|m|e|"|)+0#e000e06&@1| +0#0000000&@10
+@8|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|P|a|r|a|m|e|t|e|r|"|,| +0#0000000&@36
+@12|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @31
+@12>h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @32
+@12|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|)|{|"|,+0#0000000&| |"+0#e000002&|}|(|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@33
+@8|O|b|j|e|c|t| |d|u|m@1|y|)+0#00e0e07&| +0#0000000&@53
+@4|{| @69
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|3|,|4|-|1|3| @6|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_annotations_signature_99.dump
@@ -0,0 +1,20 @@
+| +0#e000002#ffffff0@3|o|\| +0#0000000&@68
+| +0#e000002&@3|O|\| +0#0000000&@68
+| +0#e000002&@3|p|"+0#0000000&@2|)+0#e000e06&| +0#0000000&@65
+@4|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|/+0#0000e05&|*|,| |k|i|n|d| |=| |"|n|a|m|e|"|*|/|)+0#e000e06&@1| +0#0000000&@14
+@4|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|M|e|t|h|o|d|"|,| +0#0000000&@43
+@8|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @35
+@8|r|e|d|u|n|d|a|n|t| |=| |!@2|(|1+0#e000002&| +0#0000000&|!|=| |1+0#e000002&|)+0#0000000&|,| @42
+@8|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @36
+@8|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|}|)|"|,+0#0000000&| |"+0#e000002&|(|{|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@37
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|n+0#00e0e07&|o|O|p|(|@+0#e000e06&|L|a|b|e|l| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|)| +0#0000000&|@+0#e000e06&|L|a|b|e|l|(|"+0#e000002&|d|u|m@1|y|"|)+0#e000e06&| +0#0000000&@22
+@8|@+0#e000e06&|L|a|b|e|l|(|h+0#0000000&|e|a|d| |=| |@+0#e000e06&|T|a|g|(|/+0#0000e05&|*|v|a|l|u|e| |=| |"|@|L|a|b|e|l|"|,|*|/| +0#0000000&|k|i|n|d| |=| |"+0#e000002&|n|a|m|e|"|)+0#e000e06&@1| +0#0000000&@10
+@8|@+0#e000e06&|L|a|b|e|l|(|/+0#0000e05&@1| |v|a|l|u|e| |=| |"|P|a|r|a|m|e|t|e|r|"|,| +0#0000000&@36
+@12|t|y|p|e| |=| |A|n@1|o|t|a|t|i|o|n|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|,+0#0000000&| @31
+@12|h|e|a|d| |=| |@+0#e000e06&|T|a|g|(|v+0#0000000&|a|l|u|e| |=| |"+0#e000002&|@|L|a|b|e|l|"|)+0#e000e06&|,+0#0000000&| @32
+@12|t|e|x|t| |=| |@+0#e000e06&|T|e|x|t|(|{+0#0000000&| |"+0#e000002&|)|{|"|,+0#0000000&| |"+0#e000002&|}|(|"| +0#0000000&|}|)+0#e000e06&@1| +0#0000000&@33
+@8|O|b|j|e|c|t| |d|u|m@1|y|)+0#00e0e07&| +0#0000000&@53
+@4|{| @69
+@4|}| @69
+>}| @73
+@57|7|8|,|1| @9|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|g|e|n|e|r|i|c|s| |=| |1| +0#0000000&@23
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|1| |T|o|d|o| +0#0000000&@29
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |h|i| |l|i|n|k| |j|a|v|a|G|e|n|e|r|i|c|s|C|2| |E|r@1|o|r| +0#0000000&@28
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|m|a|t|h|.|B|i|g|I|n|t|e|g|e|r|;| @46
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|C|o|n|s|u|m|e|r|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|L|o|n|g|F|u|n|c|t|i|o|n|;| @35
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|G+0#0000001#ffff4012|e|n|e|r|i|c|s|$|T|e|s|t|s|<|T+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r| |&| |C+0#ffffff16#ff404010|o|m|p|a|r|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|T|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |U|>+0#0000001#ffff4012| +0#0000000#ffffff0@9
+|{| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@59
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|y|0|(|)|;| @30
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @15
+@8|.|a|p@1|l|y|(|f| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12|?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|O+0#0000000#ffffff0|b|j|e|c|t|,| |O|b|j|e|c|t|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |O|b|j|e|c|t|>+0#0000001#ffff4012| +0#0000000#ffffff0|P|A|R|T|I|A|L| |=| @5
+@24|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|y|0|(|)|;| @30
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|B+0#0000000#ffffff0|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0|F|A|C|T|O|R|I|A|L|_|2|0@2| |=| @8
+@16|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|B|i|g|I|n|t|e|g|e|r|,| |B|i|g|I|n|t|e|g|e|r|>|y|1|(|)| @15
+@8|.|a|p@1|l|y|(|f| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|(|x|.|c|o|m|p|a|r|e|T|o|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)| |<| |1+0#e000002&|)+0#0000000&| @16
+@12>?| |B|i|g|I|n|t|e|g|e|r|.|O|N|E| @46
+@12|:| |x|.|m|u|l|t|i|p|l|y|(|f|.|a|p@1|l|y|(|x|.|s|u|b|t|r|a|c|t|(|B|i|g|I|n|t|e|g|e|r|.|O|N|E|)@3|;| @11
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|1|>| |Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|y+0#00e0e07&|0|(|)| +0#0000000&@47
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(| @27
+@20|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|>|y|0|(|)| @31
+@24|.|a|p@1|l|y|(|f|)@1|;| @39
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|<|T|1|,| |T|2|>| |Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|y+0#00e0e07&|1|(|)| +0#0000000&@39
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(+0#00e0e07&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|)+0#00e0e07&| |-|>| +0#0000000&@8
+@12|(+0#00e0e07&|T+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @17
+@57|1|9|,|4|-|1|3| @6|1|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|(+0#00e0e07&|T+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|f|.|a|p@1|l|y|(|G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|<|T|1|,| |T|2|>|y|1|(|)| @17
+@24|.|a|p@1|l|y|(|f|)@1| @40
+@16|.|a|p@1|l|y|(|x|)|;| @48
+@4|}| @69
+@75
+@4>s+0#00e0003&|t|a|t|i|c|<+0#0000000&|T|>| |v+0#00e0003&|o|i|d| +0#0000000&|n|o|O|p|(|T| |d|u|m@1|y|)| |{| |}| @38
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|a|l|p|h|a|<|T|>| |{| |}| @48
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|0|<|T+0#0000000#ffffff0|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|1|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| |T|1|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @11
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Y+0#0000001#ffff4012|1|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|,+0#0000000#ffffff0| @6
+@20|F+0#0000001#ffff4012|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#0000001#ffff4012|>+0#ffffff16#ff404010|,+0#0000000#ffffff0| @36
+@20|F+0#ffffff16#ff404010|u|n|c|t|i|o|n|<|T+0#0000000#ffffff0|1|,| |T|2|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|{| |}| @33
+@75
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@28
+@4|{| @69
+@8|b+0#00e0003&|o@1|l|e|a|n| +0#0000000&|i+0#00e0e07&|s|E|m|p|t|y|(|)|;+0#0000000&| @48
+@8|E| |p+0#00e0e07&|e@1|k|(|)|;+0#0000000&| @57
+@57|3|7|,|2|-|5| @7|2|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|E| |p+0#00e0e07&|e@1|k|(|)|;+0#0000000&| @57
+@8|E| |p+0#00e0e07&|o|p|(|)|;+0#0000000&| @58
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|o|p|A|l@1|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|)+0#00e0e07&|;+0#0000000&| @15
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|o|p|S|o|m|e|(|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|,| @15
+@20|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|i|l|t|e|r|)+0#00e0e07&|;+0#0000000&| @25
+@8>S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|(|E+0#0000000&| |e|l|e|m|e|n|t|)+0#00e0e07&|;+0#0000000&| @37
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|A|l@1|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|)+0#00e0e07&|;+0#0000000&| @13
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|p+0#00e0e07&|u|s|h|S|o|m|e|(|I+0#0000001#ffff4012|t|e|r|a|b|l|e|<|?+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|e|l|e|m|e|n|t|s|,| @13
+@20|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|E|>+0#0000001#ffff4012| +0#0000000#ffffff0|f|i|l|t|e|r|)+0#00e0e07&|;+0#0000000&| @25
+@8|S+0#0000001#ffff4012|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|w+0#00e0e07&|i|n|d|(|C+0#0000001#ffff4012|o|n|s|u|m|e|r|<|?+0#0000000#ffffff0| |s+0#00e0003&|u|p|e|r| +0#0000000&|S+0#ffffff16#ff404010|t|a|c|k|a|b|l|e|<|E+0#0000000#ffffff0|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|c|t|i|o|n|)+0#00e0e07&|;+0#0000000&| @9
+@4|}| @69
+@75
+@4|s+0#4040ff13&|e|a|l|e|d| +0#0000000&|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012| +0#0000000#ffffff0@32
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)|;+0#0000000&| @54
+@8|N| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @56
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@57|5@1|,|3|-|9| @7|4|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|r+0#00e0003&|e|c|o|r|d| +0#0000000&|B+0#0000001#ffff4012|i|n|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@75
+@4>r+0#00e0003&|e|c|o|r|d| +0#0000000&|D+0#0000001#ffff4012|e|c|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|0|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|H+0#0000001#ffff4012|e|x|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|1+0#e000002&|6|;+0#0000000&| |}| @33
+@4|}| @69
+@75
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|O+0#0000001#ffff4012|c|t|<|N+0#0000000#ffffff0| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|N|u|m|b|e|r|>+0#0000001#ffff4012|(+0#0000000#ffffff0|N| |v|a|l|u|e|)| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| +0#0000000&|N+0#0000001#ffff4012|u|m|<|N+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@15
+@4|{| @69
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| +0#0000000&|r+0#00e0e07&|a|d|i|x|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|8+0#e000002&|;+0#0000000&| |}| @34
+@4|}| @69
+@57|7|3|,|2|-|5| @7|5@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|f+0#00e0e07&|r|o|m|D|e|c|i|m|a|l|(|l+0#00e0003&|o|n|g| +0#0000000&|x|,| |i+0#00e0003&|n|t| +0#0000000&|r|a|d|i|x|)+0#00e0e07&| +0#0000000&@23
+@4|{| @69
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|P|a|i|r|(|L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|N+0#ffffff16#ff404010|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#ffffff16#ff404010|>+0#0000001#ffff4012| +0#0000000#ffffff0|a|,| @28
+@20>L+0#0000001#ffff4012|o|n|g|F|u|n|c|t|i|o|n|<|S+0#0000000#ffffff0|t|r|i|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|b|)| |{| |}| @27
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|P|a|i|r| |p| |=| |s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|r|a|d|i|x|)| |{| @35
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|2+0#e000002&| +0#0000000&|-|>| |n+0#af5f00255&|e|w| +0#0000000&|P|a|i|r|(|B|i|n|:@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
+@24|y| |-+0#00e0e07&|>| +0#0000000&|L|o|n|g|.|t|o|S|t|r|i|n|g|(|y|)@1|;| @27
+@8|}|;| @64
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|p|.|a|(|)|.|a|p@1|l|y|(|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|p|.|b|(|)|.|a|p@1|l|y|(|x|)|,| |r|a|d|i|x|)@1|;| @8
+@4|}| @69
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|l+0#00e0003&|o|n|g| +0#0000000&|t+0#00e0e07&|o|D|e|c|i|m|a|l|(|N+0#0000001#ffff4012|u|m|<|L+0#0000000#ffffff0|o|n|g|>+0#0000001#ffff4012| +0#0000000#ffffff0|x|)+0#00e0e07&| +0#0000000&@36
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@57|9|1|,|6|-|2|1| @6|7|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|L|o|n|g|.|p|a|r|s|e|L|o|n|g|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|x|)| |{| @32
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|B+0#0000001#ffff4012|i|n|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |b|)| |-|>| |L|o|n|g|.|t|o|B|i|n|a|r|y|S|t|r|i|n|g|(|b|)|;| @16
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|O+0#0000001#ffff4012|c|t|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |o|)| |-|>| |L|o|n|g|.|t|o|O|c|t|a|l|S|t|r|i|n|g|(|o|)|;| @17
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|H+0#0000001#ffff4012|e|x|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|(+0#0000000#ffffff0|L|o|n|g| |h|)| |-|>| |L|o|n|g|.|t|o|H|e|x|S|t|r|i|n|g|(|h|)|;| @19
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |L|o|n|g|.|t|o|S|t|r|i|n|g|(|x|.|v|a|l|u|e|(|)@1|;| @26
+@8>}|,| |x|.|r|a|d|i|x|(|)@1|;| @52
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(| +0#0000000&@41
+@16|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|.|T|Y|P|E|_|U|S|E|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| @51
+@4|{| @69
+@8|S|t|r|i|n|g| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @40
+@4|}| @69
+@75
+@4|{| @69
+@8|i+0#00e0003&|n|t| +0#0000000&|N| |=| |0+0#e000002&|,+0#0000000&| |X| |=| |1+0#e000002&|,+0#0000000&| |Y| |=| |2+0#e000002&|;+0#0000000&| @42
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|f| |=| |y|-+0#00e0e07&|>|N+0#0000000&|<|y|.|i|n|t|V|a|l|u|e|(|)|;| @31
+@8|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@57|1|0|9|,|3|-|9| @6|8|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@8|b+0#00e0003&|o@1|l|e|a|n|[+0#0000000&|]| |b@1| |=| |{| @50
+@12|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0||@1|N|>+0#0000001#ffff4012|Y+0#0000000#ffffff0|,| |X| |<| |Y|,| |X| |<|Y|,| |X| |<|(|Y|)|,| |X|<|(|Y|)|,| |(|X|)|<|Y|,| @18
+@12|D|o|u|b|l|e|.|i|s|F|i|n|i|t|e|(|X|<@1|Y|)|,| @40
+@12|X|<|=|Y|,| |X|<|(|i+0#00e0003&|n|t|)+0#0000000&|(|b+0#00e0003&|y|t|e|)+0#0000000&|Y|,| |X|<|~|Y|,| |X|<|-|Y|,| |X|<|+|Y|,| @23
+@8>}|;| @64
+@8|C+0#0000001#ffff4012|l|a|s@1|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|k|l|a|s@1| |=| |G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @28
+@8|C+0#0000001#ffff4012|l|a|s@1|<| +0#0000000#ffffff0|j+0#ffffff16#ff404010|a|v|a|.|l|a|n|g|.|C|l|a|s@1|<|@+0#e000e06#ffffff0|T|a|g@1|a|b|l|e|(|"+0#e000002&|<|>|"|)+0#e000e06&|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|>+0#ffffff16#ff404010| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@12
+@8|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|$| |[| |]| |[| |]|;| @48
+@8|i+0#af5f00255&|f| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&| |{| |n+0#af5f00255&|e|w| +0#0000000&|G|e|n|e|r|i|c|s|$|T|e|s|t|s|<|>|(|)|;| |}| @28
+@8|a|l|p|h|a|<|?|>| |a|o|;| @54
+@8|a|l|p|h|a|<|U|>| |a|u|;| @54
+@8|a|l|p|h|a|<|a|l|p|h|a|<|U|>@1| |a@1|u|;| @46
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|o|;| @48
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|U+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|u|;| @48
+@8|Y|0|<|a|l|p|h|a|<|?|>@1| |y|0|a|o|;| @48
+@8|Y|0|<|a|l|p|h|a|<|U|>@1| |y|0|a|u|;| @48
+@4|}| @69
+|}| @73
+@57|1|2|7|,|3|-|9| @6|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_generics_signature_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|P+0#0000001#ffff4012|r|e|d|i|c|a|t|e|<|T+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|g| |=| |y|-+0#00e0e07&|>|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0|&@1|(|I|n|t|e|g|e|r|)|y|>+0#0000001#ffff4012|N+0#0000000#ffffff0|;| @28
+@8|b+0#00e0003&|o@1|l|e|a|n|[+0#0000000&|]| |b@1| |=| |{| @50
+@12|X+0#0000001#ffff4012|<|N+0#0000000#ffffff0||@1|N|>+0#0000001#ffff4012|Y+0#0000000#ffffff0|,| |X| |<| |Y|,| |X| |<|Y|,| |X| |<|(|Y|)|,| |X|<|(|Y|)|,| |(|X|)|<|Y|,| @18
+@12|D|o|u|b|l|e|.|i|s|F|i|n|i|t|e|(|X|<@1|Y|)|,| @40
+@12|X|<|=|Y|,| |X|<|(|i+0#00e0003&|n|t|)+0#0000000&|(|b+0#00e0003&|y|t|e|)+0#0000000&|Y|,| |X|<|~|Y|,| |X|<|-|Y|,| |X|<|+|Y|,| @23
+@8|}|;| @64
+@8|C+0#0000001#ffff4012|l|a|s@1|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0|k|l|a|s@1| |=| |G|e|n|e|r|i|c|s|$|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| @28
+@8|C+0#0000001#ffff4012|l|a|s@1|<| +0#0000000#ffffff0|j+0#ffffff16#ff404010|a|v|a|.|l|a|n|g|.|C|l|a|s@1|<|@+0#e000e06#ffffff0|T|a|g@1|a|b|l|e|(|"+0#e000002&|<|>|"|)+0#e000e06&|i+0#00e0003&|n|t|[+0#0000000&|]|[|]|>+0#ffffff16#ff404010| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|[+0#ffffff16#ff404010|]| +0#0000000#ffffff0|>+0#0000001#ffff4012| +0#0000000#ffffff0@12
+@8|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|[+0#0000001#ffff4012| +0#0000000#ffffff0|]+0#0000001#ffff4012| +0#0000000#ffffff0|$| |[| |]| |[| |]|;| @48
+@8|i+0#af5f00255&|f| +0#0000000&|(|f+0#e000002&|a|l|s|e|)+0#0000000&| |{| |n+0#af5f00255&|e|w| +0#0000000&|G|e|n|e|r|i|c|s|$|T|e|s|t|s|<|>|(|)|;| |}| @28
+@8|a|l|p|h|a|<|?|>| |a|o|;| @54
+@8|a|l|p|h|a|<|U|>| |a|u|;| @54
+@8|a|l|p|h|a|<|a|l|p|h|a|<|U|>@1| |a@1|u|;| @46
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|?+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|o|;| @48
+@8|a|l|p|h|a|<|Y+0#0000001#ffff4012|0|<|U+0#0000000#ffffff0|>+0#0000001#ffff4012|>+0#0000000#ffffff0| |a|y|0|u|;| @48
+@8|Y|0|<|a|l|p|h|a|<|?|>@1| |y|0|a|o|;| @48
+@8|Y|0|<|a|l|p|h|a|<|U|>@1| |y|0|a|u|;| @48
+@4|}| @69
+>}| @73
+@57|1|4|0|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+@75
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|i|n|a|r|y|O|p|e|r|a|t|o|r|;| @33
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|;| @39
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|P|r|e|d|i|c|a|t|e|;| @38
+@75
+|c+0#00e0003&|l|a|s@1| +0#0000000&|L|a|m|b|d|a|E|x|p|r|e|s@1|i|o|n|s|$|T|e|s|t|s| @2|/+0#0000e05&@1| |J|D|K| |2|1|+|.| +0#0000000&@31
+|{| @73
+@4|<|I|1|,| |C|1|,| |C|2|,| |T|1|,| |T|2|,| |T|3|,| |Z|1|,| |Z|2|,| |Z|3|,| |S|1|,| |S|2|,| |S|3|>| |v+0#00e0003&|o|i|d| +0#0000000&|t+0#00e0e07&|e|s|t|(|)| +0#0000000&@10
+@4|{| @2|/+0#0000e05&@1| |S|c|h|ö|n|f|i|n|k|e|l|'|s| |f|u|n|c|t|i|o|n|s|.| +0#0000000&@39
+@8|I|<|I|1|>| |i| |=| |x| |-+0#00e0e07&|>| +0#0000000&|x|;| @49
+@8|C|<|C|1|,| |C|2|>| |c| |=| |x| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x|;| @40
+@8|T|<|T|1|,| |T|2|,| |T|3|>| |t| |=| |f| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)|.|a|p@1|l|y|(|y|)|;| @13
+@8|Z|<|Z|1|,| |Z|2|,| |Z|3|>| |z| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @13
+@8|S|<|S|1|,| |S|2|,| |S|3|>| |s| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)| @23
+@24|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @31
+@75
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|C|<|C|1|,| |C|2|>| |c| |=| |x| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x|;| @40
+@8|T|<|T|1|,| |T|2|,| |T|3|>| |t| |=| |f| |-+0#00e0e07&|>| +0#0000000&|y| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)|.|a|p@1|l|y|(|y|)|;| @13
+@8|Z|<|Z|1|,| |Z|2|,| |Z|3|>| |z| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @13
+@8|S|<|S|1|,| |S|2|,| |S|3|>| |s| |=| |f| |-+0#00e0e07&|>| +0#0000000&|g| |-+0#00e0e07&|>| +0#0000000&|x| |-+0#00e0e07&|>| +0#0000000&|f|.|a|p@1|l|y|(|x|)| @23
+@24|.|a|p@1|l|y|(|g|.|a|p@1|l|y|(|x|)@1|;| @31
+> @74
+@8|I|<|I|1|>| |i|0|1| |=| |(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @41
+@8|I|<|I|1|>| |i|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @31
+@8|I|<|I|1|>| |i|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@8|I|<|I|1|>| |i|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @35
+@8|I|<|I|1|>| |i|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @25
+@8|I|<|I|1|>| |i|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @15
+@8|I|<|I|1|>| |i|0|7| |=| |(+0#00e0e07&|I+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @42
+@8|I|<|I|1|>| |i|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @32
+@8|I|<|I|1|>| |i|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @22
+@8|I|<|I|1|>| |i|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|>| |i|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|>| |i|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @16
+@75
+@57|1|9|,|0|-|1| @8|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|I|<|I|1|[|]|>| |i@1|0|1| |=| |(+0#00e0e07&|I+0#0000000&|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|I|<|I|1|[|]|>| |i@1|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|I|<|I|1|[|]|>| |i@1|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @16
+@8|I|<|I|1|[|]|>| |i@1|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @30
+@8>I|<|I|1|[|]|>| |i@1|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @20
+@8|I|<|I|1|[|]|>| |i@1|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1|.+0#00e0e07&@2| +0#0000000&|x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @10
+@75
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|1| |=| |(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|,| |v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @13
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @16
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @32
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|3| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&@9
+@20|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @19
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|4| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @20
+@20|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @36
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|5| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+@20|v+0#af5f00255&|a|r| +0#0000000&|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @19
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|6| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@23
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @32
+@57|3|7|,|3|-|9| @7|2@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|,| @32
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @26
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|7| |=| |(+0#00e0e07&|I+0#0000000&|1| |x|,| |I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @15
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|8| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|,| @17
+@20>@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @33
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|0|9| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| @10
+@20|x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @20
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1|0| |=| |(+0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|,| @21
+@20|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @37
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1@1| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&@17
+@20|I|1| |x|,| |@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t|1|2| |=| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@23
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |x|,| @33
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&@45
+@20|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|I|1| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @27
+@75
+@8|R|u|n@1|a|b|l|e| |n|o|O|p| |=| |(+0#00e0e07&|)| |-|>| +0#0000000&|{|}|;| @41
+@8|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t| |=| |(+0#00e0e07&|x+0#0000000&|,| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @23
+@57|5@1|,|6|-|2|1| @6|3|6|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|B|i|n|a|r|y|O|p|e|r|a|t|o|r|<|I|1|>| |l|e|f|t|C|o|n|s|t| |=| |(+0#00e0e07&|x+0#0000000&|,| |y|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @23
+@8|I|<|I|1|>| |i|d|1| |=| |(+0#00e0e07&|x+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(|x|)|;| @43
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|u|n|c|h|e|c|k|e|d|"|)+0#e000e06&| +0#0000000&|I|<|I|1|>| |i|d|2| |=| @24
+@16|(@1|I|<|I|<|I|1|>@1|)| |(|I|<|?|>|)| |(|F|u|n|c|t|i|o|n|<|I|1|,| @26
+@20|I|1|>| |x|)| |-|>| |x|)|.|a|p@1|l|y|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|0+0#e000002&|)+0#0000000&| |{| @23
+@16>c+0#af5f00255&|a|s|e| +0#0000000&|(@1|i+0#00e0003&|n|t|)+0#0000000&| |(|b+0#00e0003&|y|t|e|)+0#0000000&| |1+0#e000002&|)+0#0000000&| |-|>| |(+0#00e0e07&|I+0#0000000&|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| @21
+@16|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&|-|>| |(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|I|1| |x|)+0#00e0e07&| |-|>| +0#0000000&|x|;| |}|)|;| @21
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|1| |=| |(+0#00e0e07&|x+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(+0#00e0e07&|y+0#0000000&|)+0#00e0e07&| |-|>| +0#0000000&|(|x|)|;| @29
+@8|C|<|C|1|,| |C|2|>| |c|o|n|s|t|2| |=| |s+0#af5f00255&|w|i|t|c|h|(+0#0000000&|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|"+0#e000002&@1|)+0#0000000&| |{| @27
+@24|c+0#af5f00255&|a|s|e| +0#0000000&|"+0#e000002&|-|>|"|-+0#0000000&|>|"+0#e000002&|(|s|)|-|>|(|s|)|"|;+0#0000000&| @28
+@24|d+0#af5f00255&|e|f|a|u|l|t|-+0#0000000&|>|"+0#e000002&|d|e|f|a|u|l|t|"|;+0#0000000&| |}|)| |{| @26
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|(|"+0#e000002&|-|>|"|)+0#0000000&|-|>|(+0#00e0e07&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&|-|>|(|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&|-|>|(+0#0000000&|x|)|;| @27
+@12|d+0#af5f00255&|e|f|a|u|l|t|-+0#0000000&|>|(+0#00e0e07&|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|x|)+0#00e0e07&|-|>|(|@+0#e000e06&|T|a|g@1|a|b|l|e| +0#0000000&|v+0#af5f00255&|a|r| +0#0000000&|y|)+0#00e0e07&| +0#0000000&@17
+| +0#00e0e07&@15|-|>|(+0#0000000&|x|)|;| @52
+@8|}|;| @64
+@4|}| @69
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|)+0#e000e06&| +0#0000000&@19
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|a|g@1|a|b|l|e|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@57|7|3|,|5|-|1|7| @6|4|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|a|g@1|a|b|l|e|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e| |{| |S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @18
+@75
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|(|E+0#0000000&|l|e|m|e|n|t|T|y|p|e|.|P|A|R|A|M|E|T|E|R|)+0#e000e06&| +0#0000000&@19
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|a|g@1|a|b|l|e|s| |{| |T|a|g@1|a|b|l|e|[|]| |v|a|l|u|e|(|)|;| |}| @26
+> @74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|I|<|A|1|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|A|1|,| |A|1|>| |{| |}| @26
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|C|<|A|1|,| |A|2|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|1|>@1| |{| |}| @8
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|T|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&@39
+@16|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>@1|,| @18
+@20|F|u|n|c|t|i|o|n|<|A|2|,| @42
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|Z|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>|,| @12
+@20|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |A|2|>|,| @28
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|<|A|1|,| |A|2|,| |A|3|>| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&@39
+@16|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |F|u|n|c|t|i|o|n|<|A|2|,| |A|3|>@1|,| @18
+@20|F|u|n|c|t|i|o|n|<|F|u|n|c|t|i|o|n|<|A|1|,| |A|2|>|,| @28
+@20|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@57|9|1|,|0|-|1| @7|6|2|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_06.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@19|F|u|n|c|t|i|o|n|<|A|1|,| |A|3|>@2| |{| |}| @32
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|e+0#00e0e07&|c|h|o|(|O+0#0000000&|b|j|e|c|t| |o|)+0#00e0e07&| +0#0000000&|{| |S|y|s|t|e|m|.|o|u|t|.|p|r|i|n|t|l|n|(|o|)|;| |}| @17
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|{| @62
+@8>e+0#00e0003&|n|u|m| +0#0000000&|L|e|t@1|e|r|s| |{| |O|T|H|E|R|,| |A|L|P|H|A|,| |B|E|T|A| |}| @31
+@75
+@8|L|e|t@1|e|r|s| |o|t|h|e|r| |=| |L|e|t@1|e|r|s|.|O|T|H|E|R|;| @36
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|t|h|e|r|)| |{| @50
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a|:| @19
+@24|{| |e|c|h|o|(|a|l|p|h|a|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @27
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |b|e|t|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|B|E|T|A| |=@1| |b|e|t|a|:| @22
+@24|{| |e|c|h|o|(|b|e|t|a|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @28
+@8|d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @11|{| |e|c|h|o|(|o|t|h|e|r|)|;| |}| @30
+@8|}| @65
+@75
+@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|o|t|h|e|r|)| |{| @45
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a| @16
+@57|1|0|9|,|3|-|9| @6|7|6|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_07.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |a|l|p|h|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|A|L|P|H|A| |=@1| |a|l|p|h|a| @16
+@24|-|>| |a|l|p|h|a|;| @41
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|L|e|t@1|e|r|s| |b|e|t|a| |w+0#af5f00255&|h|e|n| +0#0000000&|L|e|t@1|e|r|s|.|B|E|T|A| |=@1| |b|e|t|a| @19
+@24|-|>| |b|e|t|a|;| @42
+@12|d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@8|-|>| |o|t|h|e|r|;| @37
+@8>}|)|;| @63
+@75
+@8|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @51
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @13
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@41
+@20|P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
+@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
+@24|.|t|e|s|t|(|s|t|r|_|)| @39
+@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
+@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
+@8|}|;| @64
+@75
+@57|1|2|7|,|3|-|9| @6|8|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_08.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @46
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(| @23
+@28|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @32
+@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@37
+@20>P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
+@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
+@24|.|t|e|s|t|(|s|t|r|_|)| @39
+@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
+@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @3|-|>| |s|t|r|_|;| @30
+@16|}|)| @5|-|>| |s|t|r|;| @43
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
+@8|}|)|;| @63
+@4|}| @69
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|4|5|,|6|-|2|1| @5|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_lambda_expressions_signature_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @7|-|>| |s|t|r|_|;| @30
+@12|}|)|:| @8|{| |e|c|h|o|(|s|t|r|)|;| |b+0#af5f00255&|r|e|a|k|;+0#0000000&| |}| @29
+@8|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|:+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t|:+0#0000000&| @4|{| |e|c|h|o|(|"+0#e000002&|O|t|h|e|r|"|)+0#0000000&|;| |}| @24
+@8|}|;| @64
+@75
+@8|e|c|h|o|(|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|n+0#e000002&|u|l@1|)+0#0000000&| |{| @46
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r| |w+0#af5f00255&|h|e|n| +0#0000000&|!|"+0#e000002&|<|e|m|p|t|y|>|"|.+0#0000000&|e|q|u|a|l|s|(| @23
+@28|s+0#af5f00255&|w|i|t|c|h| +0#0000000&|(|s|t|r|)| |{| @32
+@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| |w+0#af5f00255&|h|e|n| +0#0000000&@37
+@20|P|r|e|d|i|c|a|t|e|.|<|S|t|r|i|n|g|>|n|o|t|(|t|e|x|t| |-+0#00e0e07&|>| +0#0000000&@25
+@28|!|t|e|x|t|.|i|s|E|m|p|t|y|(|)@1| @30
+@24|.|t|e|s|t|(|s|t|r|_|)| @39
+@28|-|>| |"+0#e000002&|<|e|m|p|t|y|>|"|;+0#0000000&| @33
+@16|c+0#af5f00255&|a|s|e| +0#0000000&|S|t|r|i|n|g| |s|t|r|_| @3|-|>| |s|t|r|_|;| @30
+@16|}|)| @5|-|>| |s|t|r|;| @43
+@12|c+0#af5f00255&|a|s|e| +0#0000000&|n+0#e000002&|u|l@1|,+0#0000000&| |d+0#af5f00255&|e|f|a|u|l|t| +0#0000000&@1|-|>| |"+0#e000002&|O|t|h|e|r|"|;+0#0000000&| @31
+@8|}|)|;| @63
+@4|}| @69
+>}| @73
+@57|1|5|4|,|1| @8|B|o|t| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_01.dump
@@ -17,4 +17,4 @@
 @4|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @51
 @2|}| @71
 @75
-@57|1|9|,|0|-|1| @7|1|7|%| 
+@57|1|9|,|0|-|1| @7|1|5|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_02.dump
@@ -13,8 +13,8 @@
 @2|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@56
 @2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @17
 @2|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @10
-@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @10
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @10
 @75
 @2|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@61
 | +0#00e0e07&@1|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
-@57|3|7|,|3| @9|4|2|%| 
+@57|3|7|,|3| @9|3|6|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_03.dump
@@ -17,4 +17,4 @@
 @2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
 | +0#00e0e07&@1|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@11
 @2|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
-@57|5@1|,|3| @9|6|7|%| 
+@57|5@1|,|3| @9|5|7|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_04.dump
@@ -17,4 +17,4 @@
 |e+0#00e0003&|n|u|m| +0#0000000&|E|2| @67
 |{| @73
 @2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
-@57|7|3|,|3| @9|9|1|%| 
+@57|7|3|,|3| @9|7|8|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @36
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @26
+@75
+| +0#00e0e07&@1|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+|}| @73
+@57|9|1|,|5| @9|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
--- a/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_99.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
-@2|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @32
-@2|}| @71
-@75
-| +0#00e0e07&@1|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}| 
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
 @75
-@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@37
-| +0#00e0e07&@1|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|2|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @5
-|}| @73
+@4|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
 @75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|2| @67
-|{| @73
-@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
-@2|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @65
-@2|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @57
-@2|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @41
 @2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
 @2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @36
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @26
+@75
+| +0#00e0e07&@1|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
 >}| @73
-@57|9|2|,|1| @9|B|o|t| 
+@57|1|0|4|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|2|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@2|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@63
+@2|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @51
+@75
+@2|e+0#00e0003&|n|u|m| +0#0000000&|E| @66
+@2|{| @71
+@4|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @39
+@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|}| @71
+@75
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @39
+@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|}| @71
+> @74
+@2|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@18
+@2|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@23
+@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @53
+@2|{| @71
+@4|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @42
+@2|}| @71
+@75
+@2|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@18
+@2|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @52
+@2|{| @71
+@4|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @51
+@2|}| @71
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@2|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @51
+@2|{| @71
+@4|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @43
+@4|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @35
+@2>}| @71
+@75
+@2|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@62
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @17
+@75
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @23
+@75
+@2|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@56
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @16
+@2|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @9
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @9
+@75
+@2|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@61
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
+@57|3|7|,|3| @9|3|6|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@13
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@23
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@2>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @15
+@2|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@25
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@2|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @53
+@2|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @25
+@75
+@2|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @22
+@2|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@14
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
+@2|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@11
+@2|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
+@57|5@1|,|3| @9|5|7|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @56
+@75
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@43
+@2|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@4
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@2>{| @71
+@4|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@64
+@2|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@2|}| @71
+@75
+@2|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@37
+@2|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|2|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|2|$| @66
+|{| @73
+@2|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@57|7|3|,|3| @9|7|8|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @25
+@75
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+|}| @73
+@57|9|1|,|5| @9|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@1|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @36
+@2|B|(|"+0#e000002&|b|"| +0#0000000&@67
+@4|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @9
+@2|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @54
+@75
+@4|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @63
+@2|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @11
+@2|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @8
+@4|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @43
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @14
+@2|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@6
+@2|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @45
+@75
+@2|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @57
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|2|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @35
+@2|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|2|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @25
+@75
+@2|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @5
+>}| @73
+@57|1|0|4|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent2_signature_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_01.dump
@@ -17,4 +17,4 @@
 @8|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @47
 @4|}| @69
 @75
-@57|1|9|,|0|-|1| @7|1|7|%| 
+@57|1|9|,|0|-|1| @7|1|5|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_02.dump
@@ -13,8 +13,8 @@
 @4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
 @4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @15
 @4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @8
-@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @8
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @8
 @75
 @4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
 | +0#00e0e07&@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
-@57|3|7|,|5| @9|4|2|%| 
+@57|3|7|,|5| @9|3|6|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_03.dump
@@ -17,4 +17,4 @@
 @4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
 | +0#00e0e07&@3|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
 @4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
-@57|5@1|,|5| @9|6|7|%| 
+@57|5@1|,|5| @9|5|7|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_04.dump
@@ -17,4 +17,4 @@
 @75
 |e+0#00e0003&|n|u|m| +0#0000000&|E|4| @67
 |{| @73
-@57|7|3|,|5| @9|9|0|%| 
+@57|7|3|,|5| @9|7@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+@75
+@8>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @34
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @24
+@75
+| +0#00e0e07&@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+|}| @73
+@57|9|1|,|9| @9|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
--- a/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_99.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @30
-@4|}| @69
-@75
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| 
-|}| @73
+| +0&#ffffff0@3|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
 @75
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
-| +0#00e0e07&@3|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|4|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @3
-|}| @73
+@8|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
 @75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|4| @67
-|{| @73
-@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
-@4|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @63
-@4|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @55
-@4|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
 @4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
 @4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @34
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @24
+@75
+| +0#00e0e07&@3|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
 >}| @73
-@57|9|2|,|1| @9|B|o|t| 
+@57|1|0|4|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|4|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@4|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@61
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @49
+@75
+@4|e+0#00e0003&|n|u|m| +0#0000000&|E| @64
+@4|{| @69
+@8|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+@75
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+> @74
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @51
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @38
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @50
+@4|{| @69
+@8|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @47
+@4|}| @69
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @49
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @39
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @31
+@4>}| @69
+@75
+@4|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@60
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @15
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @21
+@75
+@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @14
+@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @7
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @7
+@75
+@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@57|3|7|,|5| @9|3|6|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@21
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@4>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@23
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@4|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @51
+@4|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @23
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@12
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@57|5@1|,|5| @9|5|7|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@4>{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @29
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&
+| |}| @72
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|4|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @2
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|4|$| @66
+|{| @73
+@57|7|3|,|5| @9|7@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+@75
+@8>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @33
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @23
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+|}| @73
+@57|9|1|,|9| @9|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @34
+@4|B|(|"+0#e000002&|b|"| +0#0000000&@65
+@8|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,| @5
+@4|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @52
+@75
+@8|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @59
+@4|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @9
+@4|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @6
+@8|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @39
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @10
+@4|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&@4
+@4|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @43
+@75
+@4|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @55
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|4|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @33
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|4|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @23
+@75
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}| @3
+>}| @73
+@57|1|0|4|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent4_signature_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_01.dump
@@ -17,4 +17,4 @@
 @16|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @39
 @8|}| @65
 @75
-@57|1|9|,|0|-|1| @7|1|7|%| 
+@57|1|9|,|0|-|1| @7|1|5|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_02.dump
@@ -13,8 +13,8 @@
 @8|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@50
 @8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @11
 @8|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @4
-@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e|x|t|e|n|d|s| |C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @4
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @4
 @75
 @8|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@55
 | +0#00e0e07&@7|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#00e0e07&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
-@57|3|7|,|9| @9|4|2|%| 
+@57|3|7|,|9| @9|3|6|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_03.dump
@@ -17,4 +17,4 @@
 @8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
 | +0#00e0e07&@7|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|f+0#4040ff13&|i|n|a|l| +0#00e0e07&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#00e0e07&|s+0#00e0003&|t|r|i|c|t|f|p| +0#00e0e07&|v+0#00e0003&|o|i|d| +0#00e0e07&|a|s|c|i@1|$|9@1|_|(|)| +0#0000000&@5
 @8|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
-@57|5@1|,|9| @9|6|7|%| 
+@57|5@1|,|9| @9|5|7|%| 
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_04.dump
@@ -17,4 +17,4 @@
 @75
 |e+0#00e0003&|n|u|m| +0#0000000&|E|8| @67
 |{| @73
-@57|7|3|,|9| @9|9|0|%| 
+@57|7|3|,|9| @9|7|8|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @30
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @20
+@75
+| +0#00e0e07&@7|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+@1| @73
+@57|9|1|,|1|7| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
--- a/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_99.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@7|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @26
-@8|}| @65
-@75
-| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|s+0#00e0003&|t|a|t|i|c| +0#00e0e07&|C|l|a|s@1|<|?|>| |c|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a
-|s@1|;+0#0000000&| |}| @69
+| +0&#ffffff0@7|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
 @75
-@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@31
-| +0#00e0e07&@7|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|8|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}
-@1| @73
+@16|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
 @75
-|e+0#00e0003&|n|u|m| +0#0000000&|E|8| @67
-|{| @73
-@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
-@8|B|(|"+0#e000002&|b|"|)+0#0000000&|,| @59
-@8|C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @51
-@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
 @8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
 @8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @30
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @20
+@75
+| +0#00e0e07&@7|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#00e0e07&|p+0#00e0003&|u|b|l|i|c| +0#00e0e07&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
 >}| @73
-@57|9|2|,|1| @9|B|o|t| 
+@57|1|0|4|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|i|n|d|e|n|t|8|'| +0#0000000&@14
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s| @39
+|{| |/+0#0000e05&@1| |D|O| |N|O|T| |r|e|t|a|b|!| |T|H|I|S| |F|I|L|E|;| |R|E|M|E|M|B|E|R| |A|B|O|U|T| |t|e|s|t|d|i|r|/|f|t|p|l|u|g|i|n|.| +0#0000000&@12
+@8|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@57
+@8|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @45
+@75
+@8|e+0#00e0003&|n|u|m| +0#0000000&|E| @60
+@8|{| @65
+@16|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @27
+@16|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @27
+@16|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @43
+@16|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @23
+@8|}| @65
+@75
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@15|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @27
+@16|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @27
+@16|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @43
+@16|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @23
+@8|}| @65
+> @74
+@8|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@12
+@8|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@17
+@8|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @47
+@8|{| @65
+@16|S|t|r|i|n|g|[|]| |v|a|l|u|e|(|)| |d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @30
+@8|}| @65
+@75
+@8|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@12
+@8|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @46
+@8|{| @65
+@16|T|ɐ|g@1|a|b|l|ɘ|[|]| |v|a|l|u|e|(|)|;| @39
+@8|}| @65
+@75
+@57|1|9|,|0|-|1| @7|1|5|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @45
+@8|{| @65
+@16|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a|s|c|i@1|$|0|_|(|)| |{| |}| @31
+@16|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ|ʭ@1|$|0|_|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @23
+@8>}| @65
+@75
+@8|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@56
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @11
+@75
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @17
+@75
+@8|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@50
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @10
+@8|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @3
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @3
+@75
+@8|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@55
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
+@57|3|7|,|9| @9|3|6|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@7
+@64|)+0#00e0e07&|;+0#0000000&| @8
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@17
+@32|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @8
+@75
+@8>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @9
+@8|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@19
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @7
+@75
+@8|v+0#00e0003&|o|i|d| +0#0000000&|A+0#00e0e07&|s|c|i@1|$|2|_|(|)| +0#0000000&|{| |}| @47
+@8|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ+0#00e0e07&|ʭ@1|$|2|_|(|U+0#0000000&| |u|)+0#00e0e07&| +0#0000000&|{| |}| @19
+@75
+@8|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @16
+@8|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@8
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @5
+@75
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
+@8|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@5
+@8|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @50
+@57|5@1|,|9| @9|5|7|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@8|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@37
+@8|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_
+|(| +0#0000000&@73
+@24|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@6
+@8>{| @65
+@16|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@52
+@8|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @25
+@8|}| @65
+@75
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l
+|a|s@1|;+0#0000000&| |}| @68
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@31
+@8|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|I|n|d|e|n|t|8|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| 
+|}| @73
+|}| @73
+@75
+|e+0#00e0003&|n|u|m| +0#0000000&|E|8|$| @66
+@57|7|3|,|9| @9|7@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16>(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @29
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @19
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+@1| @73
+@57|9|1|,|1|7| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_05.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|A|(|"+0#e000002&|a|"|)+0#0000000&|,| @30
+@8|B|(|"+0#e000002&|b|"| +0#0000000&@61
+@16|/+0#0000e05&|*|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|/|\|*|/|)+0#0000000&|,
+| @7|C|(|"+0#e000002&|c|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|T|h|r|e|a|d|(| @48
+@75
+@16|(+0#00e0e07&|)| |-|>| +0#0000000&|{| @51
+@8|}|)@1|,| |D|(|"+0#e000002&|d|"|,+0#0000000&| |(|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|B|o@1|l|e|a|n|S|u|p@1|l|i|e|r|)| |(+0#00e0e07&|)| |-|>| +0#0000000&|t+0#e000002&|r|u|e|)+0#0000000&|,| @5
+@8|E|(|"+0#e000002&|e|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|c+0#00e0003&|h|a|r|[+0#0000000&|]| |{| |'+0#e000002&|a|'|,+0#0000000&| |'+0#e000002&|b|'|,+0#0000000&| |'+0#e000002&|c|'|,+0#0000000&| |'+0#e000002&|d|'| +0#0000000&|}|)|,| |F|(|"+0#e000002&|f|"|,+0#0000000&| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)| |{| @2
+@16|t+0#00e0003&|r|a|n|s|i|e|n|t| +0#0000000&|S|t|r|i|n|g| |n|a|m|e| |=| |"+0#e000002&@1|;+0#0000000&| @31
+@16|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|t+0#00e0003&|h|i|s|.+0#0000000&|n|a|m|e|;| |}| @2
+@8|}|)|,| |/+0#0000e05&@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1|\|/@1| +0#0000000&
+@8|G|(|"+0#e000002&|g|"|)+0#0000000&|,| |@+0#e000e06&|D|e|p|r|e|c|a|t|e|d| +0#0000000&|H|(|"+0#e000002&|h|"|)+0#0000000&|;| @39
+@75
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|8|$|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @29
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|δ|>| |E|8|$|(|S|t|r|i|n|g| |s|,| |δ| |d|u|m@1|y|)| |{| |t+0#00e0003&|h|i|s|(+0#0000000&|s|)|;| |}| @19
+@75
+@8|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n|a|m|e|(|)|.|t|o|U|p@1|e|r|C|a|s|e|(|)|;| |}
+>}| @73
+@57|1|0|4|,|1| @8|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_indent8_signature_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|f|u|n|c|t|i|o|n|s| |=| |'|s|t|y|l|e|'| +0#0000000&@16
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| |g|:|j|a|v|a|_|h|i|g|h|l|i|g|h|t|_|s|i|g|n|a|t|u|r|e| |=| |1| +0#0000000&@22
+|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s|e|t| |e|n|c|o|d|i|n|g|=|u|t|f|-|8| |t|e|r|m|e|n|c|o|d|i|n|g|=|u|t|f|-|8| +0#0000000&@19
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|E|l|e|m|e|n|t|T|y|p|e|;| @34
+|i+0#e000e06&|m|p|o|r|t| +0#0000000&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|T|a|r|g|e|t|;| @39
+@75
+|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|c+0#00e0003&|l|a|s@1| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s| @41
+|{| @73
+@4|/+0#0000e05&@1| |T|Y|P|E|S|.| +0#0000000&@61
+@4|r+0#00e0003&|e|c|o|r|d| +0#0000000&|Τ|ʬ|<|α|>|(|α| |a|)| |{| |}| @49
+@75
+@4|e+0#00e0003&|n|u|m| +0#0000000&|E| @64
+@4|{| @69
+@8|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+@75
+@57|1|,|1| @10|T|o|p| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_00.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@7|A|(|"+0#e000002&|a|"|)+0#0000000&|,| |B|(|"+0#e000002&|b|"|)+0#0000000&|,| |C|(|"+0#e000002&|c|"|)+0#0000000&|,| |D|(|"+0#e000002&|d|"|)+0#0000000&|,| @35
+@8|E|(|"+0#e000002&|e|"|)+0#0000000&|,| |F|(|"+0#e000002&|f|"|)+0#0000000&|,| |G|(|"+0#e000002&|g|"|)+0#0000000&|,| |H|(|"+0#e000002&|h|"|)+0#0000000&|;| @35
+@8|f+0#4040ff13&|i|n|a|l| +0#0000000&|S|t|r|i|n|g| |s|;| @51
+@8|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|E|(|S|t|r|i|n|g| |s|)| |{| |t+0#00e0003&|h|i|s|.+0#0000000&|s| |=| |s|;| |}| @31
+@4|}| @69
+> @74
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#e000e06&|j|a|v|a|.|l|a|n|g|.|a|n@1|o|t|a|t|i|o|n|.|R|e|p|e|a|t|a|b|l|e|(|T+0#0000000&|ɐ|g@1|a|b|l|ɘ|s|.|c+0#00e0003&|l|a|s@1|)+0#e000e06&| +0#0000000&@21
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ| @51
+@4|{| @69
+@8|S|t|r|i|n|g|[|]| |v+0#00e0e07&|a|l|u|e|(|)| +0#0000000&|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|"+0#e000002&@1|;+0#0000000&| @38
+@4|}| @69
+@75
+@4|@+0#e000e06&|T|a|r|g|e|t|(|{+0#0000000&|E|l|e|m|e|n|t|T|y|p|e|.|M|E|T|H|O|D|,| |E|l|e|m|e|n|t|T|y|p|e|.|C|O|N|S|T|R|U|C|T|O|R|}|)+0#e000e06&| +0#0000000&@16
+@4|@+0#00e0003&|i|n|t|e|r|f|a|c|e| +0#0000000&|T|ɐ|g@1|a|b|l|ɘ|s| @50
+@4|{| @69
+@8|T|ɐ|g@1|a|b|l|ɘ|[|]| |v+0#00e0e07&|a|l|u|e|(|)|;+0#0000000&| @47
+@4|}| @69
+@75
+@57|1|9|,|0|-|1| @7|2|0|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_01.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|i+0#00e0003&|n|t|e|r|f|a|c|e| +0#0000000&|S|t|y|l|a|b|l|e|<|Α|>| @49
+@4|{| @69
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|)| +0#0000000&|{| |}| @39
+@8|d+0#4040ff13&|e|f|a|u|l|t| +0#0000000&|Α| |μ+0#00e0e07&|ʭ@1|$|0|_|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @31
+@4>}| @69
+@75
+@4|/+0#0000e05&@1| |F|I|E|L|D|S|.| +0#0000000&@60
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|C|l|a|s@1|<|?|>| |C|L|A|S@1|_|L|O|C|K| |=| |c|l|a|s@1|L|o|c|k|(|)|;| @15
+@75
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|O|b|j|e|c|t| |i|n|s|t|a|n|c|e|L|o|c|k| |=| |n+0#af5f00255&|e|w| +0#0000000&|O|b|j|e|c|t|(|)|;| @21
+@75
+@4|/+0#0000e05&@1| |C|O|N|S|T|R|U|C|T|O|R|S|.| +0#0000000&@54
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|)| |{| |}| @16
+@4|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|,| |V|o|i|d| |v|)| |{| |}| @9
+@4|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|<|T| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|C|o|m|p|a|r|a|b|l|e|<|T|>@1| |S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|(|T| |t|)| |{| |}| @9
+@75
+@4|/+0#0000e05&@1| |M|E|T|H|O|D|S|.| +0#0000000&@59
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@57|3|7|,|2|-|5| @7|4|9|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_02.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|0|_|(|/+0#0000e05&@15| +0#0000000&@11
+@32|)+0#00e0e07&|;+0#0000000&| @40
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|a+0#4040ff13&|b|s|t|r|a|c|t| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>| |μ+0#00e0e07&|ʭ@1|$|0|_|(| +0#0000000&@21
+@16|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|b|e|s|p|o|k|e|"|)+0#e000e06&| +0#0000000&|β| |b|)+0#00e0e07&|;+0#0000000&| @24
+@75
+@4>@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|1|_|(|/+0#0000e05&|*|/@10|/+0#ffffff16#ff404010|*+0#0000e05#ffffff0|/|)+0#00e0e07&|;+0#0000000&| @13
+@4|@+0#e000e06&|T|ɐ|g@1|a|b|l|ɘ| +0#0000000&|p+0#00e0003&|r|i|v|a|t|e| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|1|_|(| +0#0000000&@23
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @19
+@75
+@4|v+0#00e0003&|o|i|d| +0#0000000&|A|s|c|i@1|$|2|_|(|)| |{| |}| @51
+@4|<|T|,| |U| |e+0#00e0003&|x|t|e|n|d|s| +0#0000000&|S|t|y|l|a|b|l|e|<|T|>@1| |v+0#00e0003&|o|i|d| +0#0000000&|Μ|ʭ@1|$|2|_|(|U| |u|)| |{| |}| @23
+@75
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9|8|_|(|)|;+0#0000000&| @20
+@4|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|n+0#e000e06&|a|t|i|v|e| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]|[|]| |μ+0#00e0e07&|ʭ@1|$|9|8|_|(| +0#0000000&@12
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @17
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@57|5@1|,|2|-|5| @7|7@1|%| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_03.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@3|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@18
+@4>{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+|}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|7|3|,|2|-|5| @7|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_04.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_99.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@11|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&|;+0#0000000&| @17
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|a+0#00e0e07&|s|c|i@1|$|9@1|_|(|)| +0#0000000&@9
+@4|{| |a|s|c|i@1|$|9|8|_|(|)|;| |}| @54
+@75
+@4|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|s|t|r|i|c|t|f|p|"|)+0#e000e06&| +0#0000000&@41
+@4|p+0#00e0003&|r|o|t|e|c|t|e|d| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|f+0#4040ff13&|i|n|a|l| +0#0000000&|s+0#00e0003&|y|n|c|h|r|o|n|i|z|e|d| +0#0000000&|s+0#00e0003&|t|r|i|c|t|f|p| +0#0000000&|<|α|,| |β|>| |Τ|ʬ|<|α|>|[|]| |μ+0#00e0e07&|ʭ@1|$|9@1|_|(| +0#0000000&@2
+@12|j|a|v|a|.|u|t|i|l|.|f|u|n|c|t|i|o|n|.|F|u|n|c|t|i|o|n|<|β|,| |Τ|ʬ|<|α|>|[|]|[|]|>| |ƒ|)+0#00e0e07&| +0#0000000&@18
+@4|{| @69
+@8|r+0#af5f00255&|e|t|u|r|n| +0#0000000&@60
+@4|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|<|α|,| |β|>|μ|ʭ@1|$|9|8|_|(|ƒ|)|[|0+0#e000002&|]+0#0000000&|;| @31
+@4|}| @69
+@75
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|C|l|a|s@1|<|?|>| |c+0#00e0e07&|l|a|s@1|L|o|c|k|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|.|c+0#00e0003&|l|a|s@1|;+0#0000000&| |}
+| @74
+@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|@+0#e000e06&|S|u|p@1|r|e|s@1|W|a|r|n|i|n|g|s|(|"+0#e000002&|c|a|s|t|"|)+0#e000e06&| +0#0000000&@35
+@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| |t+0#00e0e07&|o|S|t|r|i|n|g|(|)| +0#0000000&|{| |r+0#af5f00255&|e|t|u|r|n| +0#0000000&|(|S|t|r|i|n|g|)| |"+0#e000002&|S|t|y|l|e|$|M|e|t|h|o|d|s|T|e|s|t|s|"|;+0#0000000&| |}| @4
+>}| @73
+@57|8|2|,|1| @9|B|o|t| 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_methods_style_signature_99.vim
@@ -0,0 +1,2 @@
+" Replace known non-Latin-1 characters.
+%s+[ƒɐɘʬʭΑ-Ωα-ω�]+?+Ige
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_annotations_signature.java
@@ -0,0 +1,78 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+class Annotations$Tests
+{
+	@Target(ElementType.TYPE_USE)
+	@interface Tag
+	{
+		String value() default "";
+		String kind() default "";
+	}
+
+	@Target(ElementType.TYPE_USE)
+	@interface Text
+	{
+		String[] value() default {""};
+	}
+
+	@Target({
+		ElementType.METHOD,
+		ElementType.PARAMETER,
+		ElementType.TYPE,
+	})
+	@interface Labels
+	{
+		Label[] value();
+	}
+
+	@java.lang.annotation.Target({
+		java.lang.annotation.ElementType.METHOD,
+		java.lang.annotation.ElementType.PARAMETER,
+		java.lang.annotation.ElementType.TYPE,
+	})
+	@java.lang.annotation.Repeatable(Labels.class)
+	@interface Label
+	{
+		String value() default "";
+		Class<?> type() default Label.class;
+		boolean redundant() default true;
+		Text text() default @Text;
+		Tag head() default @Tag();
+		Tag tail() default @Tag(value = "", kind = "");
+	}
+
+	/* Use identity cast expressions to nest TYPE_USE annotations. */
+								@Label(
+							(@Text({
+		(@Text({ "a", "aa", "aaa", "aaaa", }) String) "as",
+		(@Text({ "b", "bb", "bbb", "bbbb", }) String) "bs",
+		(@Text({ "c", "cc", "ccc", "cccc", }) String) "cs",
+		(@Text({ "d", "dd", "ddd", "dddd", }) String) "ds",
+							}) String) "abcd")
+	interface Primer { }
+
+	@Label @Label() @Label("""
+	n\
+	o\
+	O\
+	p""")
+	@Label(head = @Tag(value = "@Label"/*, kind = "name"*/))
+	@Label(// value = "Method",
+		type = Annotations$Tests.class,
+		redundant = !!!(1 != 1),
+		head = @Tag(value = "@Label"),
+		text = @Text({ "})", "({" }))
+	static void noOp(@Label @Label() @Label("dummy")
+		@Label(head = @Tag(/*value = "@Label",*/ kind = "name"))
+		@Label(// value = "Parameter",
+			type = Annotations$Tests.class,
+			head = @Tag(value = "@Label"),
+			text = @Text({ "){", "}(" }))
+		Object dummy)
+	{
+	}
+}
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_generics_signature.java
@@ -0,0 +1,140 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP let g:java_highlight_generics = 1
+// VIM_TEST_SETUP hi link javaGenericsC1 Todo
+// VIM_TEST_SETUP hi link javaGenericsC2 Error
+import java.math.BigInteger;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.LongFunction;
+import java.util.function.Predicate;
+
+class Generics$Tests<T extends Number & Comparable<? super T>, U>
+{	// JDK 21+.
+	static final Function<Function<Object, Object>, Object> PARTIAL =
+						Generics$Tests.y0();
+	static final Function<BigInteger, BigInteger> FACTORIAL_2000 =
+				Generics$Tests.<BigInteger, BigInteger>y1()
+		.apply(f -> x -> (x.compareTo(BigInteger.ONE) < 1)
+			? BigInteger.ONE
+			: x.multiply(f.apply(x.subtract(BigInteger.ONE))));
+
+	static <T1> Y0<T1> y0()
+	{
+		return (Function<T1, T1> f) -> f.apply(
+					Generics$Tests.<T1>y0()
+						.apply(f));
+	}
+
+	static <T1, T2> Y1<T1, T2> y1()
+	{
+		return (Function<Function<T1, T2>, Function<T1, T2>> f) ->
+			(T1 x) -> f.apply(Generics$Tests.<T1, T2>y1()
+						.apply(f))
+				.apply(x);
+	}
+
+	static<T> void noOp(T dummy) { }
+
+	interface alpha<T> { }
+
+	interface Y0<T1> extends Function<Function<T1, T1>, T1> { }
+
+	interface Y1<T1, T2> extends Function<Function<Function<T1, T2>,
+					Function<T1, T2>>,
+					Function<T1, T2>> { }
+
+	interface Stackable<E> extends Iterable<E>
+	{
+		boolean isEmpty();
+		E peek();
+		E pop();
+		Stackable<E> popAll(Stackable<? super E> elements);
+		Stackable<E> popSome(Stackable<? super E> elements,
+					Predicate<? super E> filter);
+		Stackable<E> push(E element);
+		Stackable<E> pushAll(Iterable<? extends E> elements);
+		Stackable<E> pushSome(Iterable<? extends E> elements,
+					Predicate<? super E> filter);
+		Stackable<E> wind(Consumer<? super Stackable<E>> action);
+	}
+
+	sealed interface Num<N extends Number>
+	{
+		int radix();
+		N value();
+	}
+
+	record Bin<N extends Number>(N value) implements Num<N>
+	{
+		public int radix() { return 2; }
+	}
+
+	record Dec<N extends Number>(N value) implements Num<N>
+	{
+		public int radix() { return 10; }
+	}
+
+	record Hex<N extends Number>(N value) implements Num<N>
+	{
+		public int radix() { return 16; }
+	}
+
+	record Oct<N extends Number>(N value) implements Num<N>
+	{
+		public int radix() { return 8; }
+	}
+
+	static Num<Long> fromDecimal(long x, int radix)
+	{
+		record Pair(LongFunction<Num<Long>> a,
+					LongFunction<String> b) { }
+		final Pair p = switch (radix) {
+			case 2 -> new Pair(Bin::new, Long::toBinaryString);
+			case 8 -> new Pair(Oct::new, Long::toOctalString);
+			case 16 -> new Pair(Hex::new, Long::toHexString);
+			default -> new Pair(Dec::new,
+						y -> Long.toString(y));
+		};
+		return p.a().apply(Long.parseLong(p.b().apply(x), radix));
+	}
+
+	static long toDecimal(Num<Long> x)
+	{
+		return Long.parseLong(switch (x) {
+			case Bin<?>(Long b) -> Long.toBinaryString(b);
+			case Oct<?>(Long o) -> Long.toOctalString(o);
+			case Hex<?>(Long h) -> Long.toHexString(h);
+			default -> Long.toString(x.value());
+		}, x.radix());
+	}
+
+	@java.lang.annotation.Target(
+				java.lang.annotation.ElementType.TYPE_USE)
+	@interface Taggable
+	{
+		String value() default "";
+	}
+
+	{
+		int N = 0, X = 1, Y = 2;
+		Predicate<T> f = y->N<y.intValue();
+		Predicate<T> g = y->X<N&&(Integer)y>N;
+		boolean[] bb = {
+			X<N||N>Y, X < Y, X <Y, X <(Y), X<(Y), (X)<Y,
+			Double.isFinite(X<<Y),
+			X<=Y, X<(int)(byte)Y, X<~Y, X<-Y, X<+Y,
+		};
+		Class<?> klass = Generics$Tests.class;
+		Class< java.lang.Class<@Taggable("<>")int[][]> [] [] >
+		[ ] [ ] $ [ ] [ ];
+		if (false) { new Generics$Tests<>(); }
+		alpha<?> ao;
+		alpha<U> au;
+		alpha<alpha<U>> aau;
+		alpha<Y0<?>> ay0o;
+		alpha<Y0<U>> ay0u;
+		Y0<alpha<?>> y0ao;
+		Y0<alpha<U>> y0au;
+	}
+}
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_lambda_expressions_signature.java
@@ -0,0 +1,154 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+
+import java.lang.annotation.ElementType;
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+class LambdaExpressions$Tests	// JDK 21+.
+{
+	<I1, C1, C2, T1, T2, T3, Z1, Z2, Z3, S1, S2, S3> void test()
+	{	// Schönfinkel's functions.
+		I<I1> i = x -> x;
+		C<C1, C2> c = x -> y -> x;
+		T<T1, T2, T3> t = f -> y -> x -> f.apply(x).apply(y);
+		Z<Z1, Z2, Z3> z = f -> g -> x -> f.apply(g.apply(x));
+		S<S1, S2, S3> s = f -> g -> x -> f.apply(x)
+						.apply(g.apply(x));
+
+		I<I1> i01 = (var x) -> x;
+		I<I1> i02 = (@Taggable var x) -> x;
+		I<I1> i03 = (@Taggable @Taggable var x) -> x;
+		I<I1> i04 = (final var x) -> x;
+		I<I1> i05 = (@Taggable final var x) -> x;
+		I<I1> i06 = (@Taggable @Taggable final var x) -> x;
+		I<I1> i07 = (I1 x) -> x;
+		I<I1> i08 = (@Taggable I1 x) -> x;
+		I<I1> i09 = (@Taggable @Taggable I1 x) -> x;
+		I<I1> i10 = (final I1 x) -> x;
+		I<I1> i11 = (@Taggable final I1 x) -> x;
+		I<I1> i12 = (@Taggable @Taggable final I1 x) -> x;
+
+		I<I1[]> ii01 = (I1... x) -> x;
+		I<I1[]> ii02 = (@Taggable I1... x) -> x;
+		I<I1[]> ii03 = (@Taggable @Taggable I1... x) -> x;
+		I<I1[]> ii04 = (final I1... x) -> x;
+		I<I1[]> ii05 = (@Taggable final I1... x) -> x;
+		I<I1[]> ii06 = (@Taggable @Taggable final I1... x) -> x;
+
+		BinaryOperator<I1> leftConst01 = (var x, var y) -> x;
+		BinaryOperator<I1> leftConst02 = (@Taggable var x,
+					@Taggable var y) -> x;
+		BinaryOperator<I1> leftConst03 = (@Taggable @Taggable var
+					x, @Taggable @Taggable var y) -> x;
+		BinaryOperator<I1> leftConst04 = (final var x,
+					final var y) -> x;
+		BinaryOperator<I1> leftConst05 = (@Taggable final
+					var x, @Taggable final var y) -> x;
+		BinaryOperator<I1> leftConst06 = (@Taggable
+					@Taggable final var x,
+					@Taggable
+					@Taggable final var y) -> x;
+		BinaryOperator<I1> leftConst07 = (I1 x, I1 y) -> x;
+		BinaryOperator<I1> leftConst08 = (@Taggable I1 x,
+					@Taggable I1 y) -> x;
+		BinaryOperator<I1> leftConst09 = (@Taggable @Taggable I1
+					x, @Taggable @Taggable I1 y) -> x;
+		BinaryOperator<I1> leftConst10 = (final I1 x,
+					final I1 y) -> x;
+		BinaryOperator<I1> leftConst11 = (@Taggable final
+					I1 x, @Taggable final I1 y) -> x;
+		BinaryOperator<I1> leftConst12 = (@Taggable
+					@Taggable final I1 x,
+					@Taggable
+					@Taggable final I1 y) -> x;
+
+		Runnable noOp = () -> {};
+		BinaryOperator<I1> leftConst = (x, y) -> x;
+		I<I1> id1 = (x) -> (x);
+		@SuppressWarnings("unchecked") I<I1> id2 =
+				((I<I<I1>>) (I<?>) (Function<I1,
+					I1> x) -> x).apply(switch (0) {
+				case ((int) (byte) 1) -> (I1 x) -> x;
+				default -> (@Taggable I1 x) -> x; });
+		C<C1, C2> const1 = (x) -> (y) -> (x);
+		C<C1, C2> const2 = switch(switch ("") {
+						case "->"->"(s)->(s)";
+						default->"default"; }) {
+			case ("->")->(var x)->(var y)->(x);
+			default->(@Taggable var x)->(@Taggable var y)
+				->(x);
+		};
+	}
+
+	@java.lang.annotation.Target(ElementType.PARAMETER)
+	@java.lang.annotation.Repeatable(Taggables.class)
+	@interface Taggable { String[] value() default ""; }
+
+	@java.lang.annotation.Target(ElementType.PARAMETER)
+	@interface Taggables { Taggable[] value(); }
+
+	interface I<A1> extends Function<A1, A1> { }
+	interface C<A1, A2> extends Function<A1, Function<A2, A1>> { }
+	interface T<A1, A2, A3> extends
+				Function<Function<A1, Function<A2, A3>>,
+					Function<A2,
+					Function<A1, A3>>> { }
+	interface Z<A1, A2, A3> extends Function<Function<A2, A3>,
+					Function<Function<A1, A2>,
+					Function<A1, A3>>> { }
+	interface S<A1, A2, A3> extends
+				Function<Function<A1, Function<A2, A3>>,
+					Function<Function<A1, A2>,
+					Function<A1, A3>>> { }
+
+	static void echo(Object o) { System.out.println(o); }
+
+	static {
+		enum Letters { OTHER, ALPHA, BETA }
+
+		Letters other = Letters.OTHER;
+
+		switch (other) {
+		case Letters alpha when Letters.ALPHA == alpha:
+						{ echo(alpha); break; }
+		case Letters beta when Letters.BETA == beta:
+						{ echo(beta); break; }
+		default:			{ echo(other); }
+		}
+
+		echo(switch (other) {
+			case Letters alpha when Letters.ALPHA == alpha
+						-> alpha;
+			case Letters beta when Letters.BETA == beta
+						-> beta;
+			default			-> other;
+		});
+
+		switch (null) {
+		case String str when !"<empty>".equals(switch (str) {
+			case String str_ when
+					Predicate.<String>not(text ->
+							!text.isEmpty())
+						.test(str_)
+							-> "<empty>";
+			case String str_		-> str_;
+			}):			{ echo(str); break; }
+		case null: default:		{ echo("Other"); }
+		};
+
+		echo(switch (null) {
+			case String str when !"<empty>".equals(
+							switch (str) {
+				case String str_ when
+					Predicate.<String>not(text ->
+							!text.isEmpty())
+						.test(str_)
+							-> "<empty>";
+				case String str_	-> str_;
+				})		-> str;
+			case null, default	-> "Other";
+		});
+	}
+}
--- a/runtime/syntax/testdir/input/java_methods_indent2.java
+++ b/runtime/syntax/testdir/input/java_methods_indent2.java
@@ -84,9 +84,21 @@ abstract class Indent2MethodsTests
 enum E2
 {
   @SuppressWarnings("bespoke") A("a"),
-  B("b"),
-  C("c"), D("d"),
-  E("e"), F("f"), G("g"), H("h");
+  B("b"
+    /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+  C("c", new Thread(
+
+    () -> {
+  })), D("d", (java.util.function.BooleanSupplier) () -> true),
+  E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+    transient String name = "";
+    @Override public String toString() { return this.name; }
+  }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+  G("g"), @Deprecated H("h");
+
   final String s;
   private E2(String s) { this.s = s; }
+  private <δ> E2(String s, δ dummy) { this(s); }
+
+  @Override public String toString() { return name().toUpperCase(); }
 }
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent2_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent2'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent2$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+  // TYPES.
+  record Τʬ<α>(α a) { }
+
+  enum E
+  {
+    A("a"), B("b"), C("c"), D("d"),
+    E("e"), F("f"), G("g"), H("h");
+    final String s;
+    private E(String s) { this.s = s; }
+  }
+
+  @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+  @java.lang.annotation.Repeatable(Tɐggablɘs.class)
+  @interface Tɐggablɘ
+  {
+    String[] value() default "";
+  }
+
+  @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+  @interface Tɐggablɘs
+  {
+    Tɐggablɘ[] value();
+  }
+
+  interface Stylable<Α>
+  {
+    default void ascii$0_() { }
+    default Α μʭʭ$0_() { return null; }
+  }
+
+  // FIELDS.
+  private static final Class<?> CLASS_LOCK = classLock();
+
+  private final Object instanceLock = new Object();
+
+  // CONSTRUCTORS.
+  @Tɐggablɘ @Tɐggablɘ protected Indent2$MethodsTests() { }
+  <T extends Comparable<T>> Indent2$MethodsTests(T t, Void v) { }
+  private <T extends Comparable<T>> Indent2$MethodsTests(T t) { }
+
+  // METHODS.
+  @Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+                                                                );
+  @Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+                                @SuppressWarnings("bespoke") β b);
+
+  @Tɐggablɘ private native void ascii$1_(/*////////////*/);
+  @Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+                        java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+  void Ascii$2_() { }
+  <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+  static final native synchronized void ascii$98_();
+  static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+  @SuppressWarnings("strictfp")
+  protected static final synchronized strictfp void ascii$99_()
+  { ascii$98_(); }
+
+  @SuppressWarnings("strictfp")
+  protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+  {
+    return
+  Indent2$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+  }
+
+  public static Class<?> classLock() { return Indent2$MethodsTests.class; }
+
+  @Override @SuppressWarnings("cast")
+  public String toString() { return (String) "Indent2$MethodsTests"; }
+}
+
+enum E2$
+{
+  @SuppressWarnings("bespoke") A("a"),
+  B("b"
+    /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+  C("c", new Thread(
+
+    () -> {
+  })), D("d", (java.util.function.BooleanSupplier) () -> true),
+  E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+    transient String name = "";
+    @Override public String toString() { return this.name; }
+  }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+  G("g"), @Deprecated H("h");
+
+  final String s;
+  private E2$(String s) { this.s = s; }
+  private <δ> E2$(String s, δ dummy) { this(s); }
+
+  @Override public String toString() { return name().toUpperCase(); }
+}
--- a/runtime/syntax/testdir/input/java_methods_indent4.java
+++ b/runtime/syntax/testdir/input/java_methods_indent4.java
@@ -84,9 +84,21 @@ abstract class Indent4MethodsTests
 enum E4
 {
     @SuppressWarnings("bespoke") A("a"),
-    B("b"),
-    C("c"), D("d"),
-    E("e"), F("f"), G("g"), H("h");
+    B("b"
+        /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+    C("c", new Thread(
+
+        () -> {
+    })), D("d", (java.util.function.BooleanSupplier) () -> true),
+    E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+        transient String name = "";
+        @Override public String toString() { return this.name; }
+    }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+    G("g"), @Deprecated H("h");
+
     final String s;
     private E4(String s) { this.s = s; }
+    private <δ> E4(String s, δ dummy) { this(s); }
+
+    @Override public String toString() { return name().toUpperCase(); }
 }
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent4_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent4'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent4$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+    // TYPES.
+    record Τʬ<α>(α a) { }
+
+    enum E
+    {
+        A("a"), B("b"), C("c"), D("d"),
+        E("e"), F("f"), G("g"), H("h");
+        final String s;
+        private E(String s) { this.s = s; }
+    }
+
+    @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+    @java.lang.annotation.Repeatable(Tɐggablɘs.class)
+    @interface Tɐggablɘ
+    {
+        String[] value() default "";
+    }
+
+    @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+    @interface Tɐggablɘs
+    {
+        Tɐggablɘ[] value();
+    }
+
+    interface Stylable<Α>
+    {
+        default void ascii$0_() { }
+        default Α μʭʭ$0_() { return null; }
+    }
+
+    // FIELDS.
+    private static final Class<?> CLASS_LOCK = classLock();
+
+    private final Object instanceLock = new Object();
+
+    // CONSTRUCTORS.
+    @Tɐggablɘ @Tɐggablɘ protected Indent4$MethodsTests() { }
+    <T extends Comparable<T>> Indent4$MethodsTests(T t, Void v) { }
+    private <T extends Comparable<T>> Indent4$MethodsTests(T t) { }
+
+    // METHODS.
+    @Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+                                                                );
+    @Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+                                @SuppressWarnings("bespoke") β b);
+
+    @Tɐggablɘ private native void ascii$1_(/*////////////*/);
+    @Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+                        java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+    void Ascii$2_() { }
+    <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+    static final native synchronized void ascii$98_();
+    static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+    @SuppressWarnings("strictfp")
+    protected static final synchronized strictfp void ascii$99_()
+    { ascii$98_(); }
+
+    @SuppressWarnings("strictfp")
+    protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+    {
+        return
+    Indent4$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+    }
+
+    public static Class<?> classLock() { return Indent4$MethodsTests.class; }
+
+    @Override @SuppressWarnings("cast")
+    public String toString() { return (String) "Indent4$MethodsTests"; }
+}
+
+enum E4$
+{
+    @SuppressWarnings("bespoke") A("a"),
+    B("b"
+        /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+    C("c", new Thread(
+
+        () -> {
+    })), D("d", (java.util.function.BooleanSupplier) () -> true),
+    E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+        transient String name = "";
+        @Override public String toString() { return this.name; }
+    }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+    G("g"), @Deprecated H("h");
+
+    final String s;
+    private E4$(String s) { this.s = s; }
+    private <δ> E4$(String s, δ dummy) { this(s); }
+
+    @Override public String toString() { return name().toUpperCase(); }
+}
--- a/runtime/syntax/testdir/input/java_methods_indent8.java
+++ b/runtime/syntax/testdir/input/java_methods_indent8.java
@@ -84,9 +84,21 @@ abstract class Indent8MethodsTests
 enum E8
 {
         @SuppressWarnings("bespoke") A("a"),
-        B("b"),
-        C("c"), D("d"),
-        E("e"), F("f"), G("g"), H("h");
+        B("b"
+                /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+        C("c", new Thread(
+
+                () -> {
+        })), D("d", (java.util.function.BooleanSupplier) () -> true),
+        E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+                transient String name = "";
+                @Override public String toString() { return this.name; }
+        }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+        G("g"), @Deprecated H("h");
+
         final String s;
         private E8(String s) { this.s = s; }
+        private <δ> E8(String s, δ dummy) { this(s); }
+
+        @Override public String toString() { return name().toUpperCase(); }
 }
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_indent8_signature.java
@@ -0,0 +1,104 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'indent8'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Indent8$MethodsTests
+{ // DO NOT retab! THIS FILE; REMEMBER ABOUT testdir/ftplugin.
+        // TYPES.
+        record Τʬ<α>(α a) { }
+
+        enum E
+        {
+                A("a"), B("b"), C("c"), D("d"),
+                E("e"), F("f"), G("g"), H("h");
+                final String s;
+                private E(String s) { this.s = s; }
+        }
+
+        @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+        @java.lang.annotation.Repeatable(Tɐggablɘs.class)
+        @interface Tɐggablɘ
+        {
+                String[] value() default "";
+        }
+
+        @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+        @interface Tɐggablɘs
+        {
+                Tɐggablɘ[] value();
+        }
+
+        interface Stylable<Α>
+        {
+                default void ascii$0_() { }
+                default Α μʭʭ$0_() { return null; }
+        }
+
+        // FIELDS.
+        private static final Class<?> CLASS_LOCK = classLock();
+
+        private final Object instanceLock = new Object();
+
+        // CONSTRUCTORS.
+        @Tɐggablɘ @Tɐggablɘ protected Indent8$MethodsTests() { }
+        <T extends Comparable<T>> Indent8$MethodsTests(T t, Void v) { }
+        private <T extends Comparable<T>> Indent8$MethodsTests(T t) { }
+
+        // METHODS.
+        @Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+                                                                );
+        @Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+                                @SuppressWarnings("bespoke") β b);
+
+        @Tɐggablɘ private native void ascii$1_(/*////////////*/);
+        @Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+                        java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+        void Ascii$2_() { }
+        <T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+        static final native synchronized void ascii$98_();
+        static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+        @SuppressWarnings("strictfp")
+        protected static final synchronized strictfp void ascii$99_()
+        { ascii$98_(); }
+
+        @SuppressWarnings("strictfp")
+        protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+                        java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+        {
+                return
+        Indent8$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+        }
+
+        public static Class<?> classLock() { return Indent8$MethodsTests.class; }
+
+        @Override @SuppressWarnings("cast")
+        public String toString() { return (String) "Indent8$MethodsTests"; }
+}
+
+enum E8$
+{
+        @SuppressWarnings("bespoke") A("a"),
+        B("b"
+                /*\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\*/),
+        C("c", new Thread(
+
+                () -> {
+        })), D("d", (java.util.function.BooleanSupplier) () -> true),
+        E("e", new char[] { 'a', 'b', 'c', 'd' }), F("f", new Object() {
+                transient String name = "";
+                @Override public String toString() { return this.name; }
+        }), //\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//\//
+        G("g"), @Deprecated H("h");
+
+        final String s;
+        private E8$(String s) { this.s = s; }
+        private <δ> E8$(String s, δ dummy) { this(s); }
+
+        @Override public String toString() { return name().toUpperCase(); }
+}
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_methods_style_signature.java
@@ -0,0 +1,82 @@
+// VIM_TEST_SETUP let g:java_highlight_functions = 'style'
+// VIM_TEST_SETUP let g:java_highlight_signature = 1
+// VIM_TEST_SETUP set encoding=utf-8 termencoding=utf-8
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+abstract class Style$MethodsTests
+{
+	// TYPES.
+	record Τʬ<α>(α a) { }
+
+	enum E
+	{
+		A("a"), B("b"), C("c"), D("d"),
+		E("e"), F("f"), G("g"), H("h");
+		final String s;
+		private E(String s) { this.s = s; }
+	}
+
+	@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+	@java.lang.annotation.Repeatable(Tɐggablɘs.class)
+	@interface Tɐggablɘ
+	{
+		String[] value() default "";
+	}
+
+	@Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
+	@interface Tɐggablɘs
+	{
+		Tɐggablɘ[] value();
+	}
+
+	interface Stylable<Α>
+	{
+		default void ascii$0_() { }
+		default Α μʭʭ$0_() { return null; }
+	}
+
+	// FIELDS.
+	private static final Class<?> CLASS_LOCK = classLock();
+
+	private final Object instanceLock = new Object();
+
+	// CONSTRUCTORS.
+	@Tɐggablɘ @Tɐggablɘ protected Style$MethodsTests() { }
+	<T extends Comparable<T>> Style$MethodsTests(T t, Void v) { }
+	private <T extends Comparable<T>> Style$MethodsTests(T t) { }
+
+	// METHODS.
+	@Tɐggablɘ @Tɐggablɘ abstract void ascii$0_(////////////////
+								);
+	@Tɐggablɘ @Tɐggablɘ abstract <α, β> Τʬ<α> μʭʭ$0_(
+				@SuppressWarnings("bespoke") β b);
+
+	@Tɐggablɘ private native void ascii$1_(/*////////////*/);
+	@Tɐggablɘ private native <α, β> Τʬ<α>[] μʭʭ$1_(
+			java.util.function.Function<β, Τʬ<α>[]> ƒ);
+
+	void Ascii$2_() { }
+	<T, U extends Stylable<T>> void Μʭʭ$2_(U u) { }
+
+	static final native synchronized void ascii$98_();
+	static final native synchronized <α, β> Τʬ<α>[][] μʭʭ$98_(
+			java.util.function.Function<β, Τʬ<α>[][]> ƒ);
+
+	@SuppressWarnings("strictfp")
+	protected static final synchronized strictfp void ascii$99_()
+	{ ascii$98_(); }
+
+	@SuppressWarnings("strictfp")
+	protected static final synchronized strictfp <α, β> Τʬ<α>[] μʭʭ$99_(
+			java.util.function.Function<β, Τʬ<α>[][]> ƒ)
+	{
+		return
+	Style$MethodsTests.<α, β>μʭʭ$98_(ƒ)[0];
+	}
+
+	public static Class<?> classLock() { return Style$MethodsTests.class; }
+
+	@Override @SuppressWarnings("cast")
+	public String toString() { return (String) "Style$MethodsTests"; }
+}