runtime(java): Recognise all available standard doclet tags

Commit: 
https://github.com/vim/vim/commit/a9ae38dc3f42f0dd39dae1311de6e1c289697df4
Author: Aliaksei Budavei <0x000...@gmail.com>
Date:   Tue Sep 10 21:00:33 2024 +0200

    runtime(java): Recognise all available standard doclet tags
    
    * Complement the tag set with @spec, {@systemProperty},
      {@summary}, @provides, @uses, @hidden, and {@index}.
    * Do not hoard all tags under a single highlighting group.
    * Skip over nested balanced braces in inline tags.
    * Observe that tag names are case sensitive: both {@docRoot}
      and {@inheritDoc} are valid, whereas {@inheritdoc} and
      {@docroot} are not.
    * In the @see tag arguments, allow for:
      - module name prefixes (e.g. java.base/java.lang.String);
      - references to arbitrary URI fragments (e.g. ##foo);
      - matching any tag variation arguments on the next line.
    * Test directives and tags for Java module declarations.
    * Enforce the word end for "module-info" candidates.
    
    References:
    https://bugs.openjdk.org/browse/JDK-8226279 (@spec)
    https://bugs.openjdk.org/browse/JDK-8214559 ({@systemProperty})
    https://bugs.openjdk.org/browse/JDK-8173425 ({@summary})
    https://bugs.openjdk.org/browse/JDK-8160196 (@provides & @uses)
    https://bugs.openjdk.org/browse/JDK-8073100 (@hidden)
    https://bugs.openjdk.org/browse/JDK-8044243 ({@index})
    
https://docs.oracle.com/en/java/javase/21/docs/specs/javadoc/doc-comment-spec.html
    
https://github.com/openjdk/jdk/blob/jdk-21-ga/src/jdk.compiler/share/classes/com/sun/source/doctree/DocTree.java
    
    closes: #15652
    
    Signed-off-by: Aliaksei Budavei <0x000...@gmail.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 8aa053d52..293d63c0a 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -3,7 +3,7 @@
 " Maintainer:          Aliaksei Budavei <0x000c70 AT gmail DOT com>
 " Former Maintainer:   Claudio Fleiner <clau...@fleiner.com>
 " Repository:          https://github.com/zzzyxwvut/java-vim.git
-" Last Change:         2024 Aug 26
+" Last Change:         2024 Sep 10
 
 " Please check :help java.vim for comments on some of the options available.
 
@@ -157,13 +157,20 @@ endif
 " testing in a project without attendant confusion for IDEs, with the
 " ".java\=" extension used for a production version and an arbitrary
 " extension used for a testing version.
-if fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
+if fnamemodify(bufname("%"), ":t") =~ '^module-info\>\%(\.class\>\)\@!'
   syn keyword javaModuleStorageClass   module transitive
   syn keyword javaModuleStmt           open requires exports opens uses 
provides
   syn keyword javaModuleExternal       to with
   hi def link javaModuleStorageClass   StorageClass
   hi def link javaModuleStmt           Statement
   hi def link javaModuleExternal       Include
+
+  if !exists("g:java_ignore_javadoc") && g:main_syntax != 'jsp'
+    syn match javaDocProvidesTag       contained "@provides\_s\+\S\+" 
contains=javaDocParam
+    syn match javaDocUsesTag           contained "@uses\_s\+\S\+" 
contains=javaDocParam
+    hi def link javaDocProvidesTag     Special
+    hi def link javaDocUsesTag         Special
+  endif
 endif
 
 " Fancy parameterised types (JLS-17, ยง4.5).
@@ -335,29 +342,99 @@ if !exists("g:java_ignore_javadoc") && g:main_syntax != 
'jsp'
     call s:ReportOnce(v:exception)
   endtry
 
-  syn region javaDocComment    start="/\*\*" end="\*/" keepend 
contains=javaCommentTitle,@javaHtml,javaDocTags,javaDocSeeTag,javaDocCodeTag,javaDocSnippetTag,javaTodo,javaCommentError,javaSpaceError,@Spell
 fold
-  exec 'syn region javaCommentTitle contained matchgroup=javaDocComment 
start="/\*\*" matchgroup=javaCommentTitle end="\.$" end="\.[   
]\@=" end="\%(^\s*\**\s*\)\@' . s:ff.Peek('80', '') . '<=@"me=s-2,he=s-1 
end="\*/"me=s-1,he=s-1 
contains=@javaHtml,javaCommentStar,javaTodo,javaCommentError,javaSpaceError,@Spell,javaDocTags,javaDocSeeTag,javaDocCodeTag,javaDocSnippetTag'
-  syn region javaCommentTitle  contained matchgroup=javaDocComment 
start="/\*\*\s*
\=
\=\s*\**\s*\%({@return\>\)\@=" matchgroup=javaCommentTitle end="}\%(\s*\.*\)*" 
contains=@javaHtml,javaCommentStar,javaTodo,javaCommentError,javaSpaceError,@Spell,javaDocTags,javaDocSeeTag,javaDocCodeTag,javaDocSnippetTag
-  syn region javaDocTags       contained 
start="{@\%(li\%(teral\|nk\%(plain\)\=\)\|inherit[Dd]oc\|doc[rR]oot\|value\)\>" 
end="}"
-  syn match  javaDocTags       contained 
"@\%(param\|exception\|throws\|since\)\s\+\S\+" contains=javaDocParam
-  syn match  javaDocParam      contained "\s\S\+"
-  syn match  javaDocTags       contained 
"@\%(version\|author\|return\|deprecated\|serial\%(Field\|Data\)\=\)\>"
-  syn region javaDocSeeTag     contained matchgroup=javaDocTags 
start="@see\s\+" matchgroup=NONE end="\_."re=e-1 contains=javaDocSeeTagParam
-  syn match  javaDocSeeTagParam        contained 
@"\_[^"]\+"\|<a\s\+\_.\{-}</a>\|\%(\k\|\.\)*\%(#\k\+\%((\_[^)]*)\)\=\)\=@ 
contains=@javaHtml extend
+  syn region javaDocComment    start="/\*\*" end="\*/" keepend 
contains=javaCommentTitle,@javaHtml,@javaDocTags,javaTodo,javaCommentError,javaSpaceError,@Spell
 fold
+  exec 'syn region javaCommentTitle contained matchgroup=javaDocComment 
start="/\*\*" matchgroup=javaCommentTitle end="\.$" end="\.[   
]\@=" end="\%(^\s*\**\s*\)\@' . s:ff.Peek('80', '') . '<=@"me=s-2,he=s-1 
end="\*/"me=s-1,he=s-1 
contains=@javaHtml,javaCommentStar,javaTodo,javaCommentError,javaSpaceError,@Spell,@javaDocTags'
+  syn region javaCommentTitle  contained matchgroup=javaDocComment 
start="/\*\*\s*
\=
\=\s*\**\s*\%({@return\>\)\@=" matchgroup=javaCommentTitle end="}\%(\s*\.*\)*" 
contains=@javaHtml,javaCommentStar,javaTodo,javaCommentError,javaSpaceError,@Spell,@javaDocTags,javaTitleSkipBlock
+  syn region javaCommentTitle  contained matchgroup=javaDocComment 
start="/\*\*\s*
\=
\=\s*\**\s*\%({@summary\>\)\@=" matchgroup=javaCommentTitle end="}" 
contains=@javaHtml,javaCommentStar,javaTodo,javaCommentError,javaSpaceError,@Spell,@javaDocTags,javaTitleSkipBlock
+  " The members of javaDocTags are sub-grouped according to the Java
+  " version of their introduction, and sub-group members in turn are
+  " arranged in alphabetical order, so that future newer members can
+  " be pre-sorted and appended without disturbing the current member
+  " placement.
+  " Since they only have significance in javaCommentTitle, neither
+  " javaDocSummaryTag nor javaDocReturnTitleTag are defined.
+  syn cluster javaDocTags      
contains=javaDocAuthorTag,javaDocDeprecatedTag,javaDocExceptionTag,javaDocParamTag,javaDocReturnTag,javaDocSeeTag,javaDocVersionTag,javaDocSinceTag,javaDocLinkTag,javaDocSerialTag,javaDocSerialDataTag,javaDocSerialFieldTag,javaDocThrowsTag,javaDocDocRootTag,javaDocInheritDocTag,javaDocLinkplainTag,javaDocValueTag,javaDocCodeTag,javaDocLiteralTag,javaDocHiddenTag,javaDocIndexTag,javaDocProvidesTag,javaDocUsesTag,javaDocSystemPropertyTag,javaDocSnippetTag,javaDocSpecTag
+
+  " Anticipate non-standard inline tags in {@return} and {@summary}.
+  syn region javaTitleSkipBlock        contained transparent 
start="{\%(@\%(return\|summary\)\>\)\@!" end="}"
+  syn match  javaDocDocRootTag contained "{@docRoot}"
+  syn match  javaDocInheritDocTag contained "{@inheritDoc}"
+  syn region javaIndexSkipBlock        contained transparent 
start="{\%(@index\>\)\@!" end="}" contains=javaIndexSkipBlock,javaDocIndexTag
+  syn region javaDocIndexTag   contained start="{@index\>" end="}" 
contains=javaDocIndexTag,javaIndexSkipBlock
+  syn region javaLinkSkipBlock contained transparent start="{\%(@link\>\)\@!" 
end="}" contains=javaLinkSkipBlock,javaDocLinkTag
+  syn region javaDocLinkTag    contained start="{@link\>" end="}" 
contains=javaDocLinkTag,javaLinkSkipBlock
+  syn region javaLinkplainSkipBlock contained transparent 
start="{\%(@linkplain\>\)\@!" end="}" 
contains=javaLinkplainSkipBlock,javaDocLinkplainTag
+  syn region javaDocLinkplainTag contained start="{@linkplain\>" end="}" 
contains=javaDocLinkplainTag,javaLinkplainSkipBlock
+  syn region javaLiteralSkipBlock contained transparent 
start="{\%(@literal\>\)\@!" end="}" 
contains=javaLiteralSkipBlock,javaDocLiteralTag
+  syn region javaDocLiteralTag contained start="{@literal\>" end="}" 
contains=javaDocLiteralTag,javaLiteralSkipBlock
+  syn region javaSystemPropertySkipBlock contained transparent 
start="{\%(@systemProperty\>\)\@!" end="}" 
contains=javaSystemPropertySkipBlock,javaDocSystemPropertyTag
+  syn region javaDocSystemPropertyTag contained start="{@systemProperty\>" 
end="}" contains=javaDocSystemPropertyTag,javaSystemPropertySkipBlock
+  syn region javaValueSkipBlock        contained transparent 
start="{\%(@value\>\)\@!" end="}" contains=javaValueSkipBlock,javaDocValueTag
+  syn region javaDocValueTag   contained start="{@value\>" end="}" 
contains=javaDocValueTag,javaValueSkipBlock
+
+  syn match  javaDocParam      contained "\s\zs\S\+"
+  syn match  javaDocExceptionTag contained "@exception\s\+\S\+" 
contains=javaDocParam
+  syn match  javaDocParamTag   contained "@param\s\+\S\+" contains=javaDocParam
+  syn match  javaDocSinceTag   contained "@since\s\+\S\+" contains=javaDocParam
+  syn match  javaDocThrowsTag  contained "@throws\s\+\S\+" 
contains=javaDocParam
+  syn match  javaDocSpecTag    contained "@spec\_s\+\S\+\ze\_s\+\S\+" 
contains=javaDocParam
+
+  syn match  javaDocAuthorTag  contained "@author\>"
+  syn match  javaDocDeprecatedTag contained "@deprecated\>"
+  syn match  javaDocHiddenTag  contained "@hidden\>"
+  syn match  javaDocReturnTag  contained "@return\>"
+  syn match  javaDocSerialTag  contained "@serial\>"
+  syn match  javaDocSerialDataTag contained "@serialData\>"
+  syn match  javaDocSerialFieldTag contained "@serialField\>"
+  syn match  javaDocVersionTag contained "@version\>"
+
+  syn match  javaDocSeeTag     contained "@see\>" 
nextgroup=javaDocSeeTag1,javaDocSeeTag2,javaDocSeeTag3,javaDocSeeTagStar 
skipwhite skipempty
+  syn match  javaDocSeeTagStar contained "^\s*\*\+\%(\s*{\=@\|/\|$\)\@!" 
nextgroup=javaDocSeeTag1,javaDocSeeTag2,javaDocSeeTag3 skipwhite skipempty
+  syn match  javaDocSeeTag1    contained @"\_[^"]\+"@
+  syn match  javaDocSeeTag2    contained @<a\s\+\_.\{-}</a>@ 
contains=@javaHtml extend
+  syn match  javaDocSeeTag3    contained @["<  
]\@!\%(\k\|[/.]\)*\%(##\=\k\+\%((\_[^)]*)\)\=\)\=@ 
nextgroup=javaDocSeeTag3Label skipwhite skipempty
+  syn match  javaDocSeeTag3Label contained @\k\%(\k\+\s*\)*$@
+
   syn region javaCodeSkipBlock contained transparent start="{\%(@code\>\)\@!" 
end="}" contains=javaCodeSkipBlock,javaDocCodeTag
   syn region javaDocCodeTag    contained start="{@code\>" end="}" 
contains=javaDocCodeTag,javaCodeSkipBlock
+
   exec 'syn region javaDocSnippetTagAttr contained transparent 
matchgroup=javaHtmlArg start=/\<\%(class\|file\|id\|lang\|region\)\%(\s*=\)\@=/ 
matchgroup=javaHtmlString end=/:$/ end=/\%(=\s*\)\@' . s:ff.Peek('80', '') . 
'<=\%("[^"]\+"\|' . "\x27[^\x27]\+\x27" . '\|\%([.\/-]\|\k\)\+\)/ 
nextgroup=javaDocSnippetTagAttr skipwhite skipnl'
   syn region javaSnippetSkipBlock contained transparent 
start="{\%(@snippet\>\)\@!" end="}" 
contains=javaSnippetSkipBlock,javaDocSnippetTag,javaCommentMarkupTag
   syn region javaDocSnippetTag contained start="{@snippet\>" end="}" 
contains=javaDocSnippetTag,javaSnippetSkipBlock,javaDocSnippetTagAttr,javaCommentMarkupTag
 
   syntax case match
   hi def link javaDocComment           Comment
+  hi def link javaDocSeeTagStar                javaDocComment
   hi def link javaCommentTitle         SpecialComment
-  hi def link javaDocTags              Special
+  hi def link javaDocParam             Function
+
+  hi def link javaDocAuthorTag         Special
   hi def link javaDocCodeTag           Special
+  hi def link javaDocDeprecatedTag     Special
+  hi def link javaDocDocRootTag                Special
+  hi def link javaDocExceptionTag      Special
+  hi def link javaDocHiddenTag         Special
+  hi def link javaDocIndexTag          Special
+  hi def link javaDocInheritDocTag     Special
+  hi def link javaDocLinkTag           Special
+  hi def link javaDocLinkplainTag      Special
+  hi def link javaDocLiteralTag                Special
+  hi def link javaDocParamTag          Special
+  hi def link javaDocReturnTag         Special
+  hi def link javaDocSeeTag            Special
+  hi def link javaDocSeeTag1           String
+  hi def link javaDocSeeTag2           Special
+  hi def link javaDocSeeTag3           Function
+  hi def link javaDocSerialTag         Special
+  hi def link javaDocSerialDataTag     Special
+  hi def link javaDocSerialFieldTag    Special
+  hi def link javaDocSinceTag          Special
   hi def link javaDocSnippetTag                Special
-  hi def link javaDocSeeTagParam       Function
-  hi def link javaDocParam             Function
+  hi def link javaDocSpecTag           Special
+  hi def link javaDocSystemPropertyTag Special
+  hi def link javaDocThrowsTag         Special
+  hi def link javaDocValueTag          Special
+  hi def link javaDocVersionTag                Special
 endif
 
 " match the special comment /**/
diff --git a/runtime/syntax/testdir/dumps/java_comments_00.dump 
b/runtime/syntax/testdir/dumps/java_comments_00.dump
index a629664e8..f0ecd9d5a 100644
--- a/runtime/syntax/testdir/dumps/java_comments_00.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_00.dump
@@ -1,20 +1,20 @@
->/+0#0000e05#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| 
|g+0&#5fd7ff255|:+0&#ffffff0|j|a|v|a|_|i|g|n|o|r|e|_|j+0&#ffd7d7255|a|v|a|d|o|c|
 +0&#ffffff0|g|:|j|a|v|a|_|n|o|_|t|r|a|i|l|_|s|p|a|c|e|_|e|r@1|o|r| +0#0000000&
-|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |u|n|l|e|t|!| 
|g+0&#5fd7ff255|:+0&#ffffff0|j|a|v|a|_|n|o|_|t|a|b|_|s|p|a|c|e|_|e|r@1|o|r| 
+0#0000000&@24
-|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|[|g|:|j|a|v|a|_|s|p|a|c|e|_|e|r@1|o|r|s|,|g|:|j|a|v|a|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s|]|
 |=| |[|1+0#e000002&|,+0#0000e05&|1+0#e000002&|]+0#0000e05&| +0#0000000&
-|/+0#0000e05&@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |s+0&#ffd7d7255|e|t|l|o|c|a|l| 
+0&#ffffff0|s|p|e|l@1| ||| |h|i|g|h|l|i|g|h|t| |l|i|n|k| 
|j+0&#ffd7d7255|a|v|a|C|o|m@1|e|n|t|S|t|a|r|t| 
+0&#ffffff0|T+0&#ffd7d7255|o|d|o| +0#0000000#ffffff0@3
-@75
-@75
-@75
-@75
-|/+0#0000e05&|*@1|/| +0#0000000&|/+0#0000001#ffff4012|*|/+0#0000e05#ffffff0| 
|*+0#0000001#ffff4012|/| +0#0000000#ffffff0|/+0#0000001#ffff4012|*| 
+0#0000e05#ffffff0|/+0#ffffff16#ff404010|*+0#0000001#ffff4012|/| 
+0#0000000#ffffff0|/+0#0000001#ffff4012|*|/+0#ffffff16#ff404010|*+0#0000001#ffff4012|/|
 
+0#0000000#ffffff0|/+0#0000001#ffff4012|*|/+0#0000e05#ffffff0|/+0#ffffff16#ff404010|*+0#0000001#ffff4012|/|
 +0#0000000#ffffff0|/+0#0000e05&|*@1| +0#e000e06&|C|o|m@1|e|n|t| |t|e|s|t|s|.| 
+0#0000000&@24
-| +0#0000e05&|*| 
|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000e05&|h|e|r|e| |i|s| |n|o| 
|e|n|t|r|y| |p|o|i|n|t| |m|e|t|h|o|d| |{+0#e000e06&|@|c|o|d|e| 
|m|a|i|n|}|:+0#0000e05&| +0#0000000&@24
-| +0#0000e05&|*| |{+0#e000e06&|@|s|n|i|p@1|e|t| |f+0#00e0003&|i|l|e| 
+0#e000e06&|=| |S+0#e000002&|n|i|p@1|e|t|s|.|j|a|v|a| 
+0#e000e06&|r+0#00e0003&|e|g|i|o|n| +0#e000e06&|=| |m+0#e000002&|a|i|n| 
+0#e000e06&|i+0#00e0003&|d| +0#e000e06&|=| |_+0#e000002&|0|1|}+0#e000e06&| 
+0#0000000&@17
-| +0#0000e05&|*| 
|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000e05&|h|e|r|e| |i|s| |n|o| 
|t|e|x|t|u|a|l| |r|e|p|r|e|s|e|n|t|a|t|i|o|n|:| +0#0000000&@33
-| +0#0000e05&|*| |{+0#e000e06&|@|s|n|i|p@1|e|t| |c+0#00e0003&|l|a|s@1| 
+0#e000e06&|=| |S+0#e000002&|n|i|p@1|e|t|s| +0#e000e06&|r+0#00e0003&|e|g|i|o|n| 
+0#e000e06&|=| |t+0#e000002&|o|S|t|r|i|n|g| +0#e000e06&|i+0#00e0003&|d| 
+0#e000e06&|=| |_+0#e000002&|0|2|}+0#e000e06&| +0#0000e05&|*|/| +0#0000000&@14
-|c+0#00e0003&|l|a|s@1| +0#0000000&|C|o|m@1|e|n|t|s|T|e|s|t|s| @55
-|{| @73
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.| 
+0#0000e05&|e+0&#5fd7ff255|.+0&#ffffff0| |n+0&#5fd7ff255|o| 
+0&#ffffff0|o|p|e|r|a|t|i|o|n|.| +0#0000000&@40
-| +0#0000e05&@3|*| |(|{+0#e000e06&|@|l|i|t|e|r|a|l|@|l|i|t|e|r|a|l|}| 
+0#0000e05&|m|a|y| |b|e| |u|s|e|d| |w|i|t|h| |{+0#e000e06&|@|c|o|d|e| |.|}| 
+0#0000e05&|f|o|r| |c|o|n|t|r|a|c|t|i|o|n|.|)| +0#0000000&@4
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4|V|o|i|d| |n|o|O|p|1|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
+| +0#0000e05#a8a8a8255@1>/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| 
|u|n|l|e|t|!| 
|g+0&#5fd7ff255|:+0&#ffffff0|j|a|v|a|_|n|o|_|t|a|b|_|s|p|a|c|e|_|e|r@1|o|r| 
|g|:|j|a|v|a|_|i|g|n|o|r|e|_|j+0&#ffd7d7255|a|v|a|d|o|c| +0#0000000#ffffff0
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| 
|u|n|l|e|t|!| 
|g+0&#5fd7ff255|:+0&#ffffff0|j|a|v|a|_|n|o|_|t|r|a|i|l|_|s|p|a|c|e|_|e|r@1|o|r| 
+0#0000000&@20
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| |l|e|t| 
|[|g|:|j|a|v|a|_|s|p|a|c|e|_|e|r@1|o|r|s|,|g|:|j|a|v|a|_|c|o|m@1|e|n|t|_|s|t|r|i|n|g|s|]|=|[|1+0#e000002&|,+0#0000e05&|1+0#e000002&|]+0#0000e05&|
 +0#0000000&
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| 
|s+0&#ffd7d7255|e|t|l|o|c|a|l| +0&#ffffff0|s|p|e|l@1| 
|f+0&#ffd7d7255|d|c|=+0&#ffffff0|2+0#e000002&| 
+0#0000e05&|f+0&#ffd7d7255|d|l|=+0&#ffffff0|6+0#e000002&|4| 
+0#0000e05&|f+0&#ffd7d7255|d|m|=+0&#ffffff0|s|y|n|t|a|x| |f|e|n| +0#0000000&@12
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| 
|h|i|g|h|l|i|g|h|t| |l|i|n|k| |j+0&#ffd7d7255|a|v|a|C|o|m@1|e|n|t|S|t|a|r|t| 
+0&#ffffff0|T+0&#ffd7d7255|o|d|o| +0#0000000#ffffff0@18
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |V|I|M|_|T|E|S|T|_|S|E|T|U|P| 
|h|i|g|h|l|i|g|h|t| |l|i|n|k| |j+0&#ffd7d7255|a|v|a|C|o|m@1|e|n|t|T|i|t|l|e| 
+0&#ffffff0|U|n|d|e|r|l|i|n|e|d| +0#0000000&@12
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
 @57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_01.dump 
b/runtime/syntax/testdir/dumps/java_comments_01.dump
index 77d7c4acf..ab6007b2e 100644
--- a/runtime/syntax/testdir/dumps/java_comments_01.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_01.dump
@@ -1,20 +1,20 @@
-|c+0#00e0003#ffffff0|l|a|s@1| +0#0000000&|C|o|m@1|e|n|t|s|T|e|s|t|s| @55
-|{| @73
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.| 
+0#0000e05&|e+0&#5fd7ff255|.+0&#ffffff0| |n+0&#5fd7ff255|o| 
+0&#ffffff0|o|p|e|r|a|t|i|o|n|.| +0#0000000&@40
-| +0#0000e05&@3|*| |(|{+0#e000e06&|@|l|i|t|e|r|a|l|@|l|i|t|e|r|a|l|}| 
+0#0000e05&|m|a|y| |b|e| |u|s|e|d| |w|i|t|h| |{+0#e000e06&|@|c|o|d|e| |.|}| 
+0#0000e05&|f|o|r| |c|o|n|t|r|a|c|t|i|o|n|.|)| +0#0000000&@4
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4>V|o|i|d| |n|o|O|p|1|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.| +0#0000e05&|n|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@41
-| +0#0000e05&@3|*| |(|{+0#e000e06&|@|l|i|t|e|r|a|l|<|!|-@1| |-@1|>|}| 
+0#0000e05&|m|a|y| |b|e| |u|s|e|d| |a|f|t|e|r| |{+0#e000e06&|@|c|o|d|e| |.|}| 
+0#0000e05&|f|o|r| |c|o|n|t|r|a|c|t|i|o|n|.|)| +0#0000000&@3
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4|V|o|i|d| |n|o|O|p|2|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|\|u+0&#ffd7d7255|0@1|2|e| 
+0&#ffffff0|n|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@36
-| +0#0000e05&@3|*| |(|{+0#e000e06&|@|l|i|t|e|r|a|l|\|u|0@1|5|c|u|0@1|2|e|}| 
+0#0000e05&|i|s| |p|r|o|c|e|s@1|e|d| |e|a|r|l|y|,| |u|s|e| 
|a|l|t|e|r|n|a|t|i|v|e|s|.|)| +0#0000000&@7
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4|V|o|i|d| |n|o|O|p|3|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|{|@|l|i|t|e|r|a|l| |.|}| 
|n|o| |o|p|e|r|a|t|i|o|n|.| +0#0000000&@30
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@57|1|9|,|2|-|5| @7|1|8|%| 
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1> +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| |/+0&#ffffff0|*@1|/| 
+0#0000000&|/+0#0000001#ffff4012|*|/+0#0000e05#ffffff0| 
|*+0#0000001#ffff4012|/| +0#0000000#ffffff0|/+0#0000001#ffff4012|*| 
+0#0000e05#ffffff0|/+0#ffffff16#ff404010|*+0#0000001#ffff4012|/| 
+0#0000000#ffffff0|/+0#0000001#ffff4012|*|/+0#ffffff16#ff404010|*+0#0000001#ffff4012|/|
 
+0#0000000#ffffff0|/+0#0000001#ffff4012|*|/+0#0000e05#ffffff0|/+0#ffffff16#ff404010|*+0#0000001#ffff4012|/|
 +0#0000000#ffffff0|/+0#0000e05&|*@1| +8#e000e06&|C|o|m@1|e|n|t| |t|e|s|t|s|.| 
+0#0000000&@22
+||+0#0000e05#a8a8a8255| | +0&#ffffff0|*| 
|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000e05&|h|e|r|e| |i|s| |n|o| 
|e|n|t|r|y| |p|o|i|n|t| |m|e|t|h|o|d| |{+0#e000e06&|@|c|o|d|e| 
|m|a|i|n|}|:+0#0000e05&| +0#0000000&@22
+||+0#0000e05#a8a8a8255| | +0&#ffffff0|*| |{+0#e000e06&|@|s|n|i|p@1|e|t| 
|f+0#00e0003&|i|l|e| +0#e000e06&|=| |S+0#e000002&|n|i|p@1|e|t|s|.|j|a|v|a| 
+0#e000e06&|r+0#00e0003&|e|g|i|o|n| +0#e000e06&|=| |m+0#e000002&|a|i|n| 
+0#e000e06&|i+0#00e0003&|d| +0#e000e06&|=| |_+0#e000002&|0|1|}+0#e000e06&| 
+0#0000000&@15
+||+0#0000e05#a8a8a8255| | +0&#ffffff0|*| 
|<+0#00e0e07&|p+0#af5f00255&|>+0#00e0e07&|T+0#0000e05&|h|e|r|e| |i|s| |n|o| 
|t|e|x|t|u|a|l| |r|e|p|r|e|s|e|n|t|a|t|i|o|n|:| +0#0000000&@31
+||+0#0000e05#a8a8a8255| | +0&#ffffff0|*| |{+0#e000e06&|@|s|n|i|p@1|e|t| 
|c+0#00e0003&|l|a|s@1| +0#e000e06&|=| |S+0#e000002&|n|i|p@1|e|t|s| 
+0#e000e06&|r+0#00e0003&|e|g|i|o|n| +0#e000e06&|=| |t+0#e000002&|o|S|t|r|i|n|g| 
+0#e000e06&|i+0#00e0003&|d| +0#e000e06&|=| |_+0#e000002&|0|2|}+0#e000e06&| 
+0#0000e05&|*|/| +0#0000000&@12
+| +0#0000e05#a8a8a8255@1|c+0#00e0003#ffffff0|l|a|s@1| 
+0#0000000&|C|o|m@1|e|n|t|s|T|e|s|t|s| |i+0#00e0003&|m|p|l|e|m|e|n|t|s| 
+0#0000000&|C|o|m|p|a|r|a|b|l|e|<|C|o|m@1|e|n|t|s|T|e|s|t|s|>| @16
+| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @71
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|p+0#00e0003&|r|i|v|a|t|e| 
+0#0000000&|C|o|m@1|e|n|t|s|T|e|s|t|s|(|)| |{| |}| @41
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|N|o|-|o|p|,| |i|.| +0#0000e05&|e+0&#5fd7ff255|.+0&#ffffff0| 
|n+0&#5fd7ff255|o| +0&#ffffff0|o|p|e|r|a|t|i|o|n|.| +0#0000000&@38
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| 
|(|{+0#e000e06&|@|l|i|t|e|r|a|l|@|l|i|t|e|r|a|l|}| +0#0000e05&|m|a|y| |b|e| 
|u|s|e|d| |w|i|t|h| |{+0#e000e06&|@|c|o|d|e| |.|}| +0#0000e05&|f|o|r| 
|c|o|n|t|r|a|c|t|i|o|n|.|)| +0#0000000&@2
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+@57|1|9|,|0|-|1| @7|1|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_02.dump 
b/runtime/syntax/testdir/dumps/java_comments_02.dump
index 25babc766..03c4bcfc1 100644
--- a/runtime/syntax/testdir/dumps/java_comments_02.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_02.dump
@@ -1,20 +1,20 @@
-| +0#0000e05#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4|V|o|i|d| |n|o|O|p|4|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.|<|!|-@1| |-@1|>| |n|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@33
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4>V|o|i|d| |n|o|O|p|5|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|N|o|-|o|p|,| |i|.|e|.|&|n|b|s|p|;|n|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@36
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@45
-@4|V|o|i|d| |n|o|O|p|6|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| |{+0#e000e06&|@|r|e|t|u|r|n| |{|@|c|o|d|e| |n|u|l@1|}|,| 
|w|i|t|h| |n|o|-|o|p|,| |i|.|e|.| |n|o| |o|p|e|r|a|t|i|o|n|}| |*+0#0000e05&|/| 
+0#0000000&@10
-@4|V|o|i|d| |n|o|O|p|7|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| |{+0#e000e06&|@|r|e|t|u|r|n| |{|@|c|o|d|e| |n|u|l@1|}|,| 
|w|i|t|h| |n|o|-|o|p|,| |i|.|e|.| |n|o| |o|p|e|r|a|t|i|o|n|}|.@1| 
|*+0#0000e05&|/| +0#0000000&@8
-@4|V|o|i|d| |n|o|O|p|8|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| |{+0#e000e06&|@|r|e|t|u|r|n| |{|@|c|o|d|e| |n|u|l@1|}|,| 
|w|i|t|h| |n|o|-|o|p|,| |i|.|e|.| |n|o| |o|p|e|r|a|t|i|o|n|}| |.| |.| 
|*+0#0000e05&|/| +0#0000000&@6
-@4|V|o|i|d| |n|o|O|p|9|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@57|3|7|,|2|-|5| @7|4|3|%| 
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|1|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|N|o|-|o|p|,| |i|.|e|.| +0#0000e05&|n|o| |o|p|e|r|a|t|i|o|n|.| 
+0#0000000&@39
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| 
|(|{+0#e000e06&|@|l|i|t|e|r|a|l|<|!|-@1| |-@1|>|}| +0#0000e05&|m|a|y| |b|e| 
|u|s|e|d| |a|f|t|e|r| |{+0#e000e06&|@|c|o|d|e| |.|}| +0#0000e05&|f|o|r| 
|c|o|n|t|r|a|c|t|i|o|n|.|)| +0#0000000&@1
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3>*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|2|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|N|o|-|o|p|,| |i|.|e|\|u+8&#ffd7d7255|0@1|2|e| +8&#ffffff0|n|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@34
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| 
|(|{+0#e000e06&|@|l|i|t|e|r|a|l|\|u|0@1|5|c|u|0@1|2|e|}| +0#0000e05&|i|s| 
|p|r|o|c|e|s@1|e|d| |e|a|r|l|y|,| |u|s|e| |a|l|t|e|r|n|a|t|i|v|e|s|.|)| 
+0#0000000&@5
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|3|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|N|o|-|o|p|,| |i|.|e|{+0&&|@|l|i|t|e|r|a|l| |.|}| +8&&|n|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@28
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|4|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|N|o|-|o|p|,| |i|.|e|.|<+0&&|!|-@1| |-@1|>| +8&&|n|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@31
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+@57|3|7|,|2|-|5| @7|3|0|%| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_03.dump 
b/runtime/syntax/testdir/dumps/java_comments_03.dump
index f3f8d56f3..a407805ee 100644
--- a/runtime/syntax/testdir/dumps/java_comments_03.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_03.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|V|o|i|d| |n|o|O|p|9|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @41
-@75
-@4|/+0#0000e05&|*@1| +0#e000e06&|R|e|t|u|r|n|s| |a|n| |e|m|p|t|y| 
|s|t|r|i|n|g| |f|o|r| |a|n| |@|O|v|e|r@1|i|d|e| |a|n@1|o|t|a|t|e|d| 
|m|e|t|h|o|d| +0#0000000&@9
-| +0#0000e05&@3|*| +0#e000e06&|(|s|e@1| |C|h|a|p|t|e|r| |9|.|6|.|4|.|4| 
|{|@|l|i|t|e|r|a|l| |@|O|v|e|r@1|i|d|e|}| |i|n| |a| |J|a|v|a| |L|a|n|g|u|a|g|e| 
+0#0000000&@8
-| +0#0000e05&@3|*| +0#e000e06&|S|p|e|c|i|f|i|c|a|t|i|o|n|)| 
|o|v|e|r@1|i|d@1|e|n| |f|r|o|m| 
|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&|j+0#e000e06&|a|v|a|.|l+0&#ffd7d7255|a|n|g|.+0&#ffffff0|O|b|j|e|c|t|<+0#00e0e07&|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&|
 +0#0000000&@8
-| +0#0000e05&@3>*| +0#0000000&@69
-| +0#0000e05&@3|*| |@+0#e000e06&|r|e|t|u|r|n| +0#0000e05&|a|n| |e|m|p|t|y| 
|s|t|r|i|n|g| |*|/@2| |N|o| |p|e|r|i|o|d| |f|o|r| |t|h|e| |a|b|o|v|e| 
|s|u|m@1|a|r|y|!| +0#0000000&@7
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| 
+0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @21
-|}| @73
-@75
-|/+0#0000e05&@1| |j+0&#ffd7d7255|a|v|a|d|o|c| 
+0&#ffffff0|-@1|s|n|i|p@1|e|t|-|p|a|t|h| |.| |-@1|s|o|u|r|c|e|-|p|a|t|h| |.| 
|-|d| |/|t+0&#ffd7d7255|m|p|/+0&#ffffff0|d|o|c|/| |-|p|a|c|k|a|g|e| |\| 
+0#0000000&@7
-|/+0#0000e05&@1| +0#ffffff16#ff404010| +0#0000e05#ffffff0|-|t|a|g| 
|'|j+0&#ffd7d7255|l|s|:+0&#ffffff0|a|:|S|e@1| |J|a|v|a| |L|a|n|g|u|a|g|e| 
|S|p|e|c|i|f|i|c|a|t|i|o|n|:|'| |S|n|i|p@1|e|t|s|.|j|a|v|a| +0#0000000&@11
-|/+0#0000e05&|*@1| +0#e000e06&|S|n|i|p@1|e|t|s| |f|o|r| |c|o|m@1|e|n|t| 
|t|e|s|t|s|.| +0#0000e05&|*|/| +0#0000000&@40
-|c+0#00e0003&|l|a|s@1| +0#0000000&|S|n|i|p@1|e|t|s| @60
-|{| @2|/+0#0000001#ffff4012|*| +0#ffffff16#ff404010| 
+0#0000e05#ffffff0|T|R|A|I|L|I|N|G| |B|L|A|N|K|S| |A|N|D| 
|M+0&#ffd7d7255|E|S@1|P|I|L@1|I|N|G|S| +0&#ffffff0|A|R|E| 
|S|I|G|N|I|F|I|C|A|N|T|!| |*+0#0000001#ffff4012|/| +0#0000000#ffffff0@14
-@4|/+0#0000e05&|*@1| +0#e000e06&|T|h|e| |m|e|t|h|o|d| |{|@|c|o|d|e| 
|m|a|i|n|}| |m|u|s|t| |b|e| |d|e|c|l|a|r|e|d| |{|@|c|o|d|e| |p|u|b|l|i|c|}|,| 
|{|@|c|o|d|e| +0#0000000&@3
-| +0#e000e06&@4|*| |s|t|a|t|i|c|}|,| |a|n|d| |{|@|c|o|d|e| |v|o|i|d|}|.| 
+0#0000e05&@1|I|t| |m|u|s|t| |s|p|e|c|i|f|y| |a| |f|o|r|m|a|l| 
|p|a|r|a|m|e|t|e|r| +0#0000000&@5
-| +0#0000e05&@4|*| |w|h|o|s|e| |d|e|c|l|a|r|e|d| |t|y|p|e| |i|s| |a|r@1|a|y| 
|o|f| |{+0#e000e06&|@|l|i|n|k| |S|t|r|i|n|g|}|.+0#0000e05&| 
@1|T|h|e|r|e|f|o|r|e|,| +0#0000000&@8
-| +0#0000e05&@4|*| |e|i|t|h|e|r| |o|f| |t|h|e| |f|o|l@1|o|w|i|n|g| 
|d|e|c|l|a|r|a|t|i|o|n|s| |i|s| |a|c@1|e|p|t|a|b|l|e|:| +0#0000000&@16
-@57|5@1|,|2|-|5| @7|6|9|%| 
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|5|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|N|o|-|o|p|,| |i|.|e|.|&+0&&|n|b|s|p|;|n+8&&|o| 
|o|p|e|r|a|t|i|o|n|.| +0#0000000&@34
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|{+0#e000e06&|@|c|o|d|e| |n|u|l@1|}| +0#0000e05&|*|/| +0#0000000&@43
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3>V|o|i|d| |n|o|O|p|6|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
|{+8#e000e06&|@+0&&|r|e|t|u|r|n| +8&&|{+0&&|@|c|o|d|e| |n|u|l@1|}|,+8&&| 
|w|i|t|h| |n|o|-|o|p|,| |i|.|e|.| |n|o| |o|p|e|r|a|t|i|o|n|}| |*+0#0000e05&|/| 
+0#0000000&@8
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|7|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
|{+8#e000e06&|@+0&&|r|e|t|u|r|n| +8&&|{+0&&|@|c|o|d|e| |n|u|l@1|}|,+8&&| 
|w|i|t|h| |n|o|-|o|p|,| |i|.|e|.| |n|o| |o|p|e|r|a|t|i|o|n|}|.@1| 
|*+0#0000e05&|/| +0#0000000&@6
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|8|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
|{+8#e000e06&|@+0&&|r|e|t|u|r|n| +8&&|{+0&&|@|c|o|d|e| |n|u|l@1|}|,+8&&| 
|w|i|t|h| |n|o|-|o|p|,| |i|.|e|.| |n|o| |o|p|e|r|a|t|i|o|n|}| |.| |.| 
|*+0#0000e05&|/| +0#0000000&@4
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|V|o|i|d| |n|o|O|p|9|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|n+0#e000002&|u|l@1|;+0#0000000&| |}| @39
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
|{+8#e000e06&|@+0&&|r|e|t|u|r|n| +8&&|t|h|e| |m|a|j|o|r| |J|a|v|a| 
|v|e|r|s|i|o|n|}| |@+0&&|h|i|d@1|e|n| +0#0000e05&|*|/| +0#0000000&@21
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|p+0#00e0003&|r|o|t|e|c|t|e|d| 
+0#0000000&|i+0#00e0003&|n|t| +0#0000000&|m|a|j|o|r|V|e|r|s|i|o|n|(|)| |{| 
|r+0#af5f00255&|e|t|u|r|n| +0#0000000&|2+0#e000002&|1|;+0#0000000&| |}| @25
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+@57|5@1|,|2|-|5| @7|4|7|%| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_04.dump 
b/runtime/syntax/testdir/dumps/java_comments_04.dump
index 01703a809..d415c024c 100644
--- a/runtime/syntax/testdir/dumps/java_comments_04.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_04.dump
@@ -1,20 +1,20 @@
-| +0#0000e05#ffffff0@4|*| |e|i|t|h|e|r| |o|f| |t|h|e| |f|o|l@1|o|w|i|n|g| 
|d|e|c|l|a|r|a|t|i|o|n|s| |i|s| |a|c@1|e|p|t|a|b|l|e|:| +0#0000000&@16
-| +0#0000e05&@4|*| +0#ffffff16#ff404010| 
+0#0000e05#ffffff0|{+0#e000e06&|@|s|n|i|p@1|e|t| 
|l+0#00e0003&|a|n|g|=+0#e000e06&|"+0#e000002&|j|a|v|a|"|:+0#e000e06&| 
+0#0000000&@44
-| +0#e000e06&@4|*| |/@1| |@+0#0000000&|h|i|g|h|l|i|g|h|t| 
+0#e000e06&|s+0#00e0003&|u|b|s|t|r|i|n|g|=+0#e000e06&|"+0#e000002&|m|a|i|n|"| 
+0#e000e06&|t+0#00e0003&|y|p|e|=+0#e000e06&|"+0#e000002&|i|t|a|l|i|c|"|:+0#e000e06&|
 +0#0000000&@22
-| +0#e000e06&@4|*| |p|u|b|l|i|c| |s|t|a|t|i|c| |v|o|i|d| 
|m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| |{| |}| +0#0000000&@25
-| +0#e000e06&@4|*| |}|<+0#00e0e07&|b+0#af5f00255&|r| 
+0#00e0e07&|/|>|<|p+0#af5f00255&|r|e| 
+0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|s|n|i|p@1|e|t|"|>+0#00e0e07&|
 +0#0000000&@39
-| +0#0000e05&@4>*|{+0#e000e06&|@|c|o|d|e| |p|u|b|l|i|c| |s|t|a|t|i|c| 
|v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|.@2| |a|r|g|s|)| |{| 
|}@1|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@11
-| +0#0000e05&@4|*| +0#0000000&@68
-| +0#0000e05&@4|*| |@+0#e000e06&|p|a|r|a|m| +0#00e0e07&|a|r|g|s| 
+0#0000e05&|o|p|t|i|o|n|a|l| 
|c+0&#ffd7d7255|o|m@1|a|n|d|e|-+0&#ffffff0|l|i|n|e| |a|r|g|u|m|e|n|t|s| 
+0#ffffff16#ff404010| +0#0000000#ffffff0@22
-| +0#0000e05&@4|*| |@|j+0&#ffd7d7255|l|s| +0&#ffffff0|1|2|.|1|.|4| 
|I|n|v|o|k|e| |{+0#e000e06&|@|c|o|d|e| |T|e|s|t|.|m|a|i|n|}| +0#0000e05&|*|/| 
+0#0000000&@28
-@4|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| 
+0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |m+0#e000002&|a|i|n| 
+0#ffffff16#ff404010@4| +0#0000000#ffffff0@42
-@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| 
+0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| 
|'+0#e000002&|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| 
|'+0#e000002&|j|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g|'| +0#0000e05&|:| +0#0000000&@11
-@4|p+0#00e0003&|u|b|l|i|c| +0#0000000&|s+0#00e0003&|t|a|t|i|c| 
+0#0000000&|v+0#00e0003&|o|i|d| +0#0000000&|m|a|i|n|(|S|t|r|i|n|g|[|]| 
|a|r|g|s|)| |{| |}| @28
-@4|/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| 
+0#0000000#ffffff0@62
-@75
-@4|/+0#0000e05&|*@1| |{+0#e000e06&|@|r|e|t|u|r|n| |a|n| |e|m|p|t|y| 
|s|t|r|i|n|g|}| +0#ffffff16#ff404010@2| +0#0000000#ffffff0@38
-| +0#0000e05&@4|*| +0#e000e06&|@|s|e@1| |<+0#00e0e07&|a+0#af5f00255&| 
+0#00e0e07&|h+0#00e0003&|r|e|f|=+0#00e0e07&|"+0#e000002&|h|t@1|p|s|:|/@1|d|o|c|s|.|o|r|a|c|l|e|.|c|o|m|/|j|a|v|a|s|e|/|s|p|e|c|s|/|j|l|s|/|s|e|2|1|/|h|t|m|l|/|j|l|s
-|-|3|.|h|t|m|l|#|j|l|s|-|3|.|1|0|.|5|"|>+0#00e0e07&|3+8#e000e06&|.|1|0|.|5| 
|S|t|r|i|n|g| |L|i|t|e|r|a|l|s|<+0#00e0e07&|/|a+0#af5f00255&|>+0#00e0e07&| 
+0#0000000&@28
-| +0#0000e05&@4|*| +0#e000e06&|@|s|e@1| 
|O+0#00e0e07&|b|j|e|c|t|#|t|o|S|t|r|i|n|g|(|)| +0#0000000&|*+0#e000e06&|/| 
+0#0000000&@42
-@4|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| 
+0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |t+0#e000002&|o|S|t|r|i|n|g| 
+0#ffffff16#ff404010| +0#0000000#ffffff0@42
-@57|7|3|,|3|-|6| @7|9|3|%| 
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
|{+8#e000e06&|@|s|u|m@1|a|r|y| |C|o|m|p|a|r|e|s| |t|h|i|s| |i|n|s|t|a|n|c|e| 
|w|i|t|h| |t|h|e| |p|a|s@1|e|d| |{+0&&|@|c|o|d|e| |t|h|a|t|}| +0#0000000&@3
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| +8#e000e06&|i|n|s|t|a|n|c|e| 
|f|o|r| |o|r|d|e|r| |b|y| |i|n|v|o|k|i|n|g| |{+0&&|@|l|i|n|k| 
|I|n|t|e|g|e|r|#|c|o|m|p|a|r|e|(|i|n|t|,| |i|n|t|)| +0#0000000&@2
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@4|*| |c|o|m|p|a|r|e|}| 
+8&&|a|n|d| |p|a|s@1|i|n|g| |i|t| |{+0&&|@|c|o|d|e| 
|t|h|i|s|.|m|a|j|o|r|V|e|r|s|i|o|n|(|)|}| +8&&|a|n|d| +0#0000000&@10
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| +8#e000e06&|{+0&&|@|c|o|d|e| 
|t|h|a|t|.|m|a|j|o|r|V|e|r|s|i|o|n|(|)|}| +8&&|a|s| |r|e|s|p|e|c|t|i|v|e| 
|@|a|r|g|u|m|e|n|t|s|.|}| +0#0000000&@11
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4>*| +0#0000000&@66
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| 
|{+0#e000e06&|@|i|n|h|e|r|i|t|D|o|c|}| +0#0000e05&|*|/| +0#0000000&@49
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| 
+0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|i+0#00e0003&|n|t| 
+0#0000000&|c|o|m|p|a|r|e|T|o|(|C|o|m@1|e|n|t|s|T|e|s|t|s| |t|h|a|t|)| @18
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|{| @67
+||+0#0000e05#a8a8a8255| | 
+0#0000000#ffffff0@7|j|a|v|a|.|u|t|i|l|.|O|b|j|e|c|t|s|.|r|e|q|u|i|r|e|N|o|n|N|u|l@1|(|t|h|a|t|,|
 |"+0#e000002&|t|h|a|t|"|)+0#0000000&|;| @17
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@7|r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|I|n|t|e|g|e|r|.|c|o|m|p|a|r|e|(|t+0#00e0003&|h|i|s|.+0#0000000&|m|a|j|o|r|V|e|r|s|i|o|n|(|)|,|
 @21
+||+0#0000e05#a8a8a8255| | 
+0#0000000#ffffff0@23|t|h|a|t|.|m|a|j|o|r|V|e|r|s|i|o|n|(|)@1|;| @27
+||+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|}| @67
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|R|e|t|u|r|n|s| |a|n| |e|m|p|t|y| |s|t|r|i|n|g| |f|o|r| |a|n| 
|@|O|v|e|r@1|i|d|e| |a|n@1|o|t|a|t|e|d| |m|e|t|h|o|d| +0#0000000&@7
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| +8#e000e06&|(|s|e@1| 
|C|h|a|p|t|e|r| |9|.|6|.|4|.|4| |{+0&&|@|l|i|t|e|r|a|l| |@|O|v|e|r@1|i|d|e|}| 
+8&&|i|n| |a| |J|a|v|a| |L|a|n|g|u|a|g|e| +0#0000000&@6
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| 
+8#e000e06&|S|p|e|c|i|f|i|c|a|t|i|o|n|)| |o|v|e|r@1|i|d@1|e|n| |f|r|o|m| 
|<+0#00e0e07&|c+0#af5f00255&|o|d|e|>+0#00e0e07&|j+8#e000e06&|a|v|a|.|l+8&#ffd7d7255|a|n|g|.+8&#ffffff0|O|b|j|e|c|t|<+0#00e0e07&|/|c+0#af5f00255&|o|d|e|>+0#00e0e07&|
 +0#0000000&@6
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| +0#0000000&@67
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|a|n| |e|m|p|t|y| |s|t|r|i|n|g| |*|/@2| |N|o| |p|e|r|i|o|d| |f|o|r| 
|t|h|e| |a|b|o|v|e| |s|u|m@1|a|r|y|!| +0#0000000&@5
+@57|7|3|,|3|-|6| @7|6|5|%| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_05.dump 
b/runtime/syntax/testdir/dumps/java_comments_05.dump
index 53c785080..85492d8a5 100644
--- a/runtime/syntax/testdir/dumps/java_comments_05.dump
+++ b/runtime/syntax/testdir/dumps/java_comments_05.dump
@@ -1,20 +1,20 @@
-| +0&#ffffff0@3|/+0#0000e05&@1| |@+0#0000000&|s|t|a|r|t| 
+0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| |t+0#e000002&|o|S|t|r|i|n|g| 
+0#ffffff16#ff404010| +0#0000000#ffffff0@42
-@4|/+0#0000e05&@1| |@+0#0000000&|r|e|p|l|a|c|e| 
+0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| |'+0#e000002&|"@1|'| 
+0#0000e05&|r+0#00e0003&|e|p|l|a|c|e|m|e|n|t| +0#0000e05&|=| 
|"+0#e000002&|\|u|0@1|2@1|\|u|0@1|2@1|"| +0#0000000&@13
-@4|/+0#0000e05&@1| |@+0#0000000&|l|i|n|k| +0#0000e05&|r+0#00e0003&|e|g|e|x| 
+0#0000e05&|=| |'+0#e000002&|\|b|S|t|r|i|n|g|'| 
+0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| 
|j+0#e000002&|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g| +0#0000e05&|t+0#00e0003&|y|p|e| 
+0#0000e05&|=| |l+0#e000002&|i|n|k|p|l|a|i|n| +0#0000e05&
-|:| +0#0000000&@73
-@4|@+0#e000e06&|O|v|e|r@1|i|d|e| +0#0000000&|p+0#00e0003&|u|b|l|i|c| 
+0#0000000&|S|t|r|i|n|g| |t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @21
-@4>/+0#0000e05&@1| |@+0#0000000&|e|n|d| +0#ffffff16#ff404010| 
+0#0000000#ffffff0@62
-|}| @73
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-|~| @73
-| +0#0000000&@56|8|9|,|2|-|5| @7|B|o|t| 
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@3|*| |@+0#e000e06&|r|e|t|u|r|n| 
+0#0000e05&|a|n| |e|m|p|t|y| |s|t|r|i|n|g| |*|/@2| |N|o| |p|e|r|i|o|d| |f|o|r| 
|t|h|e| |a|b|o|v|e| |s|u|m@1|a|r|y|!| +0#0000000&@5
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| 
+0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| 
|t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @19
+| +0#0000e05#a8a8a8255@1|}+0#0000000#ffffff0| @71
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0@1| |j+0&#ffd7d7255|a|v|a|d|o|c| 
+0&#ffffff0|-@1|s|n|i|p@1|e|t|-|p|a|t|h| |.| |-@1|s|o|u|r|c|e|-|p|a|t|h| |.| 
|-|d| |/|t+0&#ffd7d7255|m|p|/+0&#ffffff0|d|o|c|s|/| |-|p|a|c|k|a|g|e| |\| 
+0#0000000&@4
+| +0#0000e05#a8a8a8255@1>/+0&#ffffff0@1| +0#ffffff16#ff404010| 
+0#0000e05#ffffff0|-|t|a|g| |'|j+0&#ffd7d7255|l|s|:+0&#ffffff0|a|:|S|e@1| 
|J|a|v|a| |L|a|n|g|u|a|g|e| |S|p|e|c|i|f|i|c|a|t|i|o|n|:|'| 
|S|n|i|p@1|e|t|s|.|j|a|v|a| +0#0000000&@9
+| +0#0000e05#a8a8a8255@1|/+0&#ffffff0|*@1| +8#e000e06&|S|n|i|p@1|e|t|s| 
|f|o|r| |c|o|m@1|e|n|t| |t|e|s|t|s|.| +0#0000e05&|*|/| +0#0000000&@38
+| +0#0000e05#a8a8a8255@1|c+0#00e0003#ffffff0|l|a|s@1| 
+0#0000000&|S|n|i|p@1|e|t|s| @58
+| +0#0000e05#a8a8a8255@1|{+0#0000000#ffffff0| @2|/+0#0000001#ffff4012|*| 
+0#ffffff16#ff404010| +0#0000e05#ffffff0|T|R|A|I|L|I|N|G| |B|L|A|N|K|S| |A|N|D| 
|M+0&#ffd7d7255|E|S@1|P|I|L@1|I|N|G|S| +0&#ffffff0|A|R|E| 
|S|I|G|N|I|F|I|C|A|N|T|!| |*+0#0000001#ffff4012|/| +0#0000000#ffffff0@12
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|p+0#00e0003&|r|i|v|a|t|e| 
+0#0000000&|S|n|i|p@1|e|t|s|(|)| |{| |}| @46
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
+8#e000e06&|T|h|e| |m|e|t|h|o|d| |{+0&&|@|c|o|d|e| |m|a|i|n|}| +8&&|m|u|s|t| 
|b|e| |d|e|c|l|a|r|e|d| |{+0&&|@|c|o|d|e| |p|u|b|l|i|c|}|,+8&&| 
|{+0&&|@|c|o|d|e| +0#0000000&@1
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@4|*| |s|t|a|t|i|c|}|,+8&&| 
|a|n|d| |{+0&&|@|c|o|d|e| |v|o|i|d|}|.+8&&| +0#0000e05&@1|I|t| |m|u|s|t| 
|s|p|e|c|i|f|y| |a| |f|o|r|m|a|l| |p|a|r|a|m|e|t|e|r| +0#0000000&@3
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| |w|h|o|s|e| |d|e|c|l|a|r|e|d| 
|t|y|p|e| |i|s| |a|r@1|a|y| |o|f| |{+0#e000e06&|@|l|i|n|k| 
|S|t|r|i|n|g|}|.+0#0000e05&| @1|T|h|e|r|e|f|o|r|e|,| +0#0000000&@6
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| 
|<+0#00e0e07&|e+0#af5f00255&|m|>+0#00e0e07&|e+0#0000000&|i|t|h|e|r|<+0#00e0e07&|/|e+0#af5f00255&|m|>+0#00e0e07&|
 +0#0000e05&|o|f| |t|h|e| |f|o|l@1|o|w|i|n|g| |d|e|c|l|a|r|a|t|i|o|n|s| |i|s| 
|a|c@1|e|p|t|a|b|l|e|:| +0#0000000&@5
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| +0#ffffff16#ff404010| 
+0#0000e05#ffffff0|{+0#e000e06&|@|s|n|i|p@1|e|t| 
|l+0#00e0003&|a|n|g|=+0#e000e06&|"+0#e000002&|j|a|v|a|"|:+0#e000e06&| 
+0#0000000&@42
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@4|*| |/@1| 
|@+0#0000000&|h|i|g|h|l|i|g|h|t| 
+0#e000e06&|s+0#00e0003&|u|b|s|t|r|i|n|g|=+0#e000e06&|"+0#e000002&|m|a|i|n|"| 
+0#e000e06&|t+0#00e0003&|y|p|e|=+0#e000e06&|"+0#e000002&|i|t|a|l|i|c|"|:+0#e000e06&|
 +0#0000000&@20
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@4|*| |p|u|b|l|i|c| |s|t|a|t|i|c| 
|v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| |{| |}| +0#0000000&@23
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@4|*| 
|}|<+0#00e0e07&|b+0#af5f00255&|r| +0#00e0e07&|/|>|<|p+0#af5f00255&|r|e| 
+0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|s|n|i|p@1|e|t|"|>+0#00e0e07&|
 +0#0000000&@37
+@57|9|1|,|1| @9|8|2|%| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_06.dump 
b/runtime/syntax/testdir/dumps/java_comments_06.dump
new file mode 100644
index 000000000..84336a33b
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_comments_06.dump
@@ -0,0 +1,20 @@
+||+0#0000e05#a8a8a8255| | +0#e000e06#ffffff0@4|*| 
|}|<+0#00e0e07&|b+0#af5f00255&|r| +0#00e0e07&|/|>|<|p+0#af5f00255&|r|e| 
+0#00e0e07&|c+0#00e0003&|l|a|s@1|=+0#00e0e07&|"+0#e000002&|s|n|i|p@1|e|t|"|>+0#00e0e07&|
 +0#0000000&@37
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*|{+0#e000e06&|@|c|o|d|e| 
|p|u|b|l|i|c| |s|t|a|t|i|c| |v|o|i|d| |m|a|i|n|(|S|t|r|i|n|g|.@2| |a|r|g|s|)| 
|{| |}@1|<+0#00e0e07&|/|p+0#af5f00255&|r|e|>+0#00e0e07&| +0#0000000&@9
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| +0#0000000&@66
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| |@+0#e000e06&|p|a|r|a|m| 
|a+0#00e0e07&|r|g|s| +0#0000e05&|o|p|t|i|o|n|a|l| 
|c+0&#ffd7d7255|o|m@1|a|n|d|e|-+0&#ffffff0|l|i|n|e| |a|r|g|u|m|e|n|t|s| 
+0#ffffff16#ff404010| +0#0000000#ffffff0@20
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| |@|j+0&#ffd7d7255|l|s| 
+0&#ffffff0|1|2|.|1|.|4| |I|n|v|o|k|e| |{+0#e000e06&|@|c|o|d|e| 
|T|e|s|t|.|m|a|i|n|}| +0#0000e05&|*|/| +0#0000000&@26
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3>/+0#0000e05&@1| 
|@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| 
|m+0#e000002&|a|i|n| +0#ffffff16#ff404010@4| +0#0000000#ffffff0@40
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&@1| 
|@+0#0000000&|l|i|n|k| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| +0#0000e05&|=| 
|'+0#e000002&|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| +0#0000e05&|=| 
|'+0#e000002&|j|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g|'| +0#0000e05&|:| +0#0000000&@9
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|p+0#00e0003&|u|b|l|i|c| 
+0#0000000&|s+0#00e0003&|t|a|t|i|c| +0#0000000&|v+0#00e0003&|o|i|d| 
+0#0000000&|m|a|i|n|(|S|t|r|i|n|g|[|]| |a|r|g|s|)| |{| |}| @26
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&@1| 
|@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@60
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@72
+|-+0#0000e05#a8a8a8255| | +0#0000000#ffffff0@3|/+0#0000e05&|*@1| 
|{+8#e000e06&|@+0&&|r|e|t|u|r|n| +8&&|a|n| |e|m|p|t|y| |s|t|r|i|n|g|}| 
+0#0000000&@39
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| |@+0#e000e06&|s|e@1| 
+0#0000e05&|<+0#00e0e07&|a+0#af5f00255&| 
+0#00e0e07&|h+0#00e0003&|r|e|f|=+0#00e0e07&|"+0#e000002&|h|t@1|p|s|:|/@1|d|o|c|s|.|o|r|a|c|l|e|.|c|o|m|/|j|a|v|a|s|e|/|s|p|e|c|s|/|j|l|s|/|s|e|2|1|/|h|t|m|l|/|j
+||+0#0000e05#a8a8a8255| 
|l+0#e000002#ffffff0|s|-|3|.|h|t|m|l|#|j|l|s|-|3|.|1|0|.|5|"|>+0#00e0e07&|3+8#e000e06&|.|1|0|.|5|
 |S|t|r|i|n|g| |L|i|t|e|r|a|l|s|<+0#00e0e07&|/|a+0#af5f00255&|>+0#00e0e07&| 
+0#0000000&@24
+||+0#0000e05#a8a8a8255| | +0&#ffffff0@4|*| |@+0#e000e06&|s|e@1| 
+0#0000e05&|j+0#00e0e07&|a|v|a|.|b|a|s|e|/|j|a|v|a|.|l|a|n|g|.|O|b|j|e|c|t|#|t|o|S|t|r|i|n|g|(|)|
 +0#0000e05&|*|/| +0#0000000&@20
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&@1| 
|@+0#0000000&|s|t|a|r|t| +0#0000e05&|r+0#00e0003&|e|g|i|o|n| +0#0000e05&|=| 
|t+0#e000002&|o|S|t|r|i|n|g| +0#ffffff16#ff404010| +0#0000000#ffffff0@40
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&@1| 
|@+0#0000000&|r|e|p|l|a|c|e| +0#0000e05&|s+0#00e0003&|u|b|s|t|r|i|n|g| 
+0#0000e05&|=| |'+0#e000002&|"@1|'| 
+0#0000e05&|r+0#00e0003&|e|p|l|a|c|e|m|e|n|t| +0#0000e05&|=| 
|"+0#e000002&|\|u|0@1|2@1|\|u|0@1|2@1|"| +0#0000000&@11
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&@1| 
|@+0#0000000&|l|i|n|k| +0#0000e05&|r+0#00e0003&|e|g|e|x| +0#0000e05&|=| 
|'+0#e000002&|\|b|S|t|r|i|n|g|'| +0#0000e05&|t+0#00e0003&|a|r|g|e|t| 
+0#0000e05&|=| |j+0#e000002&|a|v|a|.|l|a|n|g|.|S|t|r|i|n|g| 
+0#0000e05&|t+0#00e0003&|y|p|e| +0#0000e05&|=| |l+0#e000002&|i|n|k|p|l|a|i
+| +0#0000e05#a8a8a8255@1|n+0#e000002#ffffff0| +0#0000e05&|:| +0#0000000&@69
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| 
+0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| 
|t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @19
+@57|1|0|9|,|2|-|5| @6|9|8|%| 
diff --git a/runtime/syntax/testdir/dumps/java_comments_07.dump 
b/runtime/syntax/testdir/dumps/java_comments_07.dump
new file mode 100644
index 000000000..f83433e75
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_comments_07.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|@+0#e000e06&|O|v|e|r@1|i|d|e| 
+0#0000000&|p+0#00e0003&|u|b|l|i|c| +0#0000000&|S|t|r|i|n|g| 
|t|o|S|t|r|i|n|g|(|)| |{| |r+0#af5f00255&|e|t|u|r|n| 
+0#0000000&|"+0#e000002&@1|;+0#0000000&| |}| @19
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@3|/+0#0000e05&@1| 
|@+0#0000000&|e|n|d| +0#ffffff16#ff404010| +0#0000000#ffffff0@60
+| +0#0000e05#a8a8a8255@1>}+0#0000000#ffffff0| @71
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|1|2@1|,|1| @8|B|o|t| 
diff --git a/runtime/syntax/testdir/dumps/java_module_info_00.dump 
b/runtime/syntax/testdir/dumps/java_module_info_00.dump
new file mode 100644
index 000000000..a80da8932
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_module_info_00.dump
@@ -0,0 +1,20 @@
+>/+0#0000e05#ffffff0@1| |T|h|i|s| |m|o|d|u|l|e| |d|e|c|l|a|r|a|t|i|o|n| 
|b|e|l|o|n|g|s| |t|o| |t|h|e| |s|a|m|p|l|e| |p|r|o|j|e|c|t| |p|u|b|l|i|s|h|e|d| 
|a|t| +0#0000000&@5
+|/+0#0000e05&@1| 
|h|t@1|p|s|:|/@1|g|i|t|h|u|b|.|c|o|m|/|z@2|y|x|w|v|u|t|/|m|o|d|u|l|e|-|i|n|f|o|.|g|i|t|
 |.| +0#0000000&@25
+@75
+|i+0#e000e06&|m|p|o|r|t| 
+0#0000000&|j|a|v|a|.|u|t|i|l|.|S|e|r|v|i|c|e|L|o|a|d|e|r|;| @43
+@75
+|/+0#0000e05&|*@1| +0#0000000&@71
+| +0#0000e05&|*| +0#e000e06&|D|e|f|i|n|e|s| |d|e|m|o| |r|e|l|a|t|e|d| 
|s|u|p@1|o|r|t|.| +0#0000000&@42
+| +0#0000e05&|*| +0#0000000&@72
+| +0#0000e05&|*| |N|o|t|e| |t|h|a|t| |t|h|e| |{+0#e000e06&|@|c|o|d|e| 
|T|e|s|t|a|b|l|e|}| +0#0000e05&|s|e|r|v|i|c|e| |i|s| |n|o|t| 
|e|x|p|o|r|t|e|d|.| +0#0000000&@16
+| +0#0000e05&|*| +0#0000000&@72
+| +0#0000e05&|*| |@+0#e000e06&|u|s|e|s| 
|o+0#00e0e07&|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l|.|T|e|s|t|a|b|l|e| +0#0000000&@39
+| +0#0000e05&|*| |@+0#e000e06&|p|r|o|v|i|d|e|s| 
|o+0#00e0e07&|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l|.|T|e|s|t|a|b|l|e| +0#0000000&@35
+| +0#0000e05&|*| |@+0#e000e06&|s|e@1| 
+0#0000e05&|S+0#00e0e07&|e|r|v|i|c|e|L|o|a|d|e|r| +0#0000000&@53
+| +0#0000e05&|*|/| +0#0000000&@71
+|m+0#00e0003&|o|d|u|l|e| 
+0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o| @47
+|{| @73
+@4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|s+0#00e0003&|t|a|t|i|c| 
+0#0000000&|j|d|k|.|j|f|r|;| @46
+@4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|j|a|v|a|.|b|a|s|e|;| @51
+@4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|t+0#00e0003&|r|a|n|s|i|t|i|v|e| 
+0#0000000&|j|a|v|a|.|l|o|g@1|i|n|g|;| @37
+@57|1|,|1| @10|T|o|p| 
diff --git a/runtime/syntax/testdir/dumps/java_module_info_01.dump 
b/runtime/syntax/testdir/dumps/java_module_info_01.dump
new file mode 100644
index 000000000..793cb8933
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_module_info_01.dump
@@ -0,0 +1,20 @@
+| +0#0000e05#ffffff0|*|/| +0#0000000&@71
+|m+0#00e0003&|o|d|u|l|e| 
+0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o| @47
+|{| @73
+@4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|s+0#00e0003&|t|a|t|i|c| 
+0#0000000&|j|d|k|.|j|f|r|;| @46
+@4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|j|a|v|a|.|b|a|s|e|;| @51
+@4>r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|t+0#00e0003&|r|a|n|s|i|t|i|v|e| 
+0#0000000&|j|a|v|a|.|l|o|g@1|i|n|g|;| @37
+@4|r+0#af5f00255&|e|q|u|i|r|e|s| +0#0000000&|t+0#00e0003&|r|a|n|s|i|t|i|v|e| 
+0#0000000&|s+0#00e0003&|t|a|t|i|c| 
+0#0000000&|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|t|e|s|t|e|r|;|
 @20
+@75
+@4|e+0#af5f00255&|x|p|o|r|t|s| +0#0000000&|o|r|g|.|d|e|m|o|;| @53
+@4|e+0#af5f00255&|x|p|o|r|t|s| +0#0000000&|o|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l| 
|t+0#e000e06&|o| +0#0000000&@42
+@8|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o|;| @45
+@75
+@4|o+0#af5f00255&|p|e|n|s| +0#0000000&|o|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l| 
|t+0#e000e06&|o| +0#0000000&@44
+@8|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o|;| @45
+@4|o+0#af5f00255&|p|e|n|s| +0#0000000&|o|r|g|.|d|e|m|o|.|t|e|s|t|s| 
|t+0#e000e06&|o| +0#0000000&@47
+@8|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|d|e|m|o|,| 
|o|r|g|.|m+0#00e0003&|o|d|u|l|e|.+0#0000000&|i|n|f|o|.|t|e|s|t|e|r|;| @21
+@75
+@4|u+0#af5f00255&|s|e|s| 
+0#0000000&|o|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l|.|T|e|s|t|a|b|l|e|;| @38
+@75
+@57|1|9|,|2|-|5| @7|8|1|%| 
diff --git a/runtime/syntax/testdir/dumps/java_module_info_02.dump 
b/runtime/syntax/testdir/dumps/java_module_info_02.dump
new file mode 100644
index 000000000..cc258a922
--- /dev/null
+++ b/runtime/syntax/testdir/dumps/java_module_info_02.dump
@@ -0,0 +1,20 @@
+| +0&#ffffff0@74
+@4|p+0#af5f00255&|r|o|v|i|d|e|s| 
+0#0000000&|o|r|g|.|d|e|m|o|.|i|n|t|e|r|n|a|l|.|T|e|s|t|a|b|l|e| 
|w+0#e000e06&|i|t|h| +0#0000000&@30
+@8|o|r|g|.|d|e|m|o|.|t|e|s|t|s|.|A|r|i|t|h|m|e|t|i|c|O|p|e|r|a|t|i|o|n|T|e|s|t|s|;|
 @26
+>}| @73
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+|~| @73
+| +0#0000000&@56|3|5|,|1| @9|B|o|t| 
diff --git a/runtime/syntax/testdir/input/java_comments.java 
b/runtime/syntax/testdir/input/java_comments.java
index 3c1a8a2e3..35f6f7d50 100644
--- a/runtime/syntax/testdir/input/java_comments.java
+++ b/runtime/syntax/testdir/input/java_comments.java
@@ -1,7 +1,19 @@
-// VIM_TEST_SETUP unlet! g:java_ignore_javadoc g:java_no_trail_space_error
-// VIM_TEST_SETUP unlet! g:java_no_tab_space_error
-// VIM_TEST_SETUP let [g:java_space_errors,g:java_comment_strings] = [1,1]
-// VIM_TEST_SETUP setlocal spell | highlight link javaCommentStart Todo
+// VIM_TEST_SETUP unlet! g:java_no_tab_space_error g:java_ignore_javadoc
+// VIM_TEST_SETUP unlet! g:java_no_trail_space_error
+// VIM_TEST_SETUP let [g:java_space_errors,g:java_comment_strings]=[1,1]
+
+
+
+
+
+
+
+// VIM_TEST_SETUP setlocal spell fdc=2 fdl=64 fdm=syntax fen
+// VIM_TEST_SETUP highlight link javaCommentStart Todo
+// VIM_TEST_SETUP highlight link javaCommentTitle Underlined
+
+
+
 
 
 
@@ -11,8 +23,10 @@
  * {@snippet file = Snippets.java region = main id = _01}
  * <p>There is no textual representation:
  * {@snippet class = Snippets region = toString id = _02} */
-class CommentsTests
+class CommentsTests implements Comparable<CommentsTests>
 {
+       private CommentsTests() { }
+
        /** No-op, i. e. no operation.
        * ({@literal@literal} may be used with {@code .} for contraction.)
        * @return {@code null} */
@@ -49,6 +63,22 @@ class CommentsTests
        /** {@return {@code null}, with no-op, i.e. no operation} . . */
        Void noOp9() { return null; }
 
+       /** {@return the major Java version} @hidden */
+       protected int majorVersion() { return 21; }
+
+       /** {@summary Compares this instance with the passed {@code that}
+        * instance for order by invoking {@link Integer#compare(int, int)
+        * compare} and passing it {@code this.majorVersion()} and
+        * {@code that.majorVersion()} as respective @arguments.}
+        *
+        * {@inheritDoc} */
+       @Override public int compareTo(CommentsTests that)
+       {
+               java.util.Objects.requireNonNull(that, "that");
+               return Integer.compare(this.majorVersion(),
+                                               that.majorVersion());
+       }
+
        /** Returns an empty string for an @Override annotated method
        * (see Chapter 9.6.4.4 {@literal @Override} in a Java Language
        * Specification) overridden from <code>java.lang.Object</code>
@@ -57,15 +87,17 @@ class CommentsTests
        @Override public String toString() { return ""; }
 }
 
-// javadoc --snippet-path . --source-path . -d /tmp/doc/ -package \
+// javadoc --snippet-path . --source-path . -d /tmp/docs/ -package \
 //     -tag 'jls:a:See Java Language Specification:' Snippets.java
 /** Snippets for comment tests. */
 class Snippets
 {      /*      TRAILING BLANKS AND MESSPILLINGS ARE SIGNIFICANT! */
+       private Snippets() { }
+
        /** The method {@code main} must be declared {@code public}, {@code
         * static}, and {@code void}.  It must specify a formal parameter
         * whose declared type is array of {@link String}.  Therefore,
-        * either of the following declarations is acceptable:
+        * <em>either</em> of the following declarations is acceptable:
         *      {@snippet lang="java":
         * // @highlight substring="main" type="italic":
         * public static void main(String[] args) { }
@@ -79,9 +111,9 @@ class Snippets
        public static void main(String[] args) { }
        // @end 
 
-       /** {@return an empty string}   
+       /** {@return an empty string}
         * @see <a 
href="https://docs.oracle.com/javase/specs/jls/se21/html/jls-3.html#jls-3.10.5";>3.10.5
 String Literals</a>
-        * @see Object#toString() */
+        * @see java.base/java.lang.Object#toString() */
        // @start region = toString     
        // @replace substring = '""' replacement = "\u0022\u0022"
        // @link regex = ' String' target = java.lang.String type = linkplain :
diff --git a/runtime/syntax/testdir/input/java_module_info.java 
b/runtime/syntax/testdir/input/java_module_info.java
new file mode 100644
index 000000000..bfbea93a2
--- /dev/null
+++ b/runtime/syntax/testdir/input/java_module_info.java
@@ -0,0 +1,35 @@
+// This module declaration belongs to the sample project published at
+// https://github.com/zzzyxwvut/module-info.git .
+
+import java.util.ServiceLoader;
+
+/**
+ * Defines demo related support.
+ *
+ * Note that the {@code Testable} service is not exported.
+ *
+ * @uses org.demo.internal.Testable
+ * @provides org.demo.internal.Testable
+ * @see ServiceLoader
+ */
+module org.module.info.demo
+{
+       requires static jdk.jfr;
+       requires java.base;
+       requires transitive java.logging;
+       requires transitive static org.module.info.tester;
+
+       exports org.demo;
+       exports org.demo.internal to
+               org.module.info.demo;
+
+       opens org.demo.internal to
+               org.module.info.demo;
+       opens org.demo.tests to
+               org.module.info.demo, org.module.info.tester;
+
+       uses org.demo.internal.Testable;
+
+       provides org.demo.internal.Testable with
+               org.demo.tests.ArithmeticOperationTests;
+}
diff --git a/runtime/syntax/testdir/input/setup/java_module_info.vim 
b/runtime/syntax/testdir/input/setup/java_module_info.vim
new file mode 100644
index 000000000..2711c1a9a
--- /dev/null
+++ b/runtime/syntax/testdir/input/setup/java_module_info.vim
@@ -0,0 +1,30 @@
+vim9script
+
+# Test filenames are required to begin with the filetype name prefix,
+# whereas the name of a Java module declaration must be "module-info".
+const name_a: string = 'input/java_module_info.java'
+const name_b: string = 'input/module-info.java'
+
+def ChangeFilename()
+    exec 'saveas! ' .. name_b
+enddef
+
+def RestoreFilename()
+    exec 'saveas! ' .. name_a
+    delete(name_b)
+enddef
+
+autocmd_add([{
+    replace:   true,
+    group:     'java_syntax_tests',
+    event:     'BufEnter',
+    pattern:   name_a,
+    cmd:       'ChangeFilename()',
+    once:      true,
+}, {
+    group:     'java_syntax_tests',
+    event:     ['BufLeave', 'ExitPre'],
+    pattern:   name_b,
+    cmd:       'RestoreFilename()',
+    once:      true,
+}])

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

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

Raspunde prin e-mail lui