View Javadoc
1   ///////////////////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3   // Copyright (C) 2001-2026 the original author or authors.
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ///////////////////////////////////////////////////////////////////////////////////////////////
19  
20  package com.puppycrawl.tools.checkstyle.api;
21  
22  import com.puppycrawl.tools.checkstyle.grammar.java.JavaLanguageLexer;
23  
24  /**
25   * Contains the constants for all the tokens contained in the Abstract
26   * Syntax Tree.
27   *
28   * <p>Implementation detail: This class has been introduced to break
29   * the circular dependency between packages.</p>
30   *
31   * @noinspection ClassWithTooManyDependents
32   * @noinspectionreason ClassWithTooManyDependents - this class is a core part of our API
33   */
34  public final class TokenTypes {
35  
36      /**
37       * This is the root node for the source file.  It's children
38       * are an optional package definition, zero or more import statements,
39       * and zero or more type declarations.
40       *
41       * <p>For example:</p>
42       * <pre>
43       * import java.util.List;
44       *
45       * class MyClass{}
46       * interface MyInterface{}
47       * ;
48       * </pre>
49       *
50       * <p>parses as:</p>
51       *
52       * <pre>
53       * COMPILATION_UNIT -&gt; COMPILATION_UNIT
54       * |--IMPORT -&gt; import
55       * |   |--DOT -&gt; .
56       * |   |   |--DOT -&gt; .
57       * |   |   |   |--IDENT -&gt; java
58       * |   |   |   `--IDENT -&gt; util
59       * |   |   `--IDENT -&gt; List
60       * |   `--SEMI -&gt; ;
61       * |--CLASS_DEF -&gt; CLASS_DEF
62       * |   |--MODIFIERS -&gt; MODIFIERS
63       * |   |--LITERAL_CLASS -&gt; class
64       * |   |--IDENT -&gt; MyClass
65       * |   `--OBJBLOCK -&gt; OBJBLOCK
66       * |       |--LCURLY -&gt; {
67       * |       `--RCURLY -&gt; }
68       * |--INTERFACE_DEF -&gt; INTERFACE_DEF
69       * |   |--MODIFIERS -&gt; MODIFIERS
70       * |   |--LITERAL_INTERFACE -&gt; interface
71       * |   |--IDENT -&gt; MyInterface
72       * |   `--OBJBLOCK -&gt; OBJBLOCK
73       * |       |--LCURLY -&gt; {
74       * |       `--RCURLY -&gt; }
75       * `--SEMI -&gt; ;
76       * </pre>
77       *
78       * @see #PACKAGE_DEF
79       * @see #IMPORT
80       * @see #CLASS_DEF
81       * @see #INTERFACE_DEF
82       * @see #RECORD_DEF
83       * @see #ANNOTATION_DEF
84       * @see #ENUM_DEF
85       **/
86      public static final int COMPILATION_UNIT = JavaLanguageLexer.COMPILATION_UNIT;
87  
88      /**
89       * The root of an AST for a JEP 512 (JDK 25) compact source file. This node
90       * replaces {@link #COMPILATION_UNIT} as the root when the source file declares
91       * any top-level method or field. It represents a {@code CompactCompilationUnit},
92       * which is one of the three mutually exclusive compilation-unit
93       * forms ({@code OrdinaryCompilationUnit}, {@code CompactCompilationUnit},
94       * {@code ModularCompilationUnit}). Import declarations and top-level members
95       * appear as direct children of this node. Compact source files cannot declare
96       * a package.
97       *
98       * <p>For example:</p>
99       * <pre>
100      * import java.util.List;
101      *
102      * int counter = 3;
103      * void main() {}
104      * </pre>
105      *
106      * <p>parses as:</p>
107      * <pre>
108      * COMPACT_COMPILATION_UNIT -&gt; COMPACT_COMPILATION_UNIT
109      * |--IMPORT -&gt; import
110      * |   |--DOT -&gt; .
111      * |   |   |--DOT -&gt; .
112      * |   |   |   |--IDENT -&gt; java
113      * |   |   |   `--IDENT -&gt; util
114      * |   |   `--IDENT -&gt; List
115      * |   `--SEMI -&gt; ;
116      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
117      * |   |--MODIFIERS -&gt; MODIFIERS
118      * |   |--TYPE -&gt; TYPE
119      * |   |   `--LITERAL_INT -&gt; int
120      * |   |--IDENT -&gt; counter
121      * |   |--ASSIGN -&gt; =
122      * |   |   `--EXPR -&gt; EXPR
123      * |   |       `--NUM_INT -&gt; 3
124      * |   `--SEMI -&gt; ;
125      * `--METHOD_DEF -&gt; METHOD_DEF
126      *     |--MODIFIERS -&gt; MODIFIERS
127      *     |--TYPE -&gt; TYPE
128      *     |   `--LITERAL_VOID -&gt; void
129      *     |--IDENT -&gt; main
130      *     |--LPAREN -&gt; (
131      *     |--PARAMETERS -&gt; PARAMETERS
132      *     |--RPAREN -&gt; )
133      *     `--SLIST -&gt; {
134      *         `--RCURLY -&gt; }
135      * </pre>
136      *
137      * @see <a href="https://openjdk.org/jeps/512">JEP 512: Compact Source Files
138      *     and Instance Main Methods</a>
139      * @see #COMPILATION_UNIT
140      **/
141     public static final int COMPACT_COMPILATION_UNIT =
142             JavaLanguageLexer.COMPACT_COMPILATION_UNIT;
143 
144     /**
145      * Modifiers for type, method, and field declarations.  The
146      * modifiers element is always present even though it may have no
147      * children.
148      *
149      * <p>For example:</p>
150      * <pre>
151      * public int x;
152      * </pre>
153      *
154      * <p>parses as:</p>
155      * <pre>
156      * VARIABLE_DEF -&gt; VARIABLE_DEF
157      *  |--MODIFIERS -&gt; MODIFIERS
158      *  |   `--LITERAL_PUBLIC -&gt; public
159      *  |--TYPE -&gt; TYPE
160      *  |   `--LITERAL_INT -&gt; int
161      *  |--IDENT -&gt; x
162      *  `--SEMI -&gt; ;
163      * </pre>
164      *
165      * @see <a
166      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html">Java
167      *     Language Specification, &sect;8</a>
168      * @see #LITERAL_PUBLIC
169      * @see #LITERAL_PROTECTED
170      * @see #LITERAL_PRIVATE
171      * @see #ABSTRACT
172      * @see #LITERAL_STATIC
173      * @see #FINAL
174      * @see #LITERAL_TRANSIENT
175      * @see #LITERAL_VOLATILE
176      * @see #LITERAL_SYNCHRONIZED
177      * @see #LITERAL_NATIVE
178      * @see #STRICTFP
179      * @see #ANNOTATION
180      * @see #LITERAL_DEFAULT
181      **/
182     public static final int MODIFIERS = JavaLanguageLexer.MODIFIERS;
183 
184     /**
185      * An object block.  These are children of class, interface, enum,
186      * annotation and enum constant declarations.
187      * Also, object blocks are children of the new keyword when defining
188      * anonymous inner types.
189      *
190      * <p>For example:</p>
191      * <pre>
192      * class Test {}
193      * </pre>
194      *
195      * <p>parses as:</p>
196      * <pre>
197      * CLASS_DEF -&gt; CLASS_DEF
198      * |--MODIFIERS -&gt; MODIFIERS
199      * |--LITERAL_CLASS -&gt; class
200      * |--IDENT -&gt; Test
201      * `--OBJBLOCK -&gt; OBJBLOCK
202      *     |--LCURLY -&gt; {
203      *     `--RCURLY -&gt; }
204      * </pre>
205      *
206      * @see #LCURLY
207      * @see #INSTANCE_INIT
208      * @see #STATIC_INIT
209      * @see #CLASS_DEF
210      * @see #CTOR_DEF
211      * @see #METHOD_DEF
212      * @see #VARIABLE_DEF
213      * @see #RCURLY
214      * @see #INTERFACE_DEF
215      * @see #LITERAL_NEW
216      * @see #ENUM_DEF
217      * @see #ENUM_CONSTANT_DEF
218      * @see #ANNOTATION_DEF
219      **/
220     public static final int OBJBLOCK = JavaLanguageLexer.OBJBLOCK;
221     /**
222      * A list of statements.
223      *
224      * <p>For example:</p>
225      * <pre>
226      * if (c == 1) {
227      *     c = 0;
228      * }
229      * </pre>
230      *
231      * <p>parses as:</p>
232      * <pre>
233      * LITERAL_IF -&gt; if
234      *  |--LPAREN -&gt; (
235      *  |--EXPR -&gt; EXPR
236      *  |   `--EQUAL -&gt; ==
237      *  |       |--IDENT -&gt; c
238      *  |       `--NUM_INT -&gt; 1
239      *  |--RPAREN -&gt; )
240      *  `--SLIST -&gt; {
241      *      |--EXPR -&gt; EXPR
242      *      |   `--ASSIGN -&gt; =
243      *      |       |--IDENT -&gt; c
244      *      |       `--NUM_INT -&gt; 0
245      *      |--SEMI -&gt; ;
246      *      `--RCURLY -&gt; }
247      * </pre>
248      *
249      * @see #RCURLY
250      * @see #EXPR
251      * @see #LABELED_STAT
252      * @see #LITERAL_THROWS
253      * @see #LITERAL_RETURN
254      * @see #SEMI
255      * @see #METHOD_DEF
256      * @see #CTOR_DEF
257      * @see #LITERAL_FOR
258      * @see #LITERAL_WHILE
259      * @see #LITERAL_IF
260      * @see #LITERAL_ELSE
261      * @see #CASE_GROUP
262      **/
263     public static final int SLIST = JavaLanguageLexer.SLIST;
264     /**
265      * A constructor declaration.
266      *
267      * <p>For example:</p>
268      * <pre>
269      * public SpecialEntry(int value, String text)
270      * {
271      *   this.value = value;
272      *   this.text = text;
273      * }
274      * </pre>
275      *
276      * <p>parses as:</p>
277      * <pre>
278      * CTOR_DEF -&gt; CTOR_DEF
279      *  |--MODIFIERS -&gt; MODIFIERS
280      *  |   `--LITERAL_PUBLIC -&gt; public
281      *  |--IDENT -&gt; SpecialEntry
282      *  |--LPAREN -&gt; (
283      *  |--PARAMETERS -&gt; PARAMETERS
284      *  |   |--PARAMETER_DEF -&gt; PARAMETER_DEF
285      *  |   |   |--MODIFIERS -&gt; MODIFIERS
286      *  |   |   |--TYPE -&gt; TYPE
287      *  |   |   |   `--LITERAL_INT -&gt; int
288      *  |   |   `--IDENT -&gt; value
289      *  |   |--COMMA -&gt; ,
290      *  |   `--PARAMETER_DEF -&gt; PARAMETER_DEF
291      *  |       |--MODIFIERS -&gt; MODIFIERS
292      *  |       |--TYPE -&gt; TYPE
293      *  |       |   `--IDENT -&gt; String
294      *  |       `--IDENT -&gt; text
295      *  |--RPAREN -&gt; )
296      *  `--SLIST -&gt; {
297      *      |--EXPR -&gt; EXPR
298      *      |   `--ASSIGN -&gt; =
299      *      |       |--DOT -&gt; .
300      *      |   |--LITERAL_THIS -&gt; this
301      *      |       |   `--IDENT -&gt; value
302      *      |       `--IDENT -&gt; value
303      *      |--SEMI -&gt; ;
304      *      |--EXPR -&gt; EXPR
305      *      |   `--ASSIGN -&gt; =
306      *      |       |--DOT -&gt; .
307      *      |       |   |--LITERAL_THIS -&gt; this
308      *      |       |   `--IDENT -&gt; text
309      *      |       `--IDENT -&gt; text
310      *      |--SEMI -&gt; ;
311      *      `--RCURLY -&gt; }
312      * </pre>
313      *
314      * @see #OBJBLOCK
315      * @see #CLASS_DEF
316      **/
317     public static final int CTOR_DEF = JavaLanguageLexer.CTOR_DEF;
318     /**
319      * A method declaration.  The children are modifiers, type parameters,
320      * return type, method name, parameter list, an optional throws list, and
321      * statement list.  The statement list is omitted if the method
322      * declaration appears in an interface declaration.  Method
323      * declarations may appear inside object blocks of class
324      * declarations, interface declarations, enum declarations,
325      * enum constant declarations or anonymous inner-class declarations.
326      *
327      * <p>For example:</p>
328      *
329      * <pre>
330      *  public static int square(int x)
331      *  {
332      *    return x*x;
333      *  }
334      * </pre>
335      *
336      * <p>parses as:</p>
337      *
338      * <pre>
339      * --METHOD_DEF -&gt; METHOD_DEF
340      *    |--MODIFIERS -&gt; MODIFIERS
341      *    |   |--LITERAL_PUBLIC -&gt; public
342      *    |   `--LITERAL_STATIC -&gt; static
343      *    |--TYPE -&gt; TYPE
344      *    |   `--LITERAL_INT -&gt; int
345      *    |--IDENT -&gt; square
346      *    |--LPAREN -&gt; (
347      *    |--PARAMETERS -&gt; PARAMETERS
348      *    |   `--PARAMETER_DEF -&gt; PARAMETER_DEF
349      *    |       |--MODIFIERS -&gt; MODIFIERS
350      *    |       |--TYPE -&gt; TYPE
351      *    |       |   `--LITERAL_INT -&gt; int
352      *    |       `--IDENT -&gt; x
353      *    |--RPAREN -&gt; )
354      *    `--SLIST -&gt; {
355      *        |--LITERAL_RETURN -&gt; return
356      *        |   |--EXPR -&gt; EXPR
357      *        |   |   `--STAR -&gt; *
358      *        |   |       |--IDENT -&gt; x
359      *        |   |       `--IDENT -&gt; x
360      *        |   `--SEMI -&gt; ;
361      *        `--RCURLY -&gt; }
362      * </pre>
363      *
364      * @see #MODIFIERS
365      * @see #TYPE_PARAMETERS
366      * @see #TYPE
367      * @see #IDENT
368      * @see #PARAMETERS
369      * @see #LITERAL_THROWS
370      * @see #SLIST
371      * @see #OBJBLOCK
372      **/
373     public static final int METHOD_DEF = JavaLanguageLexer.METHOD_DEF;
374 
375     /**
376      * A field or local variable declaration.  The children are
377      * modifiers, type, the identifier name, and an optional
378      * assignment statement.
379      *
380      * <p>For example:</p>
381      * <pre>
382      * final double PI = 3.14;
383      * </pre>
384      *
385      * <p>parses as:</p>
386      * <pre>
387      * VARIABLE_DEF -&gt; VARIABLE_DEF
388      *  |--MODIFIERS -&gt; MODIFIERS
389      *  |   `--FINAL -&gt; final
390      *  |--TYPE -&gt; TYPE
391      *  |   `--LITERAL_DOUBLE -&gt; double
392      *  |--IDENT -&gt; PI
393      *  |--ASSIGN -&gt; =
394      *  |   `--EXPR -&gt; EXPR
395      *  |       `--NUM_FLOAT -&gt; 3.14
396      *  `--SEMI -&gt; ;
397      * </pre>
398      *
399      * @see #MODIFIERS
400      * @see #TYPE
401      * @see #IDENT
402      * @see #ASSIGN
403      **/
404     public static final int VARIABLE_DEF =
405         JavaLanguageLexer.VARIABLE_DEF;
406 
407     /**
408      * An instance initializer.  Zero or more instance initializers
409      * may appear in class and enum definitions.  This token will be a child
410      * of the object block of the declaring type.
411      *
412      * <p>For example:</p>
413      * <pre>
414      * public class MyClass {
415      *     private int foo;
416      *     {foo = 10;}
417      * }
418      * </pre>
419      *
420      * <p>parses as:</p>
421      * <pre>
422      * CLASS_DEF -&gt; CLASS_DEF
423      *  |--MODIFIERS -&gt; MODIFIERS
424      *  |   `--LITERAL_PUBLIC -&gt; public
425      *  |--LITERAL_CLASS -&gt; class
426      *  |--IDENT -&gt; MyClass
427      *  `--OBJBLOCK -&gt; OBJBLOCK
428      *      |--LCURLY -&gt; {
429      *      |--VARIABLE_DEF -&gt; VARIABLE_DEF
430      *      |   |--MODIFIERS -&gt; MODIFIERS
431      *      |   |   `--LITERAL_PRIVATE -&gt; private
432      *      |   |--TYPE -&gt; TYPE
433      *      |   |   `--LITERAL_INT -&gt; int
434      *      |   |--IDENT -&gt; foo
435      *      |   `--SEMI -&gt; ;
436      *      |--INSTANCE_INIT -&gt; INSTANCE_INIT
437      *      |   `--SLIST -&gt; {
438      *      |       |--EXPR -&gt; EXPR
439      *      |       |   `--ASSIGN -&gt; =
440      *      |       |       |--IDENT -&gt; foo
441      *      |       |       `--NUM_INT -&gt; 10
442      *      |       |--SEMI -&gt; ;
443      *      |       `--RCURLY -&gt; }
444      *      `--RCURLY -&gt; }
445      * </pre>
446      *
447      * @see <a
448      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.6">Java
449      *     Language Specification&sect;8.6</a>
450      * @see #SLIST
451      * @see #OBJBLOCK
452      **/
453     public static final int INSTANCE_INIT =
454         JavaLanguageLexer.INSTANCE_INIT;
455 
456     /**
457      * A static initialization block.  Zero or more static
458      * initializers may be children of the object block of a class
459      * or enum declaration (interfaces cannot have static initializers).  The
460      * first and only child is a statement list.
461      *
462      * <p>For Example:</p>
463      * <pre>
464      * static {
465      *   num = 10;
466      * }
467      * </pre>
468      *
469      * <p>parses as:</p>
470      * <pre>
471      * STATIC_INIT -&gt; STATIC_INIT
472      *  `--SLIST -&gt; {
473      *      |--EXPR -&gt; EXPR
474      *      |   `--ASSIGN -&gt; =
475      *      |       |--IDENT -&gt; num
476      *      |       `--NUM_INT -&gt; 10
477      *      |--SEMI -&gt; ;
478      *      `--RCURLY -&gt; }
479      * </pre>
480      *
481      * @see <a
482      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.7">Java
483      *     Language Specification, &sect;8.7</a>
484      * @see #SLIST
485      * @see #OBJBLOCK
486      **/
487     public static final int STATIC_INIT =
488         JavaLanguageLexer.STATIC_INIT;
489 
490     /**
491      * A type.  This is either a return type of a method or a type of
492      * a variable or field.  The first child of this element is the
493      * actual type.  This may be a primitive type, an identifier, a
494      * dot which is the root of a fully qualified type, or an array of
495      * any of these. The second child may be type arguments to the type.
496      *
497      * <p>For example:</p>
498      * <pre>boolean var = true;</pre>
499      *
500      * <p>parses as:</p>
501      * <pre>
502      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
503      * |   |--MODIFIERS -&gt; MODIFIERS
504      * |   |--TYPE -&gt; TYPE
505      * |   |   `--LITERAL_BOOLEAN -&gt; boolean
506      * |   |--IDENT -&gt; var
507      * |   `--ASSIGN -&gt; =
508      * |       `--EXPR -&gt; EXPR
509      * |           `--LITERAL_TRUE -&gt; true
510      * |--SEMI -&gt; ;
511      * </pre>
512      *
513      * @see #VARIABLE_DEF
514      * @see #METHOD_DEF
515      * @see #PARAMETER_DEF
516      * @see #IDENT
517      * @see #DOT
518      * @see #LITERAL_VOID
519      * @see #LITERAL_BOOLEAN
520      * @see #LITERAL_BYTE
521      * @see #LITERAL_CHAR
522      * @see #LITERAL_SHORT
523      * @see #LITERAL_INT
524      * @see #LITERAL_FLOAT
525      * @see #LITERAL_LONG
526      * @see #LITERAL_DOUBLE
527      * @see #ARRAY_DECLARATOR
528      * @see #TYPE_ARGUMENTS
529      **/
530     public static final int TYPE = JavaLanguageLexer.TYPE;
531     /**
532      * A class declaration.
533      *
534      * <p>For example:</p>
535      * <pre>
536      * public class Test {
537      * }
538      * </pre>
539      *
540      * <p>parses as:</p>
541      * <pre>
542      * CLASS_DEF -&gt; CLASS_DEF
543      * |--MODIFIERS -&gt; MODIFIERS
544      * |   `--LITERAL_PUBLIC -&gt; public
545      * |--LITERAL_CLASS -&gt; class
546      * |--IDENT -&gt; Test
547      * `--OBJBLOCK -&gt; OBJBLOCK
548      *     |--LCURLY -&gt; {
549      *     `--RCURLY -&gt; }
550      * </pre>
551      *
552      * @see <a
553      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html">Java
554      *     Language Specification, &sect;8</a>
555      * @see #MODIFIERS
556      * @see #IDENT
557      * @see #EXTENDS_CLAUSE
558      * @see #IMPLEMENTS_CLAUSE
559      * @see #OBJBLOCK
560      * @see #LITERAL_NEW
561      **/
562     public static final int CLASS_DEF = JavaLanguageLexer.CLASS_DEF;
563     /**
564      * An interface declaration.
565      *
566      * <p>For example:</p>
567      *
568      * <pre>
569      * public interface MyInterface {
570      *
571      * }
572      * </pre>
573      *
574      * <p>parses as:</p>
575      *
576      * <pre>
577      * INTERFACE_DEF -&gt; INTERFACE_DEF
578      * |--MODIFIERS -&gt; MODIFIERS
579      * |   `--LITERAL_PUBLIC -&gt; public
580      * |--LITERAL_INTERFACE -&gt; interface
581      * |--IDENT -&gt; MyInterface
582      * `--OBJBLOCK -&gt; OBJBLOCK
583      *     |--LCURLY -&gt; {
584      *     `--RCURLY -&gt; }
585      * </pre>
586      *
587      * @see <a
588      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html">Java
589      *     Language Specification, &sect;9</a>
590      * @see #MODIFIERS
591      * @see #IDENT
592      * @see #EXTENDS_CLAUSE
593      * @see #OBJBLOCK
594      **/
595     public static final int INTERFACE_DEF =
596         JavaLanguageLexer.INTERFACE_DEF;
597 
598     /**
599      * The package declaration.  This is optional, but if it is
600      * included, then there is only one package declaration per source
601      * file and it must be the first non-comment in the file. A package
602      * declaration may be annotated in which case the annotations comes
603      * before the rest of the declaration (and are the first children).
604      *
605      * <p>For example:</p>
606      *
607      * <pre>
608      *   package com.puppycrawl.tools.checkstyle.api;
609      * </pre>
610      *
611      * <p>parses as:</p>
612      *
613      * <pre>
614      * PACKAGE_DEF -&gt; package
615      * |--ANNOTATIONS -&gt; ANNOTATIONS
616      * |--DOT -&gt; .
617      * |   |--DOT -&gt; .
618      * |   |   |--DOT -&gt; .
619      * |   |   |   |--DOT -&gt; .
620      * |   |   |   |   |--IDENT -&gt; com
621      * |   |   |   |   `--IDENT -&gt; puppycrawl
622      * |   |   |   `--IDENT -&gt; tools
623      * |   |   `--IDENT -&gt; checkstyle
624      * |   `--IDENT -&gt; api
625      * `--SEMI -&gt; ;
626      * </pre>
627      *
628      * @see <a
629      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.4">Java
630      *     Language Specification &sect;7.4</a>
631      * @see #DOT
632      * @see #IDENT
633      * @see #SEMI
634      * @see #ANNOTATIONS
635      * @see FullIdent
636      **/
637     public static final int PACKAGE_DEF = JavaLanguageLexer.PACKAGE_DEF;
638     /**
639      * An array declaration.
640      *
641      * <p>If the array declaration represents a type, then the type of
642      * the array elements is the first child.  Multidimensional arrays
643      * may be regarded as arrays of arrays.  In other words, the first
644      * child of the array declaration is another array
645      * declaration.</p>
646      *
647      * <p>For example:</p>
648      * <pre>
649      *   int[] x;
650      * </pre>
651      *
652      * <p>parses as:</p>
653      * <pre>
654      * VARIABLE_DEF -&gt; VARIABLE_DEF
655      *  |--MODIFIERS -&gt; MODIFIERS
656      *  |--TYPE -&gt; TYPE
657      *  |   |--LITERAL_INT -&gt; int
658      *  |   `--ARRAY_DECLARATOR -&gt; [
659      *  |       `--RBRACK -&gt; ]
660      *  |--IDENT -&gt; x
661      *  `--SEMI -&gt; ;
662      * </pre>
663      *
664      * <p>The array declaration may also represent an inline array
665      * definition.  In this case, the first child will be either an
666      * expression specifying the length of the array or an array
667      * initialization block.</p>
668      *
669      * @see <a
670      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html">Java
671      *     Language Specification &sect;10</a>
672      * @see #TYPE
673      * @see #ARRAY_INIT
674      **/
675     public static final int ARRAY_DECLARATOR =
676         JavaLanguageLexer.ARRAY_DECLARATOR;
677 
678     /**
679      * An extends clause.  This appears as part of class and interface
680      * definitions.  This element appears even if the
681      * {@code extends} keyword is not explicitly used.  The child
682      * is an optional identifier.
683      *
684      * <p>For example:</p>
685      * <pre>
686      * public class Test extends ArrayList {
687      * }
688      * </pre>
689      *
690      * <p>parses as:</p>
691      * <pre>
692      * CLASS_DEF -&gt; CLASS_DEF
693      * |--MODIFIERS -&gt; MODIFIERS
694      * |   `--LITERAL_PUBLIC -&gt; public
695      * |--LITERAL_CLASS -&gt; class
696      * |--IDENT -&gt; Test
697      * |--EXTENDS_CLAUSE -&gt; extends
698      * |   `--IDENT -&gt; ArrayList
699      * `--OBJBLOCK -&gt; OBJBLOCK
700      *     |--LCURLY -&gt; {
701      *     `--RCURLY -&gt; }
702      * </pre>
703      *
704      * @see #IDENT
705      * @see #DOT
706      * @see #CLASS_DEF
707      * @see #INTERFACE_DEF
708      * @see FullIdent
709      **/
710     public static final int EXTENDS_CLAUSE =
711         JavaLanguageLexer.EXTENDS_CLAUSE;
712 
713     /**
714      * An implements clause.  This always appears in a class or enum
715      * declaration, even if there are no implemented interfaces.  The
716      * children are a comma separated list of zero or more
717      * identifiers.
718      *
719      * <p>For example:</p>
720      * <pre>
721      * public class MyClass implements Collection {
722      *
723      * }
724      * </pre>
725      *
726      * <p>parses as:</p>
727      * <pre>
728      * CLASS_DEF -&gt; CLASS_DEF
729      * |--MODIFIERS -&gt; MODIFIERS
730      * |   `--LITERAL_PUBLIC -&gt; public
731      * |--LITERAL_CLASS -&gt; class
732      * |--IDENT -&gt; MyClass
733      * |--IMPLEMENTS_CLAUSE -&gt; implements
734      * |   `--IDENT -&gt; Collection
735      * `--OBJBLOCK -&gt; OBJBLOCK
736      *     |--LCURLY -&gt; {
737      *     `--RCURLY -&gt; }
738      * </pre>
739      *
740      * @see #IDENT
741      * @see #DOT
742      * @see #COMMA
743      * @see #CLASS_DEF
744      * @see #ENUM_DEF
745      **/
746     public static final int IMPLEMENTS_CLAUSE =
747         JavaLanguageLexer.IMPLEMENTS_CLAUSE;
748 
749     /**
750      * A list of parameters to a method or constructor.  The children
751      * are zero or more parameter declarations separated by commas.
752      *
753      * <p>For example</p>
754      * <pre>
755      * int start, int end
756      * </pre>
757      *
758      * <p>parses as:</p>
759      * <pre>
760      * PARAMETERS -&gt; PARAMETERS
761      *  |--PARAMETER_DEF -&gt; PARAMETER_DEF
762      *  |   |--MODIFIERS -&gt; MODIFIERS
763      *  |   |--TYPE -&gt; TYPE
764      *  |   |   `--LITERAL_INT -&gt; int
765      *  |   `--IDENT -&gt; start
766      *  |--COMMA -&gt; ,
767      *  `--PARAMETER_DEF -&gt; PARAMETER_DEF
768      *      |--MODIFIERS -&gt; MODIFIERS
769      *      |--TYPE -&gt; TYPE
770      *      |   `--LITERAL_INT -&gt; int
771      *      `--IDENT -&gt; end
772      * </pre>
773      *
774      * @see #PARAMETER_DEF
775      * @see #COMMA
776      * @see #METHOD_DEF
777      * @see #CTOR_DEF
778      **/
779     public static final int PARAMETERS = JavaLanguageLexer.PARAMETERS;
780     /**
781      * A parameter declaration. The last parameter in a list of parameters may
782      * be variable length (indicated by the ELLIPSIS child node immediately
783      * after the TYPE child).
784      *
785      * <p>For example</p>
786      * <pre>
787      *      void foo(SomeType SomeType.this, int firstParameter, int... secondParameter) {}
788      * </pre>
789      *
790      * <p>parses as:</p>
791      * <pre>
792      * METHOD_DEF -&gt; METHOD_DEF
793      *  |--MODIFIERS -&gt; MODIFIERS
794      *  |--TYPE -&gt; TYPE
795      *  |   `--LITERAL_VOID -&gt; void
796      *  |--IDENT -&gt; foo
797      *  |--LPAREN -&gt; (
798      *  |--PARAMETERS -&gt; PARAMETERS
799      *  |   |--PARAMETER_DEF -&gt; PARAMETER_DEF
800      *  |   |   |--MODIFIERS -&gt; MODIFIERS
801      *  |   |   |--TYPE -&gt; TYPE
802      *  |   |   |   `--IDENT -&gt; SomeType
803      *  |   |   `--DOT -&gt; .
804      *  |   |       |--IDENT -&gt; SomeType
805      *  |   |       `--LITERAL_THIS -&gt; this
806      *  |   |--COMMA -&gt; ,
807      *  |   |--PARAMETER_DEF -&gt; PARAMETER_DEF
808      *  |   |   |--MODIFIERS -&gt; MODIFIERS
809      *  |   |   |--TYPE -&gt; TYPE
810      *  |   |   |   `--LITERAL_INT -&gt; int
811      *  |   |   `--IDENT -&gt; firstParameter
812      *  |   |--COMMA -&gt; ,
813      *  |   `--PARAMETER_DEF -&gt; PARAMETER_DEF
814      *  |       |--MODIFIERS -&gt; MODIFIERS
815      *  |       |--TYPE -&gt; TYPE
816      *  |       |   `--LITERAL_INT -&gt; int
817      *  |       |--ELLIPSIS -&gt; ...
818      *  |       `--IDENT -&gt; secondParameter
819      *  |--RPAREN -&gt; )
820      *  `--SLIST -&gt; {
821      *      `--RCURLY -&gt; }
822      *
823      * </pre>
824      *
825      * @see #MODIFIERS
826      * @see #TYPE
827      * @see #IDENT
828      * @see #PARAMETERS
829      * @see #ELLIPSIS
830      **/
831     public static final int PARAMETER_DEF =
832         JavaLanguageLexer.PARAMETER_DEF;
833 
834     /**
835      * A labeled statement.
836      *
837      * <p>For example:</p>
838      * <pre>
839      * outer:
840      * while (i &lt; 10) {
841      *     if (i == 5)
842      *         continue outer;
843      *     i++;
844      * }
845      * </pre>
846      *
847      * <p>parses as:</p>
848      * <pre>
849      * LABELED_STAT -&gt; :
850      *  |--IDENT -&gt; outer
851      *  `--LITERAL_WHILE -&gt; while
852      *      |--LPAREN -&gt; (
853      *      |--EXPR -&gt; EXPR
854      *      |   `--LT -&gt; &lt;
855      *      |       |--IDENT -&gt; i
856      *      |       `--NUM_INT -&gt; 10
857      *      |--RPAREN -&gt; )
858      *      `--SLIST -&gt; {
859      *          |--LITERAL_IF -&gt; if
860      *          |   |--LPAREN -&gt; (
861      *          |   |--EXPR -&gt; EXPR
862      *          |   |   `--EQUAL -&gt; ==
863      *          |   |       |--IDENT -&gt; i
864      *          |   |       `--NUM_INT -&gt; 5
865      *          |   |--RPAREN -&gt; )
866      *          |   `--LITERAL_CONTINUE -&gt; continue
867      *          |       |--IDENT -&gt; outer
868      *          |       `--SEMI -&gt; ;
869      *          |--EXPR -&gt; EXPR
870      *          |   `--POST_INC -&gt; ++
871      *          |       `--IDENT -&gt; i
872      *          |--SEMI -&gt; ;
873      *          `--RCURLY -&gt; }
874      * </pre>
875      *
876      * @see <a
877      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.7">Java
878      *     Language Specification, &sect;14.7</a>
879      * @see #SLIST
880      **/
881     public static final int LABELED_STAT =
882         JavaLanguageLexer.LABELED_STAT;
883 
884     /**
885      * A type-cast.
886      *
887      * <p>For example:</p>
888      * <pre>
889      * (String)it.next()
890      * </pre>
891      *
892      * <p>parses as:</p>
893      * <pre>
894      * `--TYPECAST -&gt; (
895      *     |--TYPE -&gt; TYPE
896      *     |   `--IDENT -&gt; String
897      *     |--RPAREN -&gt; )
898      *     `--METHOD_CALL -&gt; (
899      *         |--DOT -&gt; .
900      *         |   |--IDENT -&gt; it
901      *         |   `--IDENT -&gt; next
902      *         |--ELIST -&gt; ELIST
903      *         `--RPAREN -&gt; )
904      * </pre>
905      *
906      * @see <a
907      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.16">Java
908      *     Language Specification, &sect;15.16</a>
909      * @see #EXPR
910      * @see #TYPE
911      * @see #TYPE_ARGUMENTS
912      * @see #RPAREN
913      **/
914     public static final int TYPECAST = JavaLanguageLexer.TYPECAST;
915     /**
916      * The array index operator.
917      *
918      * <p>For example:</p>
919      * <pre>
920      * arr[0] = 10;
921      * </pre>
922      *
923      * <p>parses as:</p>
924      * <pre>
925      * |--EXPR -&gt; EXPR
926      * |   `--ASSIGN -&gt; =
927      * |       |--INDEX_OP -&gt; [
928      * |       |   |--IDENT -&gt; arr
929      * |       |   |--EXPR -&gt; EXPR
930      * |       |   |   `--NUM_INT -&gt; 0
931      * |       |   `--RBRACK -&gt; ]
932      * |       `--NUM_INT -&gt; 10
933      * |--SEMI -&gt; ;
934      * </pre>
935      *
936      * @see #EXPR
937      **/
938     public static final int INDEX_OP = JavaLanguageLexer.INDEX_OP;
939     /**
940      * The {@code ++} (postfix increment) operator.
941      *
942      * <p>For example:</p>
943      * <pre>
944      * a++;
945      * </pre>
946      *
947      * <p>parses as:</p>
948      * <pre>
949      * |--EXPR -&gt; EXPR
950      * |   `--POST_INC -&gt; ++
951      * |       `--IDENT -&gt; a
952      * |--SEMI -&gt; ;
953      * </pre>
954      *
955      * @see <a
956      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.14.1">Java
957      *     Language Specification, &sect;15.14.1</a>
958      * @see #EXPR
959      * @see #INC
960      **/
961     public static final int POST_INC = JavaLanguageLexer.POST_INC;
962     /**
963      * The {@code --} (postfix decrement) operator.
964      *
965      * <p>For example:</p>
966      * <pre>
967      * a--;
968      * </pre>
969      *
970      * <p>parses as:</p>
971      * <pre>
972      * |--EXPR -&gt; EXPR
973      * |   `--POST_DEC -&gt; --
974      * |       `--IDENT -&gt; a
975      * |--SEMI -&gt; ;
976      * </pre>
977      *
978      * @see <a
979      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.14.2">Java
980      *     Language Specification, &sect;15.14.2</a>
981      * @see #EXPR
982      * @see #DEC
983      **/
984     public static final int POST_DEC = JavaLanguageLexer.POST_DEC;
985     /**
986      * A method call. A method call may have type arguments however these
987      * are attached to the appropriate node in the qualified method name.
988      *
989      * <p>For example:</p>
990      * <pre>
991      * Integer.parseInt("123");
992      * </pre>
993      *
994      * <p>parses as:</p>
995      * <pre>
996      * |--EXPR -&gt; EXPR
997      * |   `--METHOD_CALL -&gt; (
998      * |       |--DOT -&gt; .
999      * |       |   |--IDENT -&gt; Integer
1000      * |       |   `--IDENT -&gt; parseInt
1001      * |       |--ELIST -&gt; ELIST
1002      * |       |   `--EXPR -&gt; EXPR
1003      * |       |       `--STRING_LITERAL -&gt; "123"
1004      * |       `--RPAREN -&gt; )
1005      * |--SEMI -&gt; ;
1006      * </pre>
1007      *
1008      *
1009      * @see #IDENT
1010      * @see #TYPE_ARGUMENTS
1011      * @see #DOT
1012      * @see #ELIST
1013      * @see #RPAREN
1014      * @see FullIdent
1015      **/
1016     public static final int METHOD_CALL = JavaLanguageLexer.METHOD_CALL;
1017 
1018     /**
1019      * A reference to a method or constructor without arguments. Part of Java 8 syntax.
1020      * The token should be used for subscribing for double colon literal.
1021      * {@link #DOUBLE_COLON} token does not appear in the tree.
1022      *
1023      * <p>For example:</p>
1024      * <pre>
1025      * Comparator&lt;String&gt; compare = String::compareToIgnoreCase;
1026      * </pre>
1027      *
1028      * <p>parses as:
1029      * <pre>
1030      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
1031      * |   |--MODIFIERS -&gt; MODIFIERS
1032      * |   |--TYPE -&gt; TYPE
1033      * |   |   |--IDENT -&gt; Comparator
1034      * |   |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
1035      * |   |       |--GENERIC_START -&gt; &lt;
1036      * |   |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
1037      * |   |       |   `--IDENT -&gt; String
1038      * |   |       `--GENERIC_END -&gt; &gt;
1039      * |   |--IDENT -&gt; compare
1040      * |   `--ASSIGN -&gt; =
1041      * |       `--EXPR -&gt; EXPR
1042      * |           `--METHOD_REF -&gt; ::
1043      * |               |--IDENT -&gt; String
1044      * |               `--IDENT -&gt; compareToIgnoreCase
1045      * |--SEMI -&gt; ;
1046      * </pre>
1047      *
1048      * @see #IDENT
1049      * @see #DOUBLE_COLON
1050      */
1051     public static final int METHOD_REF = JavaLanguageLexer.METHOD_REF;
1052     /**
1053      * An expression.  Operators with lower precedence appear at a
1054      * higher level in the tree than operators with higher precedence.
1055      * Parentheses are siblings to the operator they enclose.
1056      *
1057      * <p>For example:</p>
1058      * <pre>
1059      * int x = 4 + 2 * (5 % 3) + (1 &lt;&lt; 3) - 4 * 5;
1060      * </pre>
1061      *
1062      * <p>parses as:</p>
1063      * <pre>
1064      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
1065      * |   |--MODIFIERS -&gt; MODIFIERS
1066      * |   |--TYPE -&gt; TYPE
1067      * |   |   `--LITERAL_INT -&gt; int
1068      * |   |--IDENT -&gt; x
1069      * |   `--ASSIGN -&gt; =
1070      * |       `--EXPR -&gt; EXPR
1071      * |           `--MINUS -&gt; -
1072      * |               |--PLUS -&gt; +
1073      * |               |   |--PLUS -&gt; +
1074      * |               |   |   |--NUM_INT -&gt; 4
1075      * |               |   |   `--STAR -&gt; *
1076      * |               |   |       |--NUM_INT -&gt; 2
1077      * |               |   |       |--LPAREN -&gt; (
1078      * |               |   |       |--MOD -&gt; %
1079      * |               |   |       |   |--NUM_INT -&gt; 5
1080      * |               |   |       |   `--NUM_INT -&gt; 3
1081      * |               |   |       `--RPAREN -&gt; )
1082      * |               |   |--LPAREN -&gt; (
1083      * |               |   |--SL -&gt; &lt;&lt;
1084      * |               |   |   |--NUM_INT -&gt; 1
1085      * |               |   |   `--NUM_INT -&gt; 3
1086      * |               |   `--RPAREN -&gt; )
1087      * |               `--STAR -&gt; *
1088      * |                   |--NUM_INT -&gt; 4
1089      * |                   `--NUM_INT -&gt; 5
1090      * |--SEMI -&gt; ;
1091      * </pre>
1092      *
1093      * @see #ELIST
1094      * @see #ASSIGN
1095      * @see #LPAREN
1096      * @see #RPAREN
1097      **/
1098     public static final int EXPR = JavaLanguageLexer.EXPR;
1099     /**
1100      * An array initialization.  This may occur as part of an array
1101      * declaration or inline with {@code new}.
1102      *
1103      * <p>For example:</p>
1104      * <pre>
1105      *   int[] y =
1106      *     {
1107      *       1,
1108      *       2,
1109      *     };
1110      * </pre>
1111      *
1112      * <p>parses as:</p>
1113      * <pre>
1114      * VARIABLE_DEF -&gt; VARIABLE_DEF
1115      *  |--MODIFIERS -&gt; MODIFIERS
1116      *  |--TYPE -&gt; TYPE
1117      *  |   |--LITERAL_INT -&gt; int
1118      *  |   `--ARRAY_DECLARATOR -&gt; [
1119      *  |       `--RBRACK -&gt; ]
1120      *  |--IDENT -&gt; y
1121      *  |--ASSIGN -&gt; =
1122      *  |   `--ARRAY_INIT -&gt; {
1123      *  |       |--EXPR -&gt; EXPR
1124      *  |       |   `--NUM_INT -&gt; 1
1125      *  |       |--COMMA -&gt; ,
1126      *  |       |--EXPR -&gt; EXPR
1127      *  |       |   `--NUM_INT -&gt; 2
1128      *  |       |--COMMA -&gt; ,
1129      *  |       `--RCURLY -&gt; }
1130      *  `--SEMI -&gt; ;
1131      * </pre>
1132      *
1133      * <p>Also consider:</p>
1134      * <pre>
1135      *   int[] z = new int[]
1136      *     {
1137      *       1,
1138      *       2,
1139      *     };
1140      * </pre>
1141      *
1142      * <p>which parses as:</p>
1143      * <pre>
1144      * VARIABLE_DEF -&gt; VARIABLE_DEF
1145      *  |--MODIFIERS -&gt; MODIFIERS
1146      *  |--TYPE -&gt; TYPE [2:4]
1147      *  |   |--LITERAL_INT -&gt; int
1148      *  |   `--ARRAY_DECLARATOR -&gt; [
1149      *  |       `--RBRACK -&gt; ]
1150      *  |--IDENT -&gt; z
1151      *  |--ASSIGN -&gt; =
1152      *  |   `--EXPR -&gt; EXPR
1153      *  |       `--LITERAL_NEW -&gt; new
1154      *  |           |--LITERAL_INT -&gt; int
1155      *  |           |--ARRAY_DECLARATOR -&gt; [
1156      *  |           |   `--RBRACK -&gt; ]
1157      *  |           `--ARRAY_INIT -&gt; {
1158      *  |               |--EXPR -&gt; EXPR
1159      *  |               |   `--NUM_INT -&gt; 1
1160      *  |               |--COMMA -&gt; ,
1161      *  |               |--EXPR -&gt; EXPR
1162      *  |               |   `--NUM_INT -&gt; 2
1163      *  |               |--COMMA -&gt; ,
1164      *  |               `--RCURLY -&gt; }
1165      *  `--SEMI -&gt; ;
1166      * </pre>
1167      *
1168      * @see #ARRAY_DECLARATOR
1169      * @see #TYPE
1170      * @see #LITERAL_NEW
1171      * @see #COMMA
1172      **/
1173     public static final int ARRAY_INIT = JavaLanguageLexer.ARRAY_INIT;
1174     /**
1175      * An import declaration.  Import declarations are option, but
1176      * must appear after the package declaration and before the first type
1177      * declaration.
1178      *
1179      * <p>For example:</p>
1180      *
1181      * <pre>
1182      *   import java.io.IOException;
1183      * </pre>
1184      *
1185      * <p>parses as:</p>
1186      *
1187      * <pre>
1188      * IMPORT -&gt; import
1189      * |--DOT -&gt; .
1190      * |   |--DOT -&gt; .
1191      * |   |   |--IDENT -&gt; java
1192      * |   |   `--IDENT -&gt; io
1193      * |   `--IDENT -&gt; IOException
1194      * `--SEMI -&gt; ;
1195      * </pre>
1196      *
1197      * @see <a
1198      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.5">Java
1199      *     Language Specification &sect;7.5</a>
1200      * @see #DOT
1201      * @see #IDENT
1202      * @see #STAR
1203      * @see #SEMI
1204      * @see FullIdent
1205      **/
1206     public static final int IMPORT = JavaLanguageLexer.IMPORT;
1207     /**
1208      * The {@code -} (unary minus) operator.
1209      *
1210      * <p>For example:</p>
1211      * <pre>
1212      * a = -b;
1213      * </pre>
1214      *
1215      * <p>parses as:</p>
1216      * <pre>
1217      * |--EXPR -&gt; EXPR
1218      * |   `--ASSIGN -&gt; =
1219      * |       |--IDENT -&gt; a
1220      * |       `--UNARY_MINUS -&gt; -
1221      * |           `--IDENT -&gt; b
1222      * |--SEMI -&gt; ;
1223      * </pre>
1224      *
1225      * @see <a
1226      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.4">Java
1227      *     Language Specification, &sect;15.15.4</a>
1228      * @see #EXPR
1229      **/
1230     public static final int UNARY_MINUS = JavaLanguageLexer.UNARY_MINUS;
1231     /**
1232      * The {@code +} (unary plus) operator.
1233      *
1234      * <p>For example:</p>
1235      * <pre>
1236      * a = + b;
1237      * </pre>
1238      *
1239      * <p>parses as:</p>
1240      * <pre>
1241      * |--EXPR -&gt; EXPR
1242      * |   `--ASSIGN -&gt; =
1243      * |       |--IDENT -&gt; a
1244      * |       `--UNARY_PLUS -&gt; +
1245      * |           `--IDENT -&gt; b
1246      * |--SEMI -&gt; ;
1247      * </pre>
1248      *
1249      * @see <a
1250      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.3">Java
1251      *     Language Specification, &sect;15.15.3</a>
1252      * @see #EXPR
1253      **/
1254     public static final int UNARY_PLUS = JavaLanguageLexer.UNARY_PLUS;
1255     /**
1256      * A group of case clauses.  Case clauses with no associated
1257      * statements are grouped together into a case group.  The last
1258      * child is a statement list containing the statements to execute
1259      * upon a match.
1260      *
1261      * <p>For example:</p>
1262      * <pre>
1263      * case 0:
1264      * case 1:
1265      * case 2:
1266      *   x = 3;
1267      *   break;
1268      * </pre>
1269      *
1270      * <p>parses as:</p>
1271      * <pre>
1272      * CASE_GROUP -&gt; CASE_GROUP
1273      *  |--LITERAL_CASE -&gt; case
1274      *  |   |--EXPR -&gt; EXPR
1275      *  |   |   `--NUM_INT -&gt; 0
1276      *  |   `--COLON -&gt; :
1277      *  |--LITERAL_CASE -&gt; case
1278      *  |   |--EXPR -&gt; EXPR
1279      *  |   |   `--NUM_INT -&gt; 1
1280      *  |   `--COLON -&gt; :
1281      *  |--LITERAL_CASE -&gt; case
1282      *  |   |--EXPR -&gt; EXPR
1283      *  |   |   `--NUM_INT -&gt; 2
1284      *  |   `--COLON -&gt; :
1285      *  `--SLIST -&gt; SLIST
1286      *      |--EXPR -&gt; EXPR
1287      *      |   `--ASSIGN -&gt; =
1288      *      |       |--IDENT -&gt; x
1289      *      |       `--NUM_INT -&gt; 3
1290      *      |--SEMI -&gt; ;
1291      *      `--LITERAL_BREAK -&gt; break
1292      *          `--SEMI -&gt; ;
1293      * </pre>
1294      *
1295      * @see #LITERAL_CASE
1296      * @see #LITERAL_DEFAULT
1297      * @see #LITERAL_SWITCH
1298      * @see #LITERAL_YIELD
1299      **/
1300     public static final int CASE_GROUP = JavaLanguageLexer.CASE_GROUP;
1301     /**
1302      * An expression list.  The children are a comma separated list of
1303      * expressions.
1304      *
1305      * <p>For example:</p>
1306      * <pre>
1307      * new ArrayList(50);
1308      * </pre>
1309      *
1310      * <p>parses as:</p>
1311      * <pre>
1312      * |--EXPR -&gt; EXPR
1313      * |   `--LITERAL_NEW -&gt; new
1314      * |       |--IDENT -&gt; ArrayList
1315      * |       |--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
1316      * |       |   |--GENERIC_START -&gt; &lt;
1317      * |       |   `--GENERIC_END -&gt; &gt;
1318      * |       |--LPAREN -&gt; (
1319      * |       |--ELIST -&gt; ELIST
1320      * |       |   `--EXPR -&gt; EXPR
1321      * |       |       `--NUM_INT -&gt; 50
1322      * |       `--RPAREN -&gt; )
1323      * |--SEMI -&gt; ;
1324      * </pre>
1325      *
1326      * @see #LITERAL_NEW
1327      * @see #FOR_INIT
1328      * @see #FOR_ITERATOR
1329      * @see #EXPR
1330      * @see #METHOD_CALL
1331      * @see #CTOR_CALL
1332      * @see #SUPER_CTOR_CALL
1333      **/
1334     public static final int ELIST = JavaLanguageLexer.ELIST;
1335     /**
1336      * A for loop initializer.  This is a child of
1337      * {@code LITERAL_FOR}.  The children of this element may be
1338      * a comma separated list of variable declarations, an expression
1339      * list, or empty.
1340      *
1341      * <p>For example:</p>
1342      * <pre>
1343      * for (int i = 0; i &lt; arr.length; i++) {}
1344      * </pre>
1345      *
1346      * <p>parses as:</p>
1347      * <pre>
1348      * LITERAL_FOR -&gt; for
1349      *  |--LPAREN -&gt; (
1350      *  |--FOR_INIT -&gt; FOR_INIT
1351      *  |   `--VARIABLE_DEF -&gt; VARIABLE_DEF
1352      *  |       |--MODIFIERS -&gt; MODIFIERS
1353      *  |       |--TYPE -&gt; TYPE
1354      *  |       |   `--LITERAL_INT -&gt; int
1355      *  |       |--IDENT -&gt; i
1356      *  |       `--ASSIGN -&gt; =
1357      *  |           `--EXPR -&gt; EXPR
1358      *  |               `--NUM_INT -&gt; 0
1359      *  |--SEMI -&gt; ;
1360      *  |--FOR_CONDITION -&gt; FOR_CONDITION
1361      *  |   `--EXPR -&gt; EXPR
1362      *  |       `--LT -&gt; &lt;
1363      *  |           |--IDENT -&gt; i
1364      *  |           `--DOT -&gt; .
1365      *  |               |--IDENT -&gt; arr
1366      *  |               `--IDENT -&gt; length
1367      *  |--SEMI -&gt; ;
1368      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
1369      *  |   `--ELIST -&gt; ELIST
1370      *  |       `--EXPR -&gt; EXPR
1371      *  |           `--POST_INC -&gt; ++
1372      *  |               `--IDENT -&gt; i
1373      *  |--RPAREN -&gt; )
1374      *  `--SLIST -&gt; {
1375      *      `--RCURLY -&gt; }
1376      * </pre>
1377      *
1378      * @see #VARIABLE_DEF
1379      * @see #ELIST
1380      * @see #LITERAL_FOR
1381      **/
1382     public static final int FOR_INIT = JavaLanguageLexer.FOR_INIT;
1383     /**
1384      * A for loop condition.  This is a child of
1385      * {@code LITERAL_FOR}.  The child of this element is an
1386      * optional expression.
1387      *
1388      * <p>For example:</p>
1389      * <pre>
1390      * for (int i = 0; i &lt; arr.length; i++) {}
1391      * </pre>
1392      *
1393      * <p>parses as:</p>
1394      * <pre>
1395      * LITERAL_FOR -&gt; for
1396      *  |--LPAREN -&gt; (
1397      *  |--FOR_INIT -&gt; FOR_INIT
1398      *  |   `--VARIABLE_DEF -&gt; VARIABLE_DEF
1399      *  |       |--MODIFIERS -&gt; MODIFIERS
1400      *  |       |--TYPE -&gt; TYPE
1401      *  |       |   `--LITERAL_INT -&gt; int
1402      *  |       |--IDENT -&gt; i
1403      *  |       `--ASSIGN -&gt; =
1404      *  |           `--EXPR -&gt; EXPR
1405      *  |               `--NUM_INT -&gt; 0
1406      *  |--SEMI -&gt; ;
1407      *  |--FOR_CONDITION -&gt; FOR_CONDITION
1408      *  |   `--EXPR -&gt; EXPR
1409      *  |       `--LT -&gt; &lt;
1410      *  |           |--IDENT -&gt; i
1411      *  |           `--DOT -&gt; .
1412      *  |               |--IDENT -&gt; arr
1413      *  |               `--IDENT -&gt; length
1414      *  |--SEMI -&gt; ;
1415      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
1416      *  |   `--ELIST -&gt; ELIST
1417      *  |       `--EXPR -&gt; EXPR
1418      *  |           `--POST_INC -&gt; ++
1419      *  |               `--IDENT -&gt; i
1420      *  |--RPAREN -&gt; )
1421      *  `--SLIST -&gt; {
1422      *      `--RCURLY -&gt; }
1423      * </pre>
1424      *
1425      * @see #EXPR
1426      * @see #LITERAL_FOR
1427      **/
1428     public static final int FOR_CONDITION =
1429         JavaLanguageLexer.FOR_CONDITION;
1430 
1431     /**
1432      * A for loop iterator.  This is a child of
1433      * {@code LITERAL_FOR}.  The child of this element is an
1434      * optional expression list.
1435      *
1436      * <p>For example:</p>
1437      * <pre>
1438      * for (int i = 0; i &lt; arr.length; i++) {}
1439      * </pre>
1440      *
1441      * <p>parses as:</p>
1442      * <pre>
1443      * LITERAL_FOR -&gt; for
1444      *  |--LPAREN -&gt; (
1445      *  |--FOR_INIT -&gt; FOR_INIT
1446      *  |   `--VARIABLE_DEF -&gt; VARIABLE_DEF
1447      *  |       |--MODIFIERS -&gt; MODIFIERS
1448      *  |       |--TYPE -&gt; TYPE
1449      *  |       |   `--LITERAL_INT -&gt; int
1450      *  |       |--IDENT -&gt; i
1451      *  |       `--ASSIGN -&gt; =
1452      *  |           `--EXPR -&gt; EXPR
1453      *  |               `--NUM_INT -&gt; 0
1454      *  |--SEMI -&gt; ;
1455      *  |--FOR_CONDITION -&gt; FOR_CONDITION
1456      *  |   `--EXPR -&gt; EXPR
1457      *  |       `--LT -&gt; &lt;
1458      *  |           |--IDENT -&gt; i
1459      *  |           `--DOT -&gt; .
1460      *  |               |--IDENT -&gt; arr
1461      *  |               `--IDENT -&gt; length
1462      *  |--SEMI -&gt; ;
1463      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
1464      *  |   `--ELIST -&gt; ELIST
1465      *  |       `--EXPR -&gt; EXPR
1466      *  |           `--POST_INC -&gt; ++
1467      *  |               `--IDENT -&gt; i
1468      *  |--RPAREN -&gt; )
1469      *  `--SLIST -&gt; {
1470      *      `--RCURLY -&gt; }
1471      * </pre>
1472      *
1473      * @see #ELIST
1474      * @see #LITERAL_FOR
1475      **/
1476     public static final int FOR_ITERATOR =
1477         JavaLanguageLexer.FOR_ITERATOR;
1478 
1479     /**
1480      * The empty statement.  This goes in place of an
1481      * {@code SLIST} for a {@code for} or {@code while}
1482      * loop body.
1483      *
1484      * <p>For example:</p>
1485      * <pre>
1486      * while(true);
1487      * </pre>
1488      *
1489      * <p>parses as:</p>
1490      * <pre>
1491      * LITERAL_WHILE -&gt; while
1492      *  |--LPAREN -&gt; (
1493      *  |--EXPR -&gt; EXPR
1494      *  |   `--LITERAL_TRUE -&gt; true
1495      *  |--RPAREN -&gt; )
1496      *  `--EMPTY_STAT -&gt; ;
1497      * </pre>
1498      *
1499      * @see <a
1500      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.6">Java
1501      *     Language Specification, &sect;14.6</a>
1502      * @see #LITERAL_FOR
1503      * @see #LITERAL_WHILE
1504      **/
1505     public static final int EMPTY_STAT = JavaLanguageLexer.EMPTY_STAT;
1506     /**
1507      * The {@code final} keyword.
1508      *
1509      * <p>For example:</p>
1510      * <pre>
1511      * public final int x = 0;
1512      * </pre>
1513      *
1514      * <p>parses as:</p>
1515      * <pre>
1516      * VARIABLE_DEF -&gt; VARIABLE_DEF
1517      *  |--MODIFIERS -&gt; MODIFIERS
1518      *  |   |--LITERAL_PUBLIC -&gt; public
1519      *  |   `--FINAL -&gt; final
1520      *  |--TYPE -&gt; TYPE
1521      *  |   `--LITERAL_INT -&gt; int
1522      *  |--IDENT -&gt; x
1523      *  |--ASSIGN -&gt; =
1524      *  |   `--EXPR -&gt; EXPR
1525      *  |       `--NUM_INT -&gt; 0
1526      *  `--SEMI -&gt; ;
1527      * </pre>
1528      *
1529      * @see #MODIFIERS
1530      **/
1531     public static final int FINAL = JavaLanguageLexer.FINAL;
1532     /**
1533      * The {@code abstract} keyword.
1534      *
1535      * <p>For example:</p>
1536      * <pre>
1537      *  public abstract class MyClass
1538      *  {
1539      *  }
1540      * </pre>
1541      *
1542      * <p>parses as:</p>
1543      * <pre>
1544      * --CLASS_DEF
1545      *    |--MODIFIERS
1546      *    |   |--LITERAL_PUBLIC (public)
1547      *    |   `--ABSTRACT (abstract)
1548      *    |--LITERAL_CLASS (class)
1549      *    |--IDENT (MyClass)
1550      *    `--OBJBLOCK
1551      *        |--LCURLY ({)
1552      *        `--RCURLY (})
1553      * </pre>
1554      *
1555      * @see #MODIFIERS
1556      **/
1557     public static final int ABSTRACT = JavaLanguageLexer.ABSTRACT;
1558     /**
1559      * The {@code strictfp} keyword.
1560      *
1561      * <p>For example:</p>
1562      * <pre>public strictfp class Test {}</pre>
1563      *
1564      * <p>parses as:</p>
1565      * <pre>
1566      * CLASS_DEF -&gt; CLASS_DEF
1567      * |--MODIFIERS -&gt; MODIFIERS
1568      * |   |--LITERAL_PUBLIC -&gt; public
1569      * |   `--STRICTFP -&gt; strictfp
1570      * |--LITERAL_CLASS -&gt; class
1571      * |--IDENT -&gt; Test
1572      * `--OBJBLOCK -&gt; OBJBLOCK
1573      *     |--LCURLY -&gt; {
1574      *     `--RCURLY -&gt; }
1575      * </pre>
1576      *
1577      * @see #MODIFIERS
1578      **/
1579     public static final int STRICTFP = JavaLanguageLexer.STRICTFP;
1580     /**
1581      * A super constructor call.
1582      *
1583      * <p>For example:</p>
1584      * <pre>
1585      * super(1);
1586      * </pre>
1587      *
1588      * <p>parses as:</p>
1589      * <pre>
1590      * SUPER_CTOR_CALL -&gt; super
1591      *  |--LPAREN -&gt; (
1592      *  |--ELIST -&gt; ELIST
1593      *  |   `--EXPR -&gt; EXPR
1594      *  |       `--NUM_INT -&gt; 1
1595      *  |--RPAREN -&gt; )
1596      *  `--SEMI -&gt; ;
1597      * </pre>
1598      *
1599      * @see #ELIST
1600      * @see #RPAREN
1601      * @see #SEMI
1602      * @see #CTOR_CALL
1603      **/
1604     public static final int SUPER_CTOR_CALL =
1605         JavaLanguageLexer.SUPER_CTOR_CALL;
1606 
1607     /**
1608      * A constructor call.
1609      *
1610      * <p>For example:</p>
1611      * <pre>
1612      * this(1);
1613      * </pre>
1614      *
1615      * <p>parses as:</p>
1616      * <pre>
1617      * CTOR_CALL -&gt; this
1618      *  |--LPAREN -&gt; (
1619      *  |--ELIST -&gt; ELIST
1620      *  |   `--EXPR -&gt; EXPR
1621      *  |       `--NUM_INT -&gt; 1
1622      *  |--RPAREN -&gt; )
1623      *  `--SEMI -&gt; ;
1624      * </pre>
1625      *
1626      * @see #ELIST
1627      * @see #RPAREN
1628      * @see #SEMI
1629      * @see #SUPER_CTOR_CALL
1630      **/
1631     public static final int CTOR_CALL = JavaLanguageLexer.CTOR_CALL;
1632 
1633     /**
1634      * The statement terminator ({@code ;}).  Depending on the
1635      * context, this make occur as a sibling, a child, or not at all.
1636      *
1637      * <p>For example:</p>
1638      * <pre>
1639      * for(;;);
1640      * </pre>
1641      *
1642      * <p>parses as:</p>
1643      * <pre>
1644      * LITERAL_FOR -&gt; for
1645      *  |--LPAREN -&gt; (
1646      *  |--FOR_INIT -&gt; FOR_INIT
1647      *  |--SEMI -&gt; ;
1648      *  |--FOR_CONDITION -&gt; FOR_CONDITION
1649      *  |--SEMI -&gt; ;
1650      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
1651      *  |--RPAREN -&gt; )
1652      *  `--EMPTY_STAT -&gt; ;
1653      * </pre>
1654      *
1655      * @see #PACKAGE_DEF
1656      * @see #IMPORT
1657      * @see #SLIST
1658      * @see #ARRAY_INIT
1659      * @see #LITERAL_FOR
1660      **/
1661     public static final int SEMI = JavaLanguageLexer.SEMI;
1662 
1663     /**
1664      * The {@code ]} symbol.
1665      *
1666      * <p>For example:</p>
1667      * <pre>
1668      * int a[];
1669      * </pre>
1670      *
1671      * <p>parses as:</p>
1672      * <pre>
1673      * VARIABLE_DEF -&gt; VARIABLE_DEF
1674      *  |--MODIFIERS -&gt; MODIFIERS
1675      *  |--TYPE -&gt; TYPE
1676      *  |   |--LITERAL_INT -&gt; int
1677      *  |   `--ARRAY_DECLARATOR -&gt; [
1678      *  |       `--RBRACK -&gt; ]
1679      *  |--IDENT -&gt; a
1680      *  `--SEMI -&gt; ;
1681      * </pre>
1682      *
1683      * @see #INDEX_OP
1684      * @see #ARRAY_DECLARATOR
1685      **/
1686     public static final int RBRACK = JavaLanguageLexer.RBRACK;
1687     /**
1688      * The {@code void} keyword.
1689      *
1690      * <p>For example:</p>
1691      * <pre>
1692      * {@code void LITERAL_VOID(){}}
1693      * </pre>
1694      *
1695      * <p>'void' parses as:</p>
1696      * <pre>
1697      * METHOD_DEF -&gt; METHOD_DEF
1698      *  |--MODIFIERS -&gt; MODIFIERS
1699      *  |--TYPE -&gt; TYPE
1700      *  |   `--LITERAL_VOID -&gt; void
1701      *  |--IDENT -&gt; LITERAL_VOID
1702      * </pre>
1703      *
1704      * @see #TYPE
1705      **/
1706     public static final int LITERAL_VOID =
1707         JavaLanguageLexer.LITERAL_VOID;
1708 
1709     /**
1710      * The {@code boolean} keyword.
1711      *
1712      * <p>For example:</p>
1713      * <pre>
1714      * public boolean flag;
1715      * </pre>
1716      *
1717      * <p>parses as:</p>
1718      * <pre>
1719      * VARIABLE_DEF -&gt; VARIABLE_DEF
1720      *  |--MODIFIERS -&gt; MODIFIERS
1721      *  |   `--LITERAL_PUBLIC -&gt; public
1722      *  |--TYPE -&gt; TYPE
1723      *  |   `--LITERAL_BOOLEAN -&gt; boolean
1724      *  |--IDENT -&gt; flag
1725      *  `--SEMI -&gt; ;
1726      * </pre>
1727      *
1728      * @see #TYPE
1729      **/
1730     public static final int LITERAL_BOOLEAN =
1731         JavaLanguageLexer.LITERAL_BOOLEAN;
1732 
1733     /**
1734      * The {@code byte} keyword.
1735      *
1736      * <p>For example:</p>
1737      * <pre>
1738      * public byte x;
1739      * </pre>
1740      *
1741      * <p>parses as:</p>
1742      * <pre>
1743      * VARIABLE_DEF -&gt; VARIABLE_DEF
1744      *  |--MODIFIERS -&gt; MODIFIERS
1745      *  |   `--LITERAL_PUBLIC -&gt; public
1746      *  |--TYPE -&gt; TYPE
1747      *  |   `--LITERAL_BYTE -&gt; byte
1748      *  |--IDENT -&gt; x
1749      *  `--SEMI -&gt; ;
1750      * </pre>
1751      *
1752      * @see #TYPE
1753      **/
1754     public static final int LITERAL_BYTE =
1755         JavaLanguageLexer.LITERAL_BYTE;
1756 
1757     /**
1758      * The {@code char} keyword.
1759      *
1760      * <p>For example:</p>
1761      * <pre>
1762      * char a = 'A';
1763      * </pre>
1764      *
1765      * <p>parses as:</p>
1766      * <pre>
1767      * VARIABLE_DEF -&gt; VARIABLE_DEF
1768      *  |--MODIFIERS -&gt; MODIFIERS
1769      *  |--TYPE -&gt; TYPE
1770      *  |   `--LITERAL_CHAR -&gt; char
1771      *  |--IDENT -&gt; a
1772      *  |--ASSIGN -&gt; =
1773      *  |   `--EXPR -&gt; EXPR
1774      *  |       `--CHAR_LITERAL -&gt; 'A'
1775      *  `--SEMI -&gt; ;
1776      * </pre>
1777      *
1778      * @see #TYPE
1779      **/
1780     public static final int LITERAL_CHAR =
1781         JavaLanguageLexer.LITERAL_CHAR;
1782 
1783     /**
1784      * The {@code short} keyword.
1785      *
1786      * <p>For example:</p>
1787      * <pre>
1788      * public short x;
1789      * </pre>
1790      *
1791      * <p>parses as:</p>
1792      * <pre>
1793      * VARIABLE_DEF -&gt; VARIABLE_DEF
1794      *  |--MODIFIERS -&gt; MODIFIERS
1795      *  |   `--LITERAL_PUBLIC -&gt; public
1796      *  |--TYPE -&gt; TYPE
1797      *  |   `--LITERAL_SHORT -&gt; short
1798      *  |--IDENT -&gt; x
1799      *  `--SEMI -&gt; ;
1800      * </pre>
1801      *
1802      * @see #TYPE
1803      **/
1804     public static final int LITERAL_SHORT =
1805         JavaLanguageLexer.LITERAL_SHORT;
1806 
1807     /**
1808      * The {@code int} keyword.
1809      *
1810      * <p>For example:</p>
1811      * <pre>
1812      * public int x;
1813      * </pre>
1814      *
1815      * <p>parses as:</p>
1816      * <pre>
1817      * VARIABLE_DEF -&gt; VARIABLE_DEF
1818      *  |--MODIFIERS -&gt; MODIFIERS
1819      *  |   `--LITERAL_PUBLIC -&gt; public
1820      *  |--TYPE -&gt; TYPE
1821      *  |   `--LITERAL_INT -&gt; int
1822      *  |--IDENT -&gt; x
1823      *  `--SEMI -&gt; ;
1824      * </pre>
1825      *
1826      * @see #TYPE
1827      **/
1828     public static final int LITERAL_INT = JavaLanguageLexer.LITERAL_INT;
1829     /**
1830      * The {@code float} keyword.
1831      *
1832      * <p>For example:</p>
1833      * <pre>
1834      * public float x;
1835      * </pre>
1836      *
1837      * <p>parses as:</p>
1838      * <pre>
1839      * VARIABLE_DEF -&gt; VARIABLE_DEF
1840      *  |--MODIFIERS -&gt; MODIFIERS
1841      *  |   `--LITERAL_PUBLIC -&gt; public
1842      *  |--TYPE -&gt; TYPE
1843      *  |   `--LITERAL_FLOAT -&gt; float
1844      *  |--IDENT -&gt; x
1845      *  `--SEMI -&gt; ;
1846      * </pre>
1847      *
1848      * @see #TYPE
1849      **/
1850     public static final int LITERAL_FLOAT =
1851         JavaLanguageLexer.LITERAL_FLOAT;
1852 
1853     /**
1854      * The {@code long} keyword.
1855      *
1856      * <p>For example:</p>
1857      * <pre>
1858      * public long x;
1859      * </pre>
1860      *
1861      * <p>parses as:</p>
1862      * <pre>
1863      * VARIABLE_DEF -&gt; VARIABLE_DEF
1864      *  |--MODIFIERS -&gt; MODIFIERS
1865      *  |   `--LITERAL_PUBLIC -&gt; public
1866      *  |--TYPE -&gt; TYPE
1867      *  |   `--LITERAL_LONG -&gt; long
1868      *  |--IDENT -&gt; x
1869      *  `--SEMI -&gt; ;
1870      * </pre>
1871      *
1872      * @see #TYPE
1873      **/
1874     public static final int LITERAL_LONG =
1875         JavaLanguageLexer.LITERAL_LONG;
1876 
1877     /**
1878      * The {@code double} keyword.
1879      *
1880      * <p>For example:</p>
1881      * <pre>
1882      * public double x;
1883      * </pre>
1884      *
1885      * <p>parses as:</p>
1886      * <pre>
1887      * VARIABLE_DEF -&gt; VARIABLE_DEF
1888      *  |--MODIFIERS -&gt; MODIFIERS
1889      *  |   `--LITERAL_PUBLIC -&gt; public
1890      *  |--TYPE -&gt; TYPE
1891      *  |   `--LITERAL_DOUBLE -&gt; double
1892      *  |--IDENT -&gt; x
1893      *  `--SEMI -&gt; ;
1894      * </pre>
1895      *
1896      * @see #TYPE
1897      **/
1898     public static final int LITERAL_DOUBLE =
1899         JavaLanguageLexer.LITERAL_DOUBLE;
1900 
1901     /**
1902      * An identifier.  These can be names of types, subpackages,
1903      * fields, methods, parameters, and local variables.
1904      *
1905      * <p>For example:</p>
1906      * <pre>
1907      * int a = 10;
1908      * </pre>
1909      *
1910      * <p>parses as:</p>
1911      * <pre>
1912      * VARIABLE_DEF -&gt; VARIABLE_DEF
1913      *  |--MODIFIERS -&gt; MODIFIERS
1914      *  |--TYPE -&gt; TYPE
1915      *  |   `--LITERAL_INT -&gt; int
1916      *  |--IDENT -&gt; a
1917      *  |   `--ASSIGN -&gt; =
1918      *  |       `--EXPR -&gt; EXPR
1919      *  |           `--NUM_INT -&gt; 10
1920      *  `--SEMI -&gt; ;
1921      * </pre>
1922      *
1923      **/
1924     public static final int IDENT = JavaLanguageLexer.IDENT;
1925     /**
1926      * The {@code .} (dot) operator.
1927      *
1928      * <p>For example:</p>
1929      * <pre>
1930      * return person.name;
1931      * </pre>
1932      *
1933      * <p>parses as:</p>
1934      * <pre>
1935      * --LITERAL_RETURN -&gt; return
1936      *    |--EXPR -&gt; EXPR
1937      *    |   `--DOT -&gt; .
1938      *    |       |--IDENT -&gt; person
1939      *    |       `--IDENT -&gt; name
1940      *    `--SEMI -&gt; ;
1941      * </pre>
1942      *
1943      * @see FullIdent
1944      **/
1945     public static final int DOT = JavaLanguageLexer.DOT;
1946     /**
1947      * The {@code *} (multiplication or wildcard) operator.
1948      *
1949      * <p>For example:</p>
1950      * <pre>
1951      * f = m * a;
1952      * </pre>
1953      *
1954      * <p>parses as:</p>
1955      * <pre>
1956      * |--EXPR -&gt; EXPR
1957      * |   `--ASSIGN -&gt; =
1958      * |       |--IDENT -&gt; f
1959      * |       `--STAR -&gt; *
1960      * |           |--IDENT -&gt; m
1961      * |           `--IDENT -&gt; a
1962      * |--SEMI -&gt; ;
1963      * </pre>
1964      *
1965      * @see <a
1966      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.5.2">Java
1967      *     Language Specification, &sect;7.5.2</a>
1968      * @see <a
1969      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.1">Java
1970      *     Language Specification, &sect;15.17.1</a>
1971      * @see #EXPR
1972      * @see #IMPORT
1973      **/
1974     public static final int STAR = JavaLanguageLexer.STAR;
1975     /**
1976      * The {@code private} keyword.
1977      *
1978      * <p>For example:</p>
1979      * <pre>
1980      * private int x;
1981      * </pre>
1982      *
1983      * <p>parses as:</p>
1984      * <pre>
1985      * VARIABLE_DEF -&gt; VARIABLE_DEF
1986      *  |--MODIFIERS -&gt; MODIFIERS
1987      *  |   `--LITERAL_PRIVATE -&gt; private
1988      *  |--TYPE -&gt; TYPE
1989      *  |   `--LITERAL_INT -&gt; int
1990      *  |--IDENT -&gt; x
1991      *  `--SEMI -&gt; ;
1992      * </pre>
1993      *
1994      * @see #MODIFIERS
1995      **/
1996     public static final int LITERAL_PRIVATE =
1997         JavaLanguageLexer.LITERAL_PRIVATE;
1998 
1999     /**
2000      * The {@code public} keyword.
2001      *
2002      * <p>For example:</p>
2003      * <pre>
2004      * public int x;
2005      * </pre>
2006      *
2007      * <p>parses as:</p>
2008      * <pre>
2009      * VARIABLE_DEF -&gt; VARIABLE_DEF
2010      *  |--MODIFIERS -&gt; MODIFIERS
2011      *  |   `--LITERAL_PUBLIC -&gt; public
2012      *  |--TYPE -&gt; TYPE
2013      *  |   `--LITERAL_INT -&gt; int
2014      *  |--IDENT -&gt; x
2015      *  `--SEMI -&gt; ;
2016      * </pre>
2017      *
2018      * @see #MODIFIERS
2019      **/
2020     public static final int LITERAL_PUBLIC =
2021         JavaLanguageLexer.LITERAL_PUBLIC;
2022 
2023     /**
2024      * The {@code protected} keyword.
2025      *
2026      * <p>For example:</p>
2027      * <pre>
2028      * protected int x;
2029      * </pre>
2030      *
2031      * <p>parses as:</p>
2032      * <pre>
2033      * VARIABLE_DEF -&gt; VARIABLE_DEF
2034      *  |--MODIFIERS -&gt; MODIFIERS
2035      *  |   `--LITERAL_PROTECTED -&gt; protected
2036      *  |--TYPE -&gt; TYPE
2037      *  |   `--LITERAL_INT -&gt; int
2038      *  |--IDENT -&gt; x
2039      *  `--SEMI -&gt; ;
2040      * </pre>
2041      *
2042      * @see #MODIFIERS
2043      **/
2044     public static final int LITERAL_PROTECTED =
2045         JavaLanguageLexer.LITERAL_PROTECTED;
2046 
2047     /**
2048      * The {@code static} keyword.
2049      *
2050      * <p>For example:</p>
2051      * <pre>
2052      * public static int x;
2053      * </pre>
2054      *
2055      * <p>parses as:</p>
2056      * <pre>
2057      * VARIABLE_DEF -&gt; VARIABLE_DEF
2058      *  |--MODIFIERS -&gt; MODIFIERS
2059      *  |   |--LITERAL_PUBLIC -&gt; public
2060      *  |   `--LITERAL_STATIC -&gt; static
2061      *  |--TYPE -&gt; TYPE
2062      *  |   `--LITERAL_INT -&gt; int
2063      *  |--IDENT -&gt; x
2064      *  `--SEMI -&gt; ;
2065      * </pre>
2066      *
2067      * @see #MODIFIERS
2068      **/
2069     public static final int LITERAL_STATIC =
2070         JavaLanguageLexer.LITERAL_STATIC;
2071 
2072     /**
2073      * The {@code transient} keyword.
2074      *
2075      * <p>For example:</p>
2076      * <pre>
2077      * transient int a;
2078      * </pre>
2079      *
2080      * <p>parses as:</p>
2081      * <pre>
2082      * VARIABLE_DEF -&gt; VARIABLE_DEF
2083      *  |--MODIFIERS -&gt; MODIFIERS
2084      *  |   `--LITERAL_TRANSIENT -&gt; transient
2085      *  |--TYPE -&gt; TYPE
2086      *  |   `--LITERAL_INT -&gt; int
2087      *  |--IDENT -&gt; a
2088      *  `--SEMI -&gt; ;
2089      * </pre>
2090      *
2091      * @see #MODIFIERS
2092      **/
2093     public static final int LITERAL_TRANSIENT =
2094         JavaLanguageLexer.LITERAL_TRANSIENT;
2095 
2096     /**
2097      * The {@code native} keyword.
2098      *
2099      * <p>For example:</p>
2100      * <pre>
2101      * native void foo(){}
2102      * </pre>
2103      *
2104      * <p>parses as:</p>
2105      * <pre>
2106      * METHOD_DEF -&gt; METHOD_DEF
2107      *  |--MODIFIERS -&gt; MODIFIERS
2108      *  |   `--LITERAL_NATIVE -&gt; native
2109      *  |--TYPE -&gt; TYPE
2110      *  |   `--LITERAL_VOID -&gt; void
2111      *  |--IDENT -&gt; foo
2112      *  |--LPAREN -&gt; (
2113      *  |--PARAMETERS -&gt; PARAMETERS
2114      *  |--RPAREN -&gt; )
2115      *  `--SLIST -&gt; {
2116      *      `--RCURLY -&gt; }
2117      * </pre>
2118      *
2119      * @see #MODIFIERS
2120      **/
2121     public static final int LITERAL_NATIVE =
2122         JavaLanguageLexer.LITERAL_NATIVE;
2123 
2124     /**
2125      * The {@code synchronized} keyword.  This may be used as a
2126      * modifier of a method or in the definition of a synchronized
2127      * block.
2128      *
2129      * <p>For example:</p>
2130      *
2131      * <pre>
2132      * synchronized(this)
2133      * {
2134      *   x++;
2135      * }
2136      * </pre>
2137      *
2138      * <p>parses as:</p>
2139      *
2140      * <pre>
2141      * |--LITERAL_SYNCHRONIZED -&gt; synchronized
2142      * |   |--LPAREN -&gt; (
2143      * |   |--EXPR -&gt; EXPR
2144      * |   |   `--LITERAL_THIS -&gt; this
2145      * |   |--RPAREN -&gt; )
2146      * |   `--SLIST -&gt; {
2147      * |       |--EXPR -&gt; EXPR
2148      * |       |   `--POST_INC -&gt; ++
2149      * |       |       `--IDENT -&gt; x
2150      * |       |--SEMI -&gt; ;
2151      * |       `--RCURLY -&gt; }
2152      * `--RCURLY -&gt; }
2153      * </pre>
2154      *
2155      * @see #MODIFIERS
2156      * @see #LPAREN
2157      * @see #EXPR
2158      * @see #RPAREN
2159      * @see #SLIST
2160      * @see #RCURLY
2161      **/
2162     public static final int LITERAL_SYNCHRONIZED =
2163         JavaLanguageLexer.LITERAL_SYNCHRONIZED;
2164 
2165     /**
2166      * The {@code volatile} keyword. This may be used as a
2167      * modifier of a field.
2168      *
2169      * <p>For example:</p>
2170      * <pre>
2171      * private volatile int x;
2172      * </pre>
2173      *
2174      * <p>parses as:</p>
2175      * <pre>
2176      * VARIABLE_DEF -&gt; VARIABLE_DEF
2177      * |--MODIFIERS -&gt; MODIFIERS
2178      * |   |--LITERAL_PRIVATE -&gt; private
2179      * |   `--LITERAL_VOLATILE -&gt; volatile
2180      * |--TYPE -&gt; TYPE
2181      * |   `--LITERAL_INT -&gt; int
2182      * |--IDENT -&gt; x
2183      * `--SEMI -&gt; ;
2184      * </pre>
2185      *
2186      * @see #MODIFIERS
2187      **/
2188     public static final int LITERAL_VOLATILE =
2189         JavaLanguageLexer.LITERAL_VOLATILE;
2190 
2191     /**
2192      * The {@code class} keyword.  This element appears both
2193      * as part of a class declaration, and inline to reference a
2194      * class object.
2195      *
2196      * <p>For example:</p>
2197      * <pre>
2198      * class Test {
2199      * }
2200      * </pre>
2201      *
2202      * <p>parses as:</p>
2203      * <pre>
2204      * CLASS_DEF -&gt; CLASS_DEF
2205      * |--MODIFIERS -&gt; MODIFIERS
2206      * |--LITERAL_CLASS -&gt; class
2207      * |--IDENT -&gt; Test
2208      * `--OBJBLOCK -&gt; OBJBLOCK
2209      *     |--LCURLY -&gt; {
2210      *     `--RCURLY -&gt; }
2211      * </pre>
2212      *
2213      * <p>For example:</p>
2214      * <pre> int.class
2215      * </pre>
2216      *
2217      * <p>parses as:</p>
2218      * <pre>
2219      * EXPR -&gt; EXPR
2220      *  `--DOT -&gt; .
2221      *      |--LITERAL_INT -&gt; int
2222      *      `--LITERAL_CLASS -&gt; class
2223      * </pre>
2224      *
2225      * @see #DOT
2226      * @see #IDENT
2227      * @see #CLASS_DEF
2228      * @see FullIdent
2229      **/
2230     public static final int LITERAL_CLASS =
2231         JavaLanguageLexer.LITERAL_CLASS;
2232 
2233     /**
2234      * The {@code interface} keyword. This token appears in
2235      * interface definition.
2236      *
2237      * <p>For example:</p>
2238      *
2239      * <pre>
2240      * public interface MyInterface {
2241      *
2242      * }
2243      * </pre>
2244      *
2245      * <p>parses as:</p>
2246      *
2247      * <pre>
2248      * INTERFACE_DEF -&gt; INTERFACE_DEF
2249      * |--MODIFIERS -&gt; MODIFIERS
2250      * |   `--LITERAL_PUBLIC -&gt; public
2251      * |--LITERAL_INTERFACE -&gt; interface
2252      * |--IDENT -&gt; MyInterface
2253      * `--OBJBLOCK -&gt; OBJBLOCK
2254      *     |--LCURLY -&gt; {
2255      *     `--RCURLY -&gt; }
2256      * </pre>
2257      *
2258      * @see #INTERFACE_DEF
2259      **/
2260     public static final int LITERAL_INTERFACE =
2261         JavaLanguageLexer.LITERAL_INTERFACE;
2262 
2263     /**
2264      * A left curly brace (<code>{</code>).
2265      *
2266      * <p>For example:</p>
2267      *
2268      * <pre>
2269      * class App {
2270      *   int num;
2271      * }
2272      * </pre>
2273      *
2274      * <p>parses as:</p>
2275      * <pre>
2276      * CLASS_DEF -&gt; CLASS_DEF
2277      * |--MODIFIERS -&gt; MODIFIERS
2278      * |--LITERAL_CLASS -&gt; class
2279      * |--IDENT -&gt; App
2280      * `--OBJBLOCK -&gt; OBJBLOCK
2281      *     |--LCURLY -&gt; {
2282      *     |--VARIABLE_DEF -&gt; VARIABLE_DEF
2283      *     |   |--MODIFIERS -&gt; MODIFIERS
2284      *     |   |--TYPE -&gt; TYPE
2285      *     |   |   `--LITERAL_INT -&gt; int
2286      *     |   |--IDENT -&gt; num
2287      *     |   `--SEMI -&gt; ;
2288      *     `--RCURLY -&gt; }
2289      * </pre>
2290      *
2291      * @see #OBJBLOCK
2292      * @see #ARRAY_INIT
2293      * @see #SLIST
2294      **/
2295     public static final int LCURLY = JavaLanguageLexer.LCURLY;
2296     /**
2297      * A right curly brace (<code>}</code>).
2298      *
2299      * <p>For example:</p>
2300      * <pre>
2301      * {@code
2302      * void foo(){}
2303      * }
2304      * </pre>
2305      *
2306      * <p>parses as:</p>
2307      * <pre>
2308      * METHOD_DEF -&gt; METHOD_DEF
2309      *  |--MODIFIERS -&gt; MODIFIERS
2310      *  |--TYPE -&gt; TYPE
2311      *  |   `--LITERAL_VOID -&gt; void
2312      *  |--IDENT -&gt; foo
2313      *  |--LPAREN -&gt; (
2314      *  |--PARAMETERS -&gt; PARAMETERS
2315      *  |--RPAREN -&gt; )
2316      *  `--SLIST -&gt; {
2317      *      `--RCURLY -&gt; }
2318      * </pre>
2319      *
2320      * @see #OBJBLOCK
2321      * @see #ARRAY_INIT
2322      * @see #SLIST
2323      **/
2324     public static final int RCURLY = JavaLanguageLexer.RCURLY;
2325 
2326     /**
2327      * The {@code ,} (comma) operator.
2328      *
2329      * <p>For example:</p>
2330      * <pre>
2331      * int a, b;
2332      * </pre>
2333      *
2334      * <p>parses as:</p>
2335      * <pre>
2336      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
2337      * |   |--MODIFIERS -&gt; MODIFIERS
2338      * |   |--TYPE -&gt; TYPE
2339      * |   |   `--LITERAL_INT -&gt; int
2340      * |   `--IDENT -&gt; a
2341      * |--COMMA -&gt; ,
2342      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
2343      * |   |--MODIFIERS -&gt; MODIFIERS
2344      * |   |--TYPE -&gt; TYPE
2345      * |   |   `--LITERAL_INT -&gt; int
2346      * |   `--IDENT -&gt; b
2347      * |--SEMI -&gt; ;
2348      * </pre>
2349      *
2350      * @see #ARRAY_INIT
2351      * @see #FOR_INIT
2352      * @see #FOR_ITERATOR
2353      * @see #LITERAL_THROWS
2354      * @see #IMPLEMENTS_CLAUSE
2355      **/
2356     public static final int COMMA = JavaLanguageLexer.COMMA;
2357 
2358     /**
2359      * A left parenthesis ({@code (}).
2360      *
2361      * <p>For example:</p>
2362      * <pre>
2363      * Integer val = new Integer();
2364      * while (false) {
2365      *     val += (-3);
2366      * }
2367      * </pre>
2368      *
2369      * <p>parses as:</p>
2370      * <pre>
2371      *  |--VARIABLE_DEF -&gt; VARIABLE_DEF
2372      *  |   |--MODIFIERS -&gt; MODIFIERS
2373      *  |   |--TYPE -&gt; TYPE
2374      *  |   |   `--IDENT -&gt; Integer
2375      *  |   |--IDENT -&gt; val
2376      *  |   `--ASSIGN -&gt; =
2377      *  |       `--EXPR -&gt; EXPR
2378      *  |           `--LITERAL_NEW -&gt; new
2379      *  |               |--IDENT -&gt; Integer
2380      *  |               |--LPAREN -&gt; (
2381      *  |               |--ELIST -&gt; ELIST
2382      *  |               `--RPAREN -&gt; )
2383      *  |--SEMI -&gt; ;
2384      *  |--LITERAL_WHILE -&gt; while
2385      *  |   |--LPAREN -&gt; (
2386      *  |   |--EXPR -&gt; EXPR
2387      *  |   |   `--LITERAL_FALSE -&gt; false
2388      *  |   |--RPAREN -&gt; )
2389      *  |   `--SLIST -&gt; {
2390      *  |       |--EXPR -&gt; EXPR
2391      *  |       |   `--PLUS_ASSIGN -&gt; +=
2392      *  |       |       |--IDENT -&gt; val
2393      *  |       |       |--LPAREN -&gt; (
2394      *  |       |       |--UNARY_MINUS -&gt; -
2395      *  |       |       |   `--NUM_INT -&gt; 3
2396      *  |       |       `--RPAREN -&gt; )
2397      *  |       |--SEMI -&gt; ;
2398      *  |       `--RCURLY -&gt; }
2399      * </pre>
2400      *
2401      * @see #LITERAL_FOR
2402      * @see #LITERAL_NEW
2403      * @see #EXPR
2404      * @see #LITERAL_SWITCH
2405      * @see #LITERAL_CATCH
2406      **/
2407     public static final int LPAREN = JavaLanguageLexer.LPAREN;
2408     /**
2409      * A right parenthesis ({@code )}).
2410      *
2411      * <p>For example:</p>
2412      * <pre>
2413      * void check() {
2414      * }
2415      * </pre>
2416      *
2417      * <p>parses as:</p>
2418      * <pre>
2419      * METHOD_DEF -&gt; METHOD_DEF
2420      *  |--MODIFIERS -&gt; MODIFIERS
2421      *  |--TYPE -&gt; TYPE
2422      *  |   `--LITERAL_VOID -&gt; void
2423      *  |--IDENT -&gt; check
2424      *  |--LPAREN -&gt; (
2425      *  |--PARAMETERS -&gt; PARAMETERS
2426      *  |--RPAREN -&gt; )
2427      *  `--SLIST -&gt; {
2428      *      `--RCURLY -&gt; }
2429      * </pre>
2430      *
2431      * @see #LITERAL_FOR
2432      * @see #LITERAL_NEW
2433      * @see #METHOD_CALL
2434      * @see #TYPECAST
2435      * @see #EXPR
2436      * @see #LITERAL_SWITCH
2437      * @see #LITERAL_CATCH
2438      **/
2439     public static final int RPAREN = JavaLanguageLexer.RPAREN;
2440     /**
2441      * The {@code this} keyword use to refer the current object.
2442      * This can also be used to call the constructor.
2443      *
2444      * <p>For example:</p>
2445      * <pre>
2446      * this.name = name;
2447      * </pre>
2448      *
2449      * <p>parses as:</p>
2450      * <pre>
2451      * EXPR -&gt; EXPR
2452      *  `--ASSIGN -&gt; =
2453      *      |--DOT -&gt; .
2454      *      |   |--LITERAL_THIS -&gt; this
2455      *      |   `--IDENT -&gt; name
2456      *      `--IDENT -&gt; name
2457      * SEMI -&gt; ;
2458      * </pre>
2459      *
2460      * <p>Also consider:</p>
2461      * <pre>
2462      * this(1, "NULL");
2463      * </pre>
2464      *
2465      * <p>parses as:</p>
2466      * <pre>
2467      * CTOR_CALL -&gt; this
2468      *  |--LPAREN -&gt; (
2469      *  |--ELIST -&gt; ELIST
2470      *  |   |--EXPR -&gt; EXPR
2471      *  |   |   `--NUM_INT -&gt; 1
2472      *  |   |--COMMA -&gt; ,
2473      *  |   `--EXPR -&gt; EXPR
2474      *  |       `--STRING_LITERAL -&gt; "NULL"
2475      *  |--RPAREN -&gt; )
2476      *  `--SEMI -&gt; ;
2477      * </pre>
2478      *
2479      * @see #EXPR
2480      * @see #CTOR_CALL
2481      **/
2482     public static final int LITERAL_THIS =
2483         JavaLanguageLexer.LITERAL_THIS;
2484 
2485     /**
2486      * The {@code super} keyword.
2487      *
2488      * <p>For example:</p>
2489      * <pre>
2490      * super.toString();
2491      * </pre>
2492      *
2493      * <p>parses as:</p>
2494      * <pre>
2495      * |--EXPR -&gt; EXPR
2496      * |   `--METHOD_CALL -&gt; (
2497      * |       |--DOT -&gt; .
2498      * |       |  |--LITERAL_SUPER -&gt; super
2499      * |       |  `--IDENT -&gt; toString
2500      * |       |--ELIST -&gt; ELIST
2501      * |       `--RPAREN -&gt; )
2502      * |--SEMI -&gt; ;
2503      * </pre>
2504      *
2505      * @see #EXPR
2506      * @see #SUPER_CTOR_CALL
2507      **/
2508     public static final int LITERAL_SUPER =
2509         JavaLanguageLexer.LITERAL_SUPER;
2510 
2511     /**
2512      * The {@code =} (assignment) operator.
2513      *
2514      * <p>For example:</p>
2515      * <pre>
2516      * a = b;
2517      * </pre>
2518      *
2519      * <p>parses as:</p>
2520      * <pre>
2521      * |--EXPR -&gt; EXPR
2522      * |   `--ASSIGN -&gt; =
2523      * |       |--IDENT -&gt; a
2524      * |       `--IDENT -&gt; b
2525      * |--SEMI -&gt; ;
2526      * </pre>
2527      *
2528      * @see <a
2529      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.1">Java
2530      *     Language Specification, &sect;15.26.1</a>
2531      * @see #EXPR
2532      **/
2533     public static final int ASSIGN = JavaLanguageLexer.ASSIGN;
2534     /**
2535      * The {@code throws} keyword.  The children are a number of
2536      * one or more identifiers separated by commas.
2537      *
2538      * <p>For example:</p>
2539      * <pre>
2540      * void test() throws FileNotFoundException, EOFException {
2541      * }
2542      * </pre>
2543      *
2544      * <p>parses as:</p>
2545      * <pre>
2546      * METHOD_DEF -&gt; METHOD_DEF
2547      *  |--MODIFIERS -&gt; MODIFIERS
2548      *  |--TYPE -&gt; TYPE
2549      *  |   `--LITERAL_VOID -&gt; void
2550      *  |--IDENT -&gt; test
2551      *  |--LPAREN -&gt; (
2552      *  |--PARAMETERS -&gt; PARAMETERS
2553      *  |--RPAREN -&gt; )
2554      *  |--LITERAL_THROWS -&gt; throws
2555      *  |   |--IDENT -&gt; FileNotFoundException
2556      *  |   |--COMMA -&gt; ,
2557      *  |   `--IDENT -&gt; EOFException
2558      *  `--SLIST -&gt; {
2559      *      `--RCURLY -&gt; }
2560      * </pre>
2561      *
2562      * @see <a
2563      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.4.4">Java
2564      *     Language Specification, &sect;8.4.4</a>
2565      * @see #IDENT
2566      * @see #DOT
2567      * @see #COMMA
2568      * @see #METHOD_DEF
2569      * @see #CTOR_DEF
2570      * @see FullIdent
2571      **/
2572     public static final int LITERAL_THROWS =
2573         JavaLanguageLexer.LITERAL_THROWS;
2574 
2575     /**
2576      * The {@code :} (colon) operator.  This will appear as part
2577      * of the conditional operator ({@code ? :}).
2578      *
2579      * <p>For example:</p>
2580      * <pre>
2581      * num = isValid ? 1 : 0;
2582      * </pre>
2583      *
2584      * <p>parses as:</p>
2585      * <pre>
2586      * |--EXPR -&gt; EXPR
2587      * |   `--ASSIGN -&gt; =
2588      * |       |--IDENT -&gt; num
2589      * |       `--QUESTION -&gt; ?
2590      * |           |--IDENT -&gt; isValid
2591      * |           |--NUM_INT -&gt; 1
2592      * |           |--COLON -&gt; :
2593      * |           `--NUM_INT -&gt; 0
2594      * |--SEMI -&gt; ;
2595      * </pre>
2596      *
2597      * @see #QUESTION
2598      * @see #LABELED_STAT
2599      * @see #CASE_GROUP
2600      **/
2601     public static final int COLON = JavaLanguageLexer.COLON;
2602 
2603     /**
2604      * The {@code ::} (double colon) separator.
2605      * It is part of Java 8 syntax that is used for method reference.
2606      * The token does not appear in tree, {@link #METHOD_REF} should be used instead.
2607      *
2608      * <p>For example:</p>
2609      * <pre>
2610      * Function&lt;Double, Double&gt; square = MyClass::square;
2611      * </pre>
2612      *
2613      * <p>parses as:</p>
2614      * <pre>
2615      * VARIABLE_DEF -&gt; VARIABLE_DEF
2616      *  |--MODIFIERS -&gt; MODIFIERS
2617      *  |--TYPE -&gt; TYPE
2618      *  |   |--IDENT -&gt; Function
2619      *  |   |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
2620      *  |   |       |--GENERIC_START -&gt; &lt;
2621      *  |   |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
2622      *  |   |       |   `--IDENT -&gt; Double
2623      *  |   |       |--COMMA -&gt; ,
2624      *  |   |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
2625      *  |   |       |   `--IDENT -&gt; Double
2626      *  |   |       `--GENERIC_END -&gt; &gt;
2627      *  |   |--IDENT -&gt; square
2628      *  |   |--ASSIGN -&gt; =
2629      *  |   |   `--EXPR -&gt; EXPR
2630      *  |   |       `--METHOD_REF -&gt; ::
2631      *  |   |           |--IDENT -&gt; MyClass
2632      *  |   |           `--IDENT -&gt; square
2633      *  |   `--SEMI -&gt; ;
2634      * </pre>
2635      *
2636      * @see #METHOD_REF
2637      */
2638     public static final int DOUBLE_COLON = JavaLanguageLexer.DOUBLE_COLON;
2639     /**
2640      * The {@code if} keyword.
2641      *
2642      * <p>For example:</p>
2643      * <pre>
2644      * if (optimistic)
2645      * {
2646      *   message = "half full";
2647      * }
2648      * else
2649      * {
2650      *   message = "half empty";
2651      * }
2652      * </pre>
2653      *
2654      * <p>parses as:</p>
2655      * <pre>
2656      * LITERAL_IF -&gt; if
2657      *  |--LPAREN -&gt; (
2658      *  |--EXPR -&gt; EXPR
2659      *  |   `--IDENT -&gt; optimistic
2660      *  |--RPAREN -&gt; )
2661      *  |--SLIST -&gt; {
2662      *  |   |--EXPR -&gt; EXPR
2663      *  |   |   `--ASSIGN -&gt; =
2664      *  |   |       |--IDENT -&gt; message
2665      *  |   |       `--STRING_LITERAL -&gt; "half full"
2666      *  |   |--SEMI -&gt; ;
2667      *  |   `--RCURLY -&gt; }
2668      *  `--LITERAL_ELSE -&gt; else
2669      *      `--SLIST -&gt; {
2670      *          |--EXPR -&gt; EXPR
2671      *          |   `--ASSIGN -&gt; =
2672      *          |       |--IDENT -&gt; message
2673      *          |       `--STRING_LITERAL -&gt; "half empty"
2674      *          |--SEMI -&gt; ;
2675      *          `--RCURLY -&gt; }
2676      * </pre>
2677      *
2678      * @see #LPAREN
2679      * @see #EXPR
2680      * @see #RPAREN
2681      * @see #SLIST
2682      * @see #EMPTY_STAT
2683      * @see #LITERAL_ELSE
2684      **/
2685     public static final int LITERAL_IF = JavaLanguageLexer.LITERAL_IF;
2686     /**
2687      * The {@code for} keyword.  The children are {@code (},
2688      * an initializer, a condition, an iterator, a {@code )} and
2689      * either a statement list, a single expression, or an empty
2690      * statement.
2691      *
2692      * <p>For example:</p>
2693      * <pre>
2694      * for (int i = 0; i &lt; arr.length; i++) {}
2695      * </pre>
2696      *
2697      * <p>parses as:</p>
2698      * <pre>
2699      * LITERAL_FOR -&gt; for
2700      *  |--LPAREN -&gt; (
2701      *  |--FOR_INIT -&gt; FOR_INIT
2702      *  |   `--VARIABLE_DEF -&gt; VARIABLE_DEF
2703      *  |       |--MODIFIERS -&gt; MODIFIERS
2704      *  |       |--TYPE -&gt; TYPE
2705      *  |       |   `--LITERAL_INT -&gt; int
2706      *  |       |--IDENT -&gt; i
2707      *  |       `--ASSIGN -&gt; =
2708      *  |           `--EXPR -&gt; EXPR
2709      *  |               `--NUM_INT -&gt; 0
2710      *  |--SEMI -&gt; ;
2711      *  |--FOR_CONDITION -&gt; FOR_CONDITION
2712      *  |   `--EXPR -&gt; EXPR
2713      *  |       `--LT -&gt; &lt;
2714      *  |           |--IDENT -&gt; i
2715      *  |           `--DOT -&gt; .
2716      *  |               |--IDENT -&gt; arr
2717      *  |               `--IDENT -&gt; length
2718      *  |--SEMI -&gt; ;
2719      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
2720      *  |   `--ELIST -&gt; ELIST
2721      *  |       `--EXPR -&gt; EXPR
2722      *  |           `--POST_INC -&gt; ++
2723      *  |               `--IDENT -&gt; i
2724      *  |--RPAREN -&gt; )
2725      *  `--SLIST -&gt; {
2726      *      `--RCURLY -&gt; }
2727      * </pre>
2728      *
2729      * @see #LPAREN
2730      * @see #FOR_INIT
2731      * @see #SEMI
2732      * @see #FOR_CONDITION
2733      * @see #FOR_ITERATOR
2734      * @see #RPAREN
2735      * @see #SLIST
2736      * @see #EMPTY_STAT
2737      * @see #EXPR
2738      **/
2739     public static final int LITERAL_FOR = JavaLanguageLexer.LITERAL_FOR;
2740     /**
2741      * The {@code while} keyword.
2742      *
2743      * <p>For example:</p>
2744      * <pre>
2745      * while (i &lt; 5) {
2746      *     i++;
2747      * }
2748      * </pre>
2749      *
2750      * <p>parses as:</p>
2751      * <pre>
2752      * LITERAL_WHILE -&gt; while
2753      *  |--LPAREN -&gt; (
2754      *  |--EXPR -&gt; EXPR
2755      *  |   `--LT -&gt; &lt;
2756      *  |       |--IDENT -&gt; i
2757      *  |       `--NUM_INT -&gt; 5
2758      *  |--RPAREN -&gt; )
2759      *  `--SLIST -&gt; {
2760      *      |--EXPR -&gt; EXPR
2761      *      |   `--POST_INC -&gt; ++
2762      *      |       `--IDENT -&gt; i
2763      *      |--SEMI -&gt; ;
2764      *      `--RCURLY -&gt; }
2765      * </pre>
2766      **/
2767     public static final int LITERAL_WHILE =
2768         JavaLanguageLexer.LITERAL_WHILE;
2769 
2770     /**
2771      * The {@code do} keyword.  Note that the while token does not
2772      * appear as part of the do-while construct.
2773      *
2774      * <p>For example:</p>
2775      * <pre>
2776      * do {
2777      *   x = rand.nextInt();
2778      * } while (x &lt; 5);
2779      * </pre>
2780      *
2781      * <p>parses as:</p>
2782      * <pre>
2783      * LITERAL_DO -&gt; do
2784      *  |--SLIST -&gt; {
2785      *  |   |--EXPR -&gt; EXPR
2786      *  |   |   `--ASSIGN -&gt; =
2787      *  |   |       |--IDENT -&gt; x
2788      *  |   |       `--METHOD_CALL -&gt; (
2789      *  |   |           |--DOT -&gt; .
2790      *  |   |           |   |--IDENT -&gt; rand
2791      *  |   |           |   `--IDENT -&gt; nextInt
2792      *  |   |           |--ELIST -&gt; ELIST
2793      *  |   |           `--RPAREN -&gt; )
2794      *  |   |--SEMI -&gt; ;
2795      *  |   `--RCURLY -&gt; }
2796      *  |--DO_WHILE -&gt; while
2797      *  |--LPAREN -&gt; (
2798      *  |--EXPR -&gt; EXPR
2799      *  |   `--LT -&gt; &lt;
2800      *  |       |--IDENT -&gt; x
2801      *  |       `--NUM_INT -&gt; 5
2802      *  |--RPAREN -&gt; )
2803      *  `--SEMI -&gt; ;
2804      * </pre>
2805      *
2806      * @see #SLIST
2807      * @see #EXPR
2808      * @see #EMPTY_STAT
2809      * @see #LPAREN
2810      * @see #RPAREN
2811      * @see #SEMI
2812      **/
2813     public static final int LITERAL_DO = JavaLanguageLexer.LITERAL_DO;
2814     /**
2815      * Literal {@code while} in do-while loop.
2816      *
2817      * <p>For example:</p>
2818      * <pre>
2819      * do {
2820      *
2821      * } while (a &gt; 0);
2822      * </pre>
2823      *
2824      * <p>parses as:</p>
2825      * <pre>
2826      * --LITERAL_DO -&gt; do
2827      *    |--SLIST -&gt; {
2828      *    |   `--RCURLY -&gt; }
2829      *    |--DO_WHILE -&gt; while
2830      *    |--LPAREN -&gt; (
2831      *    |--EXPR -&gt; EXPR
2832      *    |   `--GT -&gt; &gt;
2833      *    |       |--IDENT -&gt; a
2834      *    |       `--NUM_INT -&gt; 0
2835      *    |--RPAREN -&gt; )
2836      *    `--SEMI -&gt; ;
2837      * </pre>
2838      *
2839      * @see #LITERAL_DO
2840      */
2841     public static final int DO_WHILE = JavaLanguageLexer.DO_WHILE;
2842     /**
2843      * The {@code break} keyword.  The first child is an optional
2844      * identifier and the last child is a semicolon.
2845      *
2846      * <p>For example:</p>
2847      * <pre>
2848      * for (;;) {
2849      *     break;
2850      * }
2851      * </pre>
2852      *
2853      * <p>parses as:</p>
2854      * <pre>
2855      * LITERAL_FOR -&gt; for
2856      *  |--LPAREN -&gt; (
2857      *  |--FOR_INIT -&gt; FOR_INIT
2858      *  |--SEMI -&gt; ;
2859      *  |--FOR_CONDITION -&gt; FOR_CONDITION
2860      *  |--SEMI -&gt; ;
2861      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
2862      *  |--RPAREN -&gt; )
2863      *  `--SLIST -&gt; {
2864      *      |--LITERAL_BREAK -&gt; break
2865      *      |   `--SEMI -&gt; ;
2866      *      `--RCURLY -&gt; }
2867      * </pre>
2868      *
2869      * @see #IDENT
2870      * @see #SEMI
2871      * @see #SLIST
2872      **/
2873     public static final int LITERAL_BREAK =
2874         JavaLanguageLexer.LITERAL_BREAK;
2875 
2876     /**
2877      * The {@code continue} keyword.  The first child is an
2878      * optional identifier and the last child is a semicolon.
2879      *
2880      * <p>For example:</p>
2881      * <pre>
2882      * for (;;) {
2883      *     continue;
2884      * }
2885      * </pre>
2886      *
2887      * <p>parses as:</p>
2888      * <pre>
2889      * LITERAL_FOR -&gt; for
2890      *  |--LPAREN -&gt; (
2891      *  |--FOR_INIT -&gt; FOR_INIT
2892      *  |--SEMI -&gt; ;
2893      *  |--FOR_CONDITION -&gt; FOR_CONDITION
2894      *  |--SEMI -&gt; ;
2895      *  |--FOR_ITERATOR -&gt; FOR_ITERATOR
2896      *  |--RPAREN -&gt; )
2897      *  `--SLIST -&gt; {
2898      *      |--LITERAL_CONTINUE -&gt; continue
2899      *      |   `--SEMI -&gt; ;
2900      *      `--RCURLY -&gt; }
2901      * </pre>
2902      *
2903      * @see #IDENT
2904      * @see #SEMI
2905      * @see #SLIST
2906      **/
2907     public static final int LITERAL_CONTINUE =
2908         JavaLanguageLexer.LITERAL_CONTINUE;
2909 
2910     /**
2911      * The {@code return} keyword.  The first child is an
2912      * optional expression for the return value.  The last child is a
2913      * semicolon.
2914      *
2915      * <p>For example:</p>
2916      * <pre>
2917      * public int foo(int i) {
2918      *     return i+1;
2919      * }
2920      * </pre>
2921      *
2922      * <p>parses as:</p>
2923      * <pre>
2924      * METHOD_DEF -&gt; METHOD_DEF
2925      *  |--MODIFIERS -&gt; MODIFIERS
2926      *  |   `--LITERAL_PUBLIC -&gt; public
2927      *  |--TYPE -&gt; TYPE
2928      *  |   `--LITERAL_INT -&gt; int
2929      *  |--IDENT -&gt; foo
2930      *  |--LPAREN -&gt; (
2931      *  |--PARAMETERS -&gt; PARAMETERS
2932      *  |   `--PARAMETER_DEF -&gt; PARAMETER_DEF
2933      *  |       |--MODIFIERS -&gt; MODIFIERS
2934      *  |       |--TYPE -&gt; TYPE
2935      *  |       |   `--LITERAL_INT -&gt; int
2936      *  |       `--IDENT -&gt; i
2937      *  |--RPAREN -&gt; )
2938      *  `--SLIST -&gt; {
2939      *      |--LITERAL_RETURN -&gt; return
2940      *      |   |--EXPR -&gt; EXPR
2941      *      |   |   `--PLUS -&gt; +
2942      *      |   |       |--IDENT -&gt; i
2943      *      |   |       `--NUM_INT -&gt; 1
2944      *      |   `--SEMI -&gt; ;
2945      *      `--RCURLY -&gt; }
2946      * </pre>
2947      *
2948      * @see #EXPR
2949      * @see #SEMI
2950      * @see #SLIST
2951      **/
2952     public static final int LITERAL_RETURN =
2953         JavaLanguageLexer.LITERAL_RETURN;
2954 
2955     /**
2956      * The {@code switch} keyword.
2957      *
2958      * <p>For example:</p>
2959      * <pre>
2960      * switch (type) {
2961      *      case 0:
2962      *          background = Color.red;
2963      *          break;
2964      *      case 1:
2965      *          background = Color.blue;
2966      *          break;
2967      *      default:
2968      *          background = Color.green;
2969      * }
2970      * </pre>
2971      *
2972      * <p>parses as:</p>
2973      * <pre>
2974      * LITERAL_SWITCH -&gt; switch
2975      *  |--LPAREN -&gt; (
2976      *  |--EXPR -&gt; EXPR
2977      *  |   `--IDENT -&gt; type
2978      *  |--RPAREN -&gt; )
2979      *  |--LCURLY -&gt; {
2980      *  |--CASE_GROUP -&gt; CASE_GROUP
2981      *  |   |--LITERAL_CASE -&gt; case
2982      *  |   |   |--EXPR -&gt; EXPR
2983      *  |   |   |   `--NUM_INT -&gt; 0
2984      *  |   |   `--COLON -&gt; :
2985      *  |   `--SLIST -&gt; SLIST
2986      *  |       |--EXPR -&gt; EXPR
2987      *  |       |   `--ASSIGN -&gt; =
2988      *  |       |       |--IDENT -&gt; background
2989      *  |       |       `--DOT -&gt; .
2990      *  |       |           |--IDENT -&gt; Color
2991      *  |       |           `--IDENT -&gt; red
2992      *  |       |--SEMI -&gt; ;
2993      *  |       `--LITERAL_BREAK -&gt; break
2994      *  |           `--SEMI -&gt; ;
2995      *  |--CASE_GROUP -&gt; CASE_GROUP
2996      *  |   |--LITERAL_CASE -&gt; case
2997      *  |   |   |--EXPR -&gt; EXPR
2998      *  |   |   |   `--NUM_INT -&gt; 1
2999      *  |   |   `--COLON -&gt; :
3000      *  |   `--SLIST -&gt; SLIST
3001      *  |       |--EXPR -&gt; EXPR
3002      *  |       |   `--ASSIGN -&gt; =
3003      *  |       |       |--IDENT -&gt; background
3004      *  |       |       `--DOT -&gt; .
3005      *  |       |           |--IDENT -&gt; Color
3006      *  |       |           `--IDENT -&gt; blue
3007      *  |       |--SEMI -&gt; ;
3008      *  |       `--LITERAL_BREAK -&gt; break
3009      *  |           `--SEMI -&gt; ;
3010      *  |--CASE_GROUP -&gt; CASE_GROUP
3011      *  |   |--LITERAL_DEFAULT -&gt; default
3012      *  |   |   `--COLON -&gt; :
3013      *  |   `--SLIST -&gt; SLIST
3014      *  |       |--EXPR -&gt; EXPR
3015      *  |       |   `--ASSIGN -&gt; =
3016      *  |       |       |--IDENT -&gt; background
3017      *  |       |       `--DOT -&gt; .
3018      *  |       |           |--IDENT -&gt; Color
3019      *  |       |           `--IDENT -&gt; green
3020      *  |       `--SEMI -&gt; ;
3021      *  `--RCURLY -&gt; }
3022      * </pre>
3023      *
3024      * @see <a
3025      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.10">Java
3026      *     Language Specification, &sect;14.10</a>
3027      * @see #LPAREN
3028      * @see #EXPR
3029      * @see #RPAREN
3030      * @see #LCURLY
3031      * @see #CASE_GROUP
3032      * @see #RCURLY
3033      * @see #SLIST
3034      * @see #SWITCH_RULE
3035      **/
3036     public static final int LITERAL_SWITCH =
3037         JavaLanguageLexer.LITERAL_SWITCH;
3038 
3039     /**
3040      * The {@code throw} keyword.  The first child is an
3041      * expression that evaluates to a {@code Throwable} instance.
3042      *
3043      * <p>For example:</p>
3044      * <pre>
3045      * throw new ArithmeticException(&quot;An exception occurred.&quot;);
3046      * </pre>
3047      *
3048      * <p>parses as:</p>
3049      * <pre>
3050      * LITERAL_THROW -&gt; throw
3051      *  |--EXPR -&gt; EXPR
3052      *  |   `--LITERAL_NEW -&gt; new
3053      *  |       |--IDENT -&gt; ArithmeticException
3054      *  |       |--LPAREN -&gt; (
3055      *  |       |--ELIST -&gt; ELIST
3056      *  |       |   `--EXPR -&gt; EXPR
3057      *  |       |       `--STRING_LITERAL -&gt; &quot;An exception occurred.&quot;
3058      *  |       `--RPAREN -&gt; )
3059      *  `--SEMI -&gt; ;
3060      * </pre>
3061      *
3062      * @see <a
3063      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.17">Java
3064      *     Language Specification, &sect;14.17</a>
3065      * @see #SLIST
3066      * @see #EXPR
3067      **/
3068     public static final int LITERAL_THROW =
3069         JavaLanguageLexer.LITERAL_THROW;
3070 
3071     /**
3072      * The {@code else} keyword.  This appears as a child of an
3073      * {@code if} statement.
3074      *
3075      * <p>For example:</p>
3076      * <pre>
3077      * if (flag) {
3078      *
3079      * } else {
3080      *
3081      * }
3082      * </pre>
3083      *
3084      * <p>parses as:</p>
3085      * <pre>
3086      * LITERAL_IF -&gt; if
3087      *  |--LPAREN -&gt; (
3088      *  |--EXPR -&gt; EXPR
3089      *  |   `--IDENT -&gt; flag
3090      *  |--RPAREN -&gt; )
3091      *  |--SLIST -&gt; {
3092      *  |   `--RCURLY -&gt; }
3093      *  `--LITERAL_ELSE -&gt; else
3094      *      `--SLIST -&gt; {
3095      *          `--RCURLY -&gt; }
3096      * </pre>
3097      *
3098      * @see #SLIST
3099      * @see #EXPR
3100      * @see #EMPTY_STAT
3101      * @see #LITERAL_IF
3102      **/
3103     public static final int LITERAL_ELSE =
3104         JavaLanguageLexer.LITERAL_ELSE;
3105 
3106     /**
3107      * The {@code case} keyword.  The first child is a constant
3108      * expression that evaluates to an integer.
3109      *
3110      * <p>For example:</p>
3111      * <pre>
3112      * switch(num){
3113      *    case 0:
3114      *      num = 1;
3115      * }
3116      * </pre>
3117      *
3118      * <p>parses as:</p>
3119      * <pre>
3120      *
3121      * CASE_GROUP -&gt; CASE_GROUP
3122      *    |--LITERAL_CASE -&gt; cas
3123      *    |   |--EXPR -&gt; EXPR
3124      *    |   |   `--NUM_INT -&gt; 0
3125      *    |   `--COLON -&gt; :
3126      *    `--SLIST -&gt; SLIST
3127      *         |--EXPR -&gt; EXPR
3128      *         |   `--ASSIGN -&gt; =
3129      *         |       |--IDENT -&gt; num
3130      *         |       `--NUM_INT -&gt; 1
3131      *         `--SEMI -&gt; ;
3132      * </pre>
3133      *
3134      * <p>For example:</p>
3135      * <pre>
3136      * switch(num){
3137      *    case 1 -&gt; num = -1
3138      * }
3139      * </pre>
3140      *
3141      * <p>parses as:</p>
3142      * <pre>
3143      * SWITCH_RULE -&gt; SWITCH_RULE
3144      *   |--LITERAL_CASE -&gt; case
3145      *   |   `--EXPR -&gt; EXPR
3146      *   |       `--NUM_INT -&gt; 1
3147      *   |--LAMBDA -&gt; -&gt;
3148      *   |--EXPR -&gt; EXPR
3149      *   |   `--ASSIGN -&gt; =
3150      *   |       |--IDENT -&gt; num
3151      *   |       `--UNARY_MINUS -&gt; -
3152      *   |           `--NUM_INT -&gt; 1
3153      *   `--SEMI -&gt; ;
3154      * </pre>
3155      *
3156      * @see #CASE_GROUP
3157      * @see #EXPR
3158      **/
3159     public static final int LITERAL_CASE =
3160         JavaLanguageLexer.LITERAL_CASE;
3161 
3162     /**
3163      * The {@code default} keyword.  This element has no
3164      * children.
3165      *
3166      * <p>For example:</p>
3167      * <pre>
3168      * switch (type) {
3169      *   case 1:
3170      *     x = 1;
3171      *     break;
3172      *   default:
3173      *     x = 3;
3174      * }
3175      * </pre>
3176      *
3177      * <p>parses as:</p>
3178      * <pre>
3179      * LITERAL_SWITCH -&gt; switch
3180      *  |--LPAREN -&gt; (
3181      *  |--EXPR -&gt; EXPR
3182      *  |   `--IDENT -&gt; type
3183      *  |--RPAREN -&gt; )
3184      *  |--LCURLY -&gt; {
3185      *  |--CASE_GROUP -&gt; CASE_GROUP
3186      *  |   |--LITERAL_CASE -&gt; case
3187      *  |   |   |--EXPR -&gt; EXPR
3188      *  |   |   |   `--NUM_INT -&gt; 1
3189      *  |   |   `--COLON -&gt; :
3190      *  |   `--SLIST -&gt; SLIST
3191      *  |       |--EXPR -&gt; EXPR
3192      *  |       |   `--ASSIGN -&gt; =
3193      *  |       |       |--IDENT -&gt; x
3194      *  |       |       `--NUM_INT -&gt; 1
3195      *  |       |   |       |--SEMI -&gt; ;
3196      *  |       `--LITERAL_BREAK -&gt; break
3197      *  |           `--SEMI -&gt; ;
3198      *  |--CASE_GROUP -&gt; CASE_GROUP
3199      *  |   |--LITERAL_DEFAULT -&gt; default
3200      *  |   |   `--COLON -&gt; :
3201      *  |   `--SLIST -&gt; SLIST
3202      *  |       |--EXPR -&gt; EXPR
3203      *  |       |   `--ASSIGN -&gt; =
3204      *  |       |       |--IDENT -&gt; x
3205      *  |       |       `--NUM_INT -&gt; 3
3206      *  |       `--SEMI -&gt; ;
3207      *  `--RCURLY -&gt; }
3208      * </pre>
3209      *
3210      * @see #CASE_GROUP
3211      * @see #MODIFIERS
3212      * @see #SWITCH_RULE
3213      **/
3214     public static final int LITERAL_DEFAULT =
3215         JavaLanguageLexer.LITERAL_DEFAULT;
3216 
3217     /**
3218      * The {@code try} keyword.  The children are a statement
3219      * list, zero or more catch blocks and then an optional finally
3220      * block.
3221      *
3222      * <p>For example:</p>
3223      * <pre>
3224      * try { } finally {}
3225      * </pre>
3226      *
3227      * <p>parses as:</p>
3228      * <pre>
3229      * LITERAL_TRY -&gt; try
3230      *  |--SLIST -&gt; {
3231      *  |   `--RCURLY -&gt; }
3232      *  `--LITERAL_FINALLY -&gt; finally
3233      *      `--SLIST -&gt; {
3234      *          `--RCURLY -&gt; }
3235      * </pre>
3236      *
3237      * @see <a
3238      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.19">Java
3239      *     Language Specification, &sect;14.19</a>
3240      * @see #SLIST
3241      * @see #LITERAL_CATCH
3242      * @see #LITERAL_FINALLY
3243      **/
3244     public static final int LITERAL_TRY = JavaLanguageLexer.LITERAL_TRY;
3245 
3246     /**
3247      * The Java 7 try-with-resources construct.
3248      *
3249      * <p>For example:</p>
3250      * <pre>
3251      * try (Foo foo = new Foo(); Bar bar = new Bar()) {
3252      * }
3253      * </pre>
3254      *
3255      * <p>parses as:</p>
3256      * <pre>
3257      * LITERAL_TRY -&gt; try
3258      *  |--RESOURCE_SPECIFICATION -&gt; RESOURCE_SPECIFICATION
3259      *  |   |--LPAREN -&gt; (
3260      *  |   |--RESOURCES -&gt; RESOURCES
3261      *  |   |   |--RESOURCE -&gt; RESOURCE
3262      *  |   |   |   |--MODIFIERS -&gt; MODIFIERS
3263      *  |   |   |   |--TYPE -&gt; TYPE
3264      *  |   |   |   |   `--IDENT -&gt; Foo
3265      *  |   |   |   |--IDENT -&gt; foo
3266      *  |   |   |   `--ASSIGN -&gt; =
3267      *  |   |   |       `--EXPR -&gt; EXPR
3268      *  |   |   |           `--LITERAL_NEW -&gt; new
3269      *  |   |   |               |--IDENT -&gt; Foo
3270      *  |   |   |               |--LPAREN -&gt; (
3271      *  |   |   |               |--ELIST -&gt; ELIST
3272      *  |   |   |               `--RPAREN -&gt; )
3273      *  |   |   |--SEMI -&gt; ;
3274      *  |   |   `--RESOURCE -&gt; RESOURCE
3275      *  |   |       |--MODIFIERS -&gt; MODIFIERS
3276      *  |   |       |--TYPE -&gt; TYPE
3277      *  |   |       |   `--IDENT -&gt; Bar
3278      *  |   |       |--IDENT -&gt; bar
3279      *  |   |       `--ASSIGN -&gt; =
3280      *  |   |           `--EXPR -&gt; EXPR
3281      *  |   |               `--LITERAL_NEW -&gt; new
3282      *  |   |                   |--IDENT -&gt; Bar
3283      *  |   |                   |--LPAREN -&gt; (
3284      *  |   |                   |--ELIST -&gt; ELIST
3285      *  |   |                   `--RPAREN -&gt; )
3286      *  |   `--RPAREN -&gt; )
3287      *  `--SLIST -&gt; {
3288      *      `--RCURLY -&gt; }
3289      * </pre>
3290      *
3291      * <p>Also consider:</p>
3292      * <pre>
3293      * try (BufferedReader br = new BufferedReader(new FileReader(path))) {
3294      * }
3295      * </pre>
3296      *
3297      * <p>which parses as:</p>
3298      * <pre>
3299      * LITERAL_TRY -&gt; try
3300      *  |--RESOURCE_SPECIFICATION -&gt; RESOURCE_SPECIFICATION
3301      *  |   |--LPAREN -&gt; (
3302      *  |   |--RESOURCES -&gt; RESOURCES
3303      *  |   |   `--RESOURCE -&gt; RESOURCE
3304      *  |   |       |--MODIFIERS -&gt; MODIFIERS
3305      *  |   |       |--TYPE -&gt; TYPE
3306      *  |   |       |   `--IDENT -&gt; BufferedReader
3307      *  |   |       |--IDENT -&gt; br
3308      *  |   |       `--ASSIGN -&gt; =
3309      *  |   |           `--EXPR -&gt; EXPR
3310      *  |   |               `--LITERAL_NEW -&gt; new
3311      *  |   |                   |--IDENT -&gt; BufferedReader
3312      *  |   |                   |--LPAREN -&gt; (
3313      *  |   |                   |--ELIST -&gt; ELIST
3314      *  |   |                   |   `--EXPR -&gt; EXPR
3315      *  |   |                   |       `--LITERAL_NEW -&gt; new
3316      *  |   |                   |           |--IDENT -&gt; FileReader
3317      *  |   |                   |           |--LPAREN -&gt; (
3318      *  |   |                   |           |--ELIST -&gt; ELIST
3319      *  |   |                   |           |   `--EXPR -&gt; EXPR
3320      *  |   |                   |           |       `--IDENT -&gt; path
3321      *  |   |                   |           `--RPAREN -&gt; )
3322      *  |   |                   `--RPAREN -&gt; )
3323      *  |   `--RPAREN -&gt; )
3324      *  `--SLIST -&gt; {
3325      *      `--RCURLY -&gt; }
3326      * </pre>
3327      *
3328      * @see #LPAREN
3329      * @see #RESOURCES
3330      * @see #RESOURCE
3331      * @see #SEMI
3332      * @see #RPAREN
3333      * @see #LITERAL_TRY
3334      **/
3335     public static final int RESOURCE_SPECIFICATION =
3336         JavaLanguageLexer.RESOURCE_SPECIFICATION;
3337 
3338     /**
3339      * A list of resources in the Java 7 try-with-resources construct.
3340      * This is a child of RESOURCE_SPECIFICATION.
3341      *
3342      * <p>For example:</p>
3343      * <pre>
3344      *     try (FileReader fr = new FileReader("config.xml")) {
3345      *     } finally {}
3346      * </pre>
3347      *
3348      * <p>parses as:</p>
3349      * <pre>
3350      * LITERAL_TRY -&gt; try
3351      *  |--RESOURCE_SPECIFICATION -&gt; RESOURCE_SPECIFICATION
3352      *  |   |--LPAREN -&gt; (
3353      *  |   |--RESOURCES -&gt; RESOURCES
3354      *  |   |   `--RESOURCE -&gt; RESOURCE
3355      *  |   |       |--MODIFIERS -&gt; MODIFIERS
3356      *  |   |       |--TYPE -&gt; TYPE
3357      *  |   |       |   `--IDENT -&gt; FileReader
3358      *  |   |       |--IDENT -&gt; fr
3359      *  |   |       `--ASSIGN -&gt; =
3360      *  |   |           `--EXPR -&gt; EXPR
3361      *  |   |               `--LITERAL_NEW -&gt; new
3362      *  |   |                   |--IDENT -&gt; FileReader
3363      *  |   |                   |--LPAREN -&gt; (
3364      *  |   |                   |--ELIST -&gt; ELIST
3365      *  |   |                   |   `--EXPR -&gt; EXPR
3366      *  |   |                   |       `--STRING_LITERAL -&gt; "config.xml"
3367      *  |   |                   `--RPAREN -&gt; )
3368      *  |   `--RPAREN -&gt; )
3369      *  |--SLIST -&gt; {
3370      *  |   `--RCURLY -&gt; }
3371      *  `--LITERAL_FINALLY -&gt; finally
3372      *      `--SLIST -&gt; {
3373      *          `--RCURLY -&gt; }
3374      * </pre>
3375      *
3376      * @see #RESOURCE_SPECIFICATION
3377      **/
3378     public static final int RESOURCES =
3379         JavaLanguageLexer.RESOURCES;
3380 
3381     /**
3382      * A resource in the Java 7 try-with-resources construct.
3383      * This is a child of RESOURCES.
3384      *
3385      * <p>For example:</p>
3386      * <pre>
3387      * try (Foo foo = new Foo(); Bar bar = new Bar()) { }
3388      * </pre>
3389      *
3390      * <p>parses as:</p>
3391      * <pre>
3392      * LITERAL_TRY -&gt; try
3393      *  |--RESOURCE_SPECIFICATION -&gt; RESOURCE_SPECIFICATION
3394      *  |   |--LPAREN -&gt; (
3395      *  |   |--RESOURCES -&gt; RESOURCES
3396      *  |   |   |--RESOURCE -&gt; RESOURCE
3397      *  |   |   |   |--MODIFIERS -&gt; MODIFIERS
3398      *  |   |   |   |--TYPE -&gt; TYPE
3399      *  |   |   |   |   `--IDENT -&gt; Foo
3400      *  |   |   |   |--IDENT -&gt; foo
3401      *  |   |   |   `--ASSIGN -&gt; =
3402      *  |   |   |       `--EXPR -&gt; EXPR
3403      *  |   |   |           `--LITERAL_NEW -&gt; new
3404      *  |   |   |               |--IDENT -&gt; Foo
3405      *  |   |   |               |--LPAREN -&gt; (
3406      *  |   |   |               |--ELIST -&gt; ELIST
3407      *  |   |   |               `--RPAREN -&gt; )
3408      *  |   |   |--SEMI -&gt; ;
3409      *  |   |   `--RESOURCE -&gt; RESOURCE
3410      *  |   |       |--MODIFIERS -&gt; MODIFIERS
3411      *  |   |       |--TYPE -&gt; TYPE
3412      *  |   |       |   `--IDENT -&gt; Bar
3413      *  |   |       |--IDENT -&gt; bar
3414      *  |   |       `--ASSIGN -&gt; =
3415      *  |   |           `--EXPR -&gt; EXPR
3416      *  |   |               `--LITERAL_NEW -&gt; new
3417      *  |   |                   |--IDENT -&gt; Bar
3418      *  |   |                   |--LPAREN -&gt; (
3419      *  |   |                   |--ELIST -&gt; ELIST
3420      *  |   |                   `--RPAREN -&gt; )
3421      *  |   `--RPAREN -&gt; )
3422      *  `--SLIST -&gt; {
3423      *      `--RCURLY -&gt; }
3424      * </pre>
3425      *
3426      * @see #RESOURCES
3427      * @see #RESOURCE_SPECIFICATION
3428      **/
3429     public static final int RESOURCE =
3430         JavaLanguageLexer.RESOURCE;
3431 
3432     /**
3433      * The {@code catch} keyword.
3434      *
3435      * <p>For example:</p>
3436      * <pre>
3437      * try {
3438      *     FileReader fr = new FileReader("Test.txt");
3439      * } catch (FileNotFoundException e) {
3440      *
3441      * }
3442      * </pre>
3443      *
3444      * <p>parses as:</p>
3445      * <pre>
3446      * LITERAL_TRY -&gt; try
3447      *  |--SLIST -&gt; {
3448      *  |   |--VARIABLE_DEF -&gt; VARIABLE_DEF
3449      *  |   |   |--MODIFIERS -&gt; MODIFIERS
3450      *  |   |   |--TYPE -&gt; TYPE
3451      *  |   |   |   `--IDENT -&gt; FileReader
3452      *  |   |   |--IDENT -&gt; fr
3453      *  |   |   `--ASSIGN -&gt; =
3454      *  |   |       `--EXPR -&gt; EXPR
3455      *  |   |           `--LITERAL_NEW -&gt; new
3456      *  |   |               |--IDENT -&gt; FileReader
3457      *  |   |               |--LPAREN -&gt; (
3458      *  |   |               |--ELIST -&gt; ELIST
3459      *  |   |               |   `--EXPR -&gt; EXPR
3460      *  |   |               |       `--STRING_LITERAL -&gt; "Test.txt"
3461      *  |   |               `--RPAREN -&gt; )
3462      *  |   |--SEMI -&gt; ;
3463      *  |   `--RCURLY -&gt; }
3464      *  `--LITERAL_CATCH -&gt; catch
3465      *      |--LPAREN -&gt; (
3466      *      |--PARAMETER_DEF -&gt; PARAMETER_DEF
3467      *      |   |--MODIFIERS -&gt; MODIFIERS
3468      *      |   |--TYPE -&gt; TYPE
3469      *      |   |   `--IDENT -&gt; FileNotFoundException
3470      *      |   `--IDENT -&gt; e
3471      *      |--RPAREN -&gt; )
3472      *      `--SLIST -&gt; {
3473      *          `--RCURLY -&gt; }
3474      * </pre>
3475      *
3476      * @see #LPAREN
3477      * @see #PARAMETER_DEF
3478      * @see #RPAREN
3479      * @see #SLIST
3480      * @see #LITERAL_TRY
3481      **/
3482     public static final int LITERAL_CATCH =
3483         JavaLanguageLexer.LITERAL_CATCH;
3484 
3485     /**
3486      * The {@code finally} keyword.
3487      *
3488      * <p>For example:</p>
3489      * <pre>
3490      * try {} finally {}
3491      * </pre>
3492      *
3493      * <p>parses as:</p>
3494      * <pre>
3495      * LITERAL_TRY -&gt; try
3496      *  |--SLIST -&gt; {
3497      *  |   `--RCURLY -&gt; }
3498      *  `--LITERAL_FINALLY -&gt; finally
3499      *      `--SLIST -&gt; {
3500      *          `--RCURLY -&gt; }
3501      * </pre>
3502      *
3503      * @see #SLIST
3504      * @see #LITERAL_TRY
3505      **/
3506     public static final int LITERAL_FINALLY =
3507         JavaLanguageLexer.LITERAL_FINALLY;
3508 
3509     /**
3510      * The {@code +=} (addition assignment) operator.
3511      *
3512      * <p>For example:</p>
3513      * <pre>
3514      * a += b;
3515      * </pre>
3516      *
3517      * <p>parses as:</p>
3518      * <pre>
3519      * |--EXPR -&gt; EXPR
3520      * |   `--PLUS_ASSIGN -&gt; +=
3521      * |       |--IDENT -&gt; a
3522      * |       `--IDENT -&gt; b
3523      * |--SEMI -&gt; ;
3524      * </pre>
3525      *
3526      * @see <a
3527      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3528      *     Language Specification, &sect;15.26.2</a>
3529      * @see #EXPR
3530      **/
3531     public static final int PLUS_ASSIGN = JavaLanguageLexer.PLUS_ASSIGN;
3532     /**
3533      * The {@code -=} (subtraction assignment) operator.
3534      *
3535      * <p>For example:</p>
3536      * <pre>
3537      * a -= b;
3538      * </pre>
3539      *
3540      * <p>parses as:</p>
3541      * <pre>
3542      * |--EXPR -&gt; EXPR
3543      * |   `--MINUS_ASSIGN -&gt; -=
3544      * |       |--IDENT -&gt; a
3545      * |       `--IDENT -&gt; b
3546      * |--SEMI -&gt; ;
3547      * </pre>
3548      *
3549      * @see <a
3550      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3551      *     Language Specification, &sect;15.26.2</a>
3552      * @see #EXPR
3553      **/
3554     public static final int MINUS_ASSIGN =
3555         JavaLanguageLexer.MINUS_ASSIGN;
3556 
3557     /**
3558      * The {@code *=} (multiplication assignment) operator.
3559      *
3560      * <p>For example:</p>
3561      * <pre>
3562      * a *= b;
3563      * </pre>
3564      *
3565      * <p>parses as:</p>
3566      * <pre>
3567      * |--EXPR -&gt; EXPR
3568      * |   `--STAR_ASSIGN -&gt; *=
3569      * |       |--IDENT -&gt; a
3570      * |       `--IDENT -&gt; b
3571      * |--SEMI -&gt; ;
3572      * </pre>
3573      *
3574      * @see <a
3575      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3576      *     Language Specification, &sect;15.26.2</a>
3577      * @see #EXPR
3578      **/
3579     public static final int STAR_ASSIGN = JavaLanguageLexer.STAR_ASSIGN;
3580     /**
3581      * The {@code /=} (division assignment) operator.
3582      *
3583      * <p>For example:</p>
3584      * <pre>
3585      * a /= b;
3586      * </pre>
3587      *
3588      * <p>parses as:</p>
3589      * <pre>
3590      * |--EXPR -&gt; EXPR
3591      * |   `--DIV_ASSIGN -&gt; /=
3592      * |       |--IDENT -&gt; a
3593      * |       `--IDENT -&gt; b
3594      * |--SEMI -&gt; ;
3595      * </pre>
3596      *
3597      * @see <a
3598      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3599      *     Language Specification, &sect;15.26.2</a>
3600      * @see #EXPR
3601      **/
3602     public static final int DIV_ASSIGN = JavaLanguageLexer.DIV_ASSIGN;
3603     /**
3604      * The {@code %=} (remainder assignment) operator.
3605      *
3606      * <p>For example:</p>
3607      * <pre>a %= 2;</pre>
3608      *
3609      * <p>parses as:</p>
3610      * <pre>
3611      * |--EXPR -&gt; EXPR
3612      * |   `--MOD_ASSIGN -&gt; %=
3613      * |       |--IDENT -&gt; a
3614      * |       `--NUM_INT -&gt; 2
3615      * |--SEMI -&gt; ;
3616      * </pre>
3617      *
3618      * @see <a
3619      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3620      *     Language Specification, &sect;15.26.2</a>
3621      * @see #EXPR
3622      **/
3623     public static final int MOD_ASSIGN = JavaLanguageLexer.MOD_ASSIGN;
3624     /**
3625      * The {@code >>=} (signed right shift assignment)
3626      * operator.
3627      *
3628      * <p>For example:</p>
3629      * <pre>
3630      * a &gt;&gt;= b;
3631      * </pre>
3632      *
3633      * <p>parses as:</p>
3634      * <pre>
3635      * |--EXPR -&gt; EXPR
3636      * |   `--SR_ASSIGN -&gt; &gt;&gt;=
3637      * |       |--IDENT -&gt; a
3638      * |       `--IDENT -&gt; b
3639      * |--SEMI -&gt; ;
3640      * </pre>
3641      *
3642      * @see <a
3643      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3644      *     Language Specification, &sect;15.26.2</a>
3645      * @see #EXPR
3646      **/
3647     public static final int SR_ASSIGN = JavaLanguageLexer.SR_ASSIGN;
3648     /**
3649      * The {@code >>>=} (unsigned right shift assignment)
3650      * operator.
3651      *
3652      * <p>For example:</p>
3653      * <pre>
3654      * a &gt;&gt;&gt;= b;
3655      * </pre>
3656      *
3657      * <p>parses as:</p>
3658      * <pre>
3659      * |--EXPR -&gt; EXPR
3660      * |   `--BSR_ASSIGN -&gt; &gt;&gt;&gt;=
3661      * |       |--IDENT -&gt; a
3662      * |       `--IDENT -&gt; b
3663      * |--SEMI -&gt; ;
3664      * </pre>
3665      *
3666      * @see <a
3667      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3668      *     Language Specification, &sect;15.26.2</a>
3669      * @see #EXPR
3670      **/
3671     public static final int BSR_ASSIGN = JavaLanguageLexer.BSR_ASSIGN;
3672     /**
3673      * The {@code <<=} (left shift assignment) operator.
3674      *
3675      * @see <a
3676      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3677      *     Language Specification, &sect;15.26.2</a>
3678      * @see #EXPR
3679      **/
3680     public static final int SL_ASSIGN = JavaLanguageLexer.SL_ASSIGN;
3681     /**
3682      * The {@code &=} (bitwise AND assignment) operator.
3683      *
3684      * <p>For example:</p>
3685      * <pre>
3686      * a &amp;= b;
3687      * </pre>
3688      *
3689      * <p>parses as:</p>
3690      * <pre>
3691      * |--EXPR -&gt; EXPR
3692      * |   `--BAND_ASSIGN -&gt; &amp;=
3693      * |       |--IDENT -&gt; a
3694      * |       `--IDENT -&gt; b
3695      * |--SEMI -&gt; ;
3696      * </pre>
3697      *
3698      * @see <a
3699      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3700      *     Language Specification, &sect;15.26.2</a>
3701      * @see #EXPR
3702      **/
3703     public static final int BAND_ASSIGN = JavaLanguageLexer.BAND_ASSIGN;
3704     /**
3705      * The {@code ^=} (bitwise exclusive OR assignment) operator.
3706      *
3707      * @see <a
3708      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3709      *     Language Specification, &sect;15.26.2</a>
3710      * @see #EXPR
3711      **/
3712     public static final int BXOR_ASSIGN = JavaLanguageLexer.BXOR_ASSIGN;
3713     /**
3714      * The {@code |=} (bitwise OR assignment) operator.
3715      *
3716      * <p>For example:</p>
3717      * <pre>
3718      * a |= b;
3719      * </pre>
3720      *
3721      * <p>parses as:</p>
3722      * <pre>
3723      * |--EXPR -&gt; EXPR
3724      * |   `--BOR_ASSIGN -&gt; |=
3725      * |       |--IDENT -&gt; a
3726      * |       `--IDENT -&gt; b
3727      * |--SEMI -&gt; ;
3728      * </pre>
3729      *
3730      * @see <a
3731      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.26.2">Java
3732      *     Language Specification, &sect;15.26.2</a>
3733      * @see #EXPR
3734      **/
3735     public static final int BOR_ASSIGN = JavaLanguageLexer.BOR_ASSIGN;
3736     /**
3737      * The {@code ?} (conditional) operator.  Technically,
3738      * the colon is also part of this operator, but it appears as a
3739      * separate token.
3740      *
3741      * <p>For example:</p>
3742      * <pre>
3743      * String variable=(quantity==1)?"true":"false";
3744      * </pre>
3745      *
3746      * <p>parses as:</p>
3747      * <pre>
3748      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
3749      * |   |--MODIFIERS -&gt; MODIFIERS
3750      * |   |--TYPE -&gt; TYPE
3751      * |   |   `--IDENT -&gt; String
3752      * |   |--IDENT -&gt; variable
3753      * |   `--ASSIGN -&gt; =
3754      * |       `--EXPR -&gt; EXPR
3755      * |           `--QUESTION -&gt; ?
3756      * |               |--LPAREN -&gt; (
3757      * |               |--EQUAL -&gt; ==
3758      * |               |   |--IDENT -&gt; quantity
3759      * |               |   `--NUM_INT -&gt; 1
3760      * |               |--RPAREN -&gt; )
3761      * |               |--STRING_LITERAL -&gt; "true"
3762      * |               |--COLON -&gt; :
3763      * |               `--STRING_LITERAL -&gt; "false"
3764      * |--SEMI -&gt; ;
3765      * </pre>
3766      *
3767      * @see <a
3768      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.25">Java
3769      *     Language Specification, &sect;15.25</a>
3770      * @see #EXPR
3771      * @see #COLON
3772      **/
3773     public static final int QUESTION = JavaLanguageLexer.QUESTION;
3774     /**
3775      * The {@code ||} (conditional OR) operator.
3776      *
3777      * <p>For example:</p>
3778      * <pre>
3779      * if (a || b) {
3780      * }
3781      * </pre>
3782      *
3783      * <p>
3784      * parses as:
3785      * </p>
3786      * <pre>
3787      * LITERAL_IF -&gt; if
3788      *  |--LPAREN -&gt; (
3789      *  |--EXPR -&gt; EXPR
3790      *  |   `--LOR -&gt; ||
3791      *  |       |--IDENT -&gt; a
3792      *  |       `--IDENT -&gt; b
3793      *  |--RPAREN -&gt; )
3794      *  |--SLIST -&gt; {
3795      *  |   |--RCURLY -&gt; }
3796      * </pre>
3797      *
3798      * @see <a
3799      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.24">Java
3800      *     Language Specification, &sect;15.24</a>
3801      * @see #EXPR
3802      **/
3803     public static final int LOR = JavaLanguageLexer.LOR;
3804     /**
3805      * The {@code &&} (conditional AND) operator.
3806      *
3807      * <p>For example:</p>
3808      * <pre>
3809      * if (a &amp;&amp; b) {
3810      * }
3811      * </pre>
3812      *
3813      * <p>parses as:</p>
3814      * <pre>
3815      * LITERAL_IF -&gt; if
3816      *  |--LPAREN -&gt; (
3817      *  |--EXPR -&gt; EXPR
3818      *  |   `--LAND -&gt; &amp;&amp;
3819      *  |       |--IDENT -&gt; a
3820      *  |       `--IDENT -&gt; b
3821      *  |--RPAREN -&gt; )
3822      *  |--SLIST -&gt; {
3823      *  |   |--RCURLY -&gt; }
3824      * </pre>
3825      *
3826      * @see <a
3827      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.23">Java
3828      *     Language Specification, &sect;15.23</a>
3829      * @see #EXPR
3830      **/
3831     public static final int LAND = JavaLanguageLexer.LAND;
3832     /**
3833      * The {@code |} (bitwise OR) operator.
3834      *
3835      * <p>For example:</p>
3836      * <pre>
3837      * a = a | b;
3838      * </pre>
3839      *
3840      * <p>parses as:</p>
3841      * <pre>
3842      * |--EXPR -&gt; EXPR
3843      * |   `--ASSIGN -&gt; =
3844      * |       |--IDENT -&gt; a
3845      * |       `--BOR -&gt; |
3846      * |           |--IDENT -&gt; a
3847      * |           `--IDENT -&gt; b
3848      * |--SEMI -&gt; ;
3849      * </pre>
3850      *
3851      * @see <a
3852      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1">Java
3853      *     Language Specification, &sect;15.22.1</a>
3854      * @see #EXPR
3855      **/
3856     public static final int BOR = JavaLanguageLexer.BOR;
3857     /**
3858      * The {@code ^} (bitwise exclusive OR) operator.
3859      *
3860      * @see <a
3861      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1">Java
3862      *     Language Specification, &sect;15.22.1</a>
3863      * @see #EXPR
3864      **/
3865     public static final int BXOR = JavaLanguageLexer.BXOR;
3866     /**
3867      * The {@code &} (bitwise AND) operator.
3868      *
3869      * <p>For example:</p>
3870      * <pre>
3871      * c = a &amp; b;
3872      * </pre>
3873      *
3874      * <p>parses as:</p>
3875      * <pre>
3876      * |--EXPR -&gt; EXPR
3877      * |   `--ASSIGN -&gt; =
3878      * |       |--IDENT -&gt; c
3879      * |       `--BAND -&gt; &amp;
3880      * |           |--IDENT -&gt; a
3881      * |           `--IDENT -&gt; b
3882      * |--SEMI -&gt; ;
3883      * </pre>
3884      *
3885      * @see <a
3886      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.1">Java
3887      *     Language Specification, &sect;15.22.1</a>
3888      * @see #EXPR
3889      **/
3890     public static final int BAND = JavaLanguageLexer.BAND;
3891     /**
3892      * The {@code !=} (not equal) operator.
3893      *
3894      * <p>For example:</p>
3895      * <pre>
3896      * a != b;
3897      * </pre>
3898      *
3899      * <p>parses as:</p>
3900      * <pre>
3901      * |--EXPR -&gt; EXPR
3902      * |   `--NOT_EQUAL -&gt; !=
3903      * |       |--IDENT -&gt; a
3904      * |       `--IDENT -&gt; b
3905      * `--SEMI -&gt; ;
3906      * </pre>
3907      *
3908      * @see #EXPR
3909      **/
3910     public static final int NOT_EQUAL = JavaLanguageLexer.NOT_EQUAL;
3911     /**
3912      * The {@code ==} (equal) operator.
3913      *
3914      * <p>For example:</p>
3915      * <pre>
3916      * return a == b;
3917      * </pre>
3918      *
3919      * <p>parses as:</p>
3920      * <pre>
3921      * |--EXPR -&gt; EXPR
3922      * |   `--EQUAL -&gt; ==
3923      * |       |--IDENT -&gt; a
3924      * |       `--IDENT -&gt; b
3925      * `--SEMI -&gt; ;
3926      * </pre>
3927      *
3928      * @see #EXPR
3929      **/
3930     public static final int EQUAL = JavaLanguageLexer.EQUAL;
3931     /**
3932      * The {@code <} (less than) operator.
3933      *
3934      * <p>For example:</p>
3935      * <pre>
3936      * c = a &lt; b;
3937      * </pre>
3938      *
3939      * <p>parses as:</p>
3940      * <pre>
3941      * |--EXPR -&gt; EXPR
3942      * |   `--ASSIGN -&gt; =
3943      * |       |--IDENT -&gt; c
3944      * |       `--LT -&gt; &lt;
3945      * |           |--IDENT -&gt; a
3946      * |           `--IDENT -&gt; b
3947      * |--SEMI -&gt; ;
3948      * </pre>
3949      *
3950      * @see #EXPR
3951      **/
3952     public static final int LT = JavaLanguageLexer.LT;
3953     /**
3954      * The {@code >} (greater than) operator.
3955      *
3956      * <p>For example:</p>
3957      * <pre>
3958      * c = a &gt; b;
3959      * </pre>
3960      *
3961      * <p>parses as:</p>
3962      * <pre>
3963      * |--EXPR -&gt; EXPR
3964      * |   `--ASSIGN -&gt; =
3965      * |       |--IDENT -&gt; c
3966      * |       `--BAND -&gt; &gt;
3967      * |           |--IDENT -&gt; a
3968      * |           `--IDENT -&gt; b
3969      * |--SEMI -&gt; ;
3970      * </pre>
3971      *
3972      * @see #EXPR
3973      **/
3974     public static final int GT = JavaLanguageLexer.GT;
3975     /**
3976      * The {@code <=} (less than or equal) operator.
3977      *
3978      * <p>For example:</p>
3979      * <pre>
3980      * c = a &lt;= b;
3981      * </pre>
3982      *
3983      * <p>parses as:</p>
3984      * <pre>
3985      * |--EXPR -&gt; EXPR
3986      * |   `--ASSIGN -&gt; =
3987      * |       |--IDENT -&gt; c
3988      * |       `--LE -&gt; &lt;=
3989      * |           |--IDENT -&gt; a
3990      * |           `--IDENT -&gt; b
3991      * |--SEMI -&gt; ;
3992      * </pre>
3993      *
3994      * @see #EXPR
3995      **/
3996     public static final int LE = JavaLanguageLexer.LE;
3997     /**
3998      * The {@code >=} (greater than or equal) operator.
3999      *
4000      * <p>For example:</p>
4001      * <pre>
4002      *   boolean b = a &gt;= 3;
4003      * </pre>
4004      *
4005      * <p>parses as:</p>
4006      * <pre>
4007      * VARIABLE_DEF -&gt; VARIABLE_DEF
4008      *  |--MODIFIERS -&gt; MODIFIERS
4009      *  |--TYPE -&gt; TYPE
4010      *  |   `--LITERAL_BOOLEAN -&gt; boolean
4011      *  |--IDENT -&gt; b
4012      *  `--ASSIGN -&gt; =
4013      *      `--EXPR -&gt; EXPR
4014      *          `--GE -&gt; &gt;=
4015      *              |--IDENT -&gt; a
4016      *              `--NUM_INT -&gt; 3
4017      * </pre>
4018      *
4019      * @see #EXPR
4020      **/
4021     public static final int GE = JavaLanguageLexer.GE;
4022     /**
4023      * The {@code instanceof} operator.  The first child is an
4024      * object reference or something that evaluates to an object
4025      * reference.  The second child is a reference type or pattern.
4026      *
4027      * <p>For example:</p>
4028      * <pre>
4029      * boolean isBuilderReferenceType = text instanceof StringBuilder; // reference type
4030      * boolean isBuilderPatternWithPattern =
4031      *         text instanceof StringBuilder s; // type pattern, no `PATTERN_DEF`
4032      * </pre>
4033      *
4034      * <p>parses as:</p>
4035      * <pre>
4036      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
4037      * |   |--MODIFIERS -&gt; MODIFIERS
4038      * |   |--TYPE -&gt; TYPE
4039      * |   |   `--LITERAL_BOOLEAN -&gt; boolean
4040      * |   |--IDENT -&gt; isBuilderReferenceType
4041      * |   `--ASSIGN -&gt; =
4042      * |       `--EXPR -&gt; EXPR
4043      * |           `--LITERAL_INSTANCEOF -&gt; instanceof
4044      * |               |--IDENT -&gt; text
4045      * |               `--TYPE -&gt; TYPE
4046      * |                   `--IDENT -&gt; StringBuilder
4047      * |--SEMI -&gt; ;
4048      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
4049      * |   |--MODIFIERS -&gt; MODIFIERS
4050      * |   |--TYPE -&gt; TYPE
4051      * |   |   `--LITERAL_BOOLEAN -&gt; boolean
4052      * |   |--IDENT -&gt; isBuilderPatternWithPattern
4053      * |   `--ASSIGN -&gt; =
4054      * |       `--EXPR -&gt; EXPR
4055      * |           `--LITERAL_INSTANCEOF -&gt; instanceof
4056      * |               |--IDENT -&gt; text
4057      * |               `--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
4058      * |                   |--MODIFIERS -&gt; MODIFIERS
4059      * |                   |--TYPE -&gt; TYPE
4060      * |                   |   `--IDENT -&gt; StringBuilder
4061      * |                   `--IDENT -&gt; s
4062      * |--SEMI -&gt; ;
4063      * </pre>
4064      *
4065      * @see <a
4066      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.20.2">Java
4067      *     Language Specification, &sect;15.20.2</a>
4068      * @see #EXPR
4069      * @see #METHOD_CALL
4070      * @see #IDENT
4071      * @see #DOT
4072      * @see #TYPE
4073      * @see #PATTERN_VARIABLE_DEF
4074      * @see FullIdent
4075      **/
4076     public static final int LITERAL_INSTANCEOF =
4077         JavaLanguageLexer.LITERAL_INSTANCEOF;
4078 
4079     /**
4080      * The {@code <<} (shift left) operator.
4081      *
4082      * <p>For example:</p>
4083      * <pre>
4084      * a = a &lt;&lt; b;
4085      * </pre>
4086      *
4087      * <p>parses as:</p>
4088      * <pre>
4089      * |--EXPR -&gt; EXPR
4090      * |   `--ASSIGN -&gt; =
4091      * |       |--IDENT -&gt; a
4092      * |       `--SR -&gt; &lt;&lt;
4093      * |           |--IDENT -&gt; a
4094      * |           `--IDENT -&gt; b
4095      * |--SEMI -&gt; ;
4096      * </pre>
4097      *
4098      * @see <a
4099      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19">Java
4100      *     Language Specification, &sect;15.19</a>
4101      * @see #EXPR
4102      **/
4103     public static final int SL = JavaLanguageLexer.SL;
4104     /**
4105      * The {@code >>} (signed shift right) operator.
4106      *
4107      * <p>For example:</p>
4108      * <pre>
4109      * a = a &gt;&gt; b;
4110      * </pre>
4111      *
4112      * <p>parses as:</p>
4113      * <pre>
4114      * |--EXPR -&gt; EXPR
4115      * |   `--ASSIGN -&gt; =
4116      * |       |--IDENT -&gt; a
4117      * |       `--SR -&gt; &gt;&gt;
4118      * |           |--IDENT -&gt; a
4119      * |           `--IDENT -&gt; b
4120      * |--SEMI -&gt; ;
4121      * </pre>
4122      *
4123      * @see <a
4124      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19">Java
4125      *     Language Specification, &sect;15.19</a>
4126      * @see #EXPR
4127      **/
4128     public static final int SR = JavaLanguageLexer.SR;
4129     /**
4130      * The {@code >>>} (unsigned shift right) operator.
4131      *
4132      * <p>For example:</p>
4133      * <pre>
4134      * a &gt;&gt;&gt; b;
4135      * </pre>
4136      *
4137      * <p>parses as:</p>
4138      * <pre>
4139      * |--EXPR -&gt; EXPR
4140      * |   `--BSR -&gt; &gt;&gt;&gt;
4141      * |       |--IDENT -&gt; a
4142      * |       `--IDENT -&gt; b
4143      * |--SEMI -&gt; ;
4144      * </pre>
4145      *
4146      * @see <a
4147      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19">Java
4148      *     Language Specification, &sect;15.19</a>
4149      * @see #EXPR
4150      **/
4151     public static final int BSR = JavaLanguageLexer.BSR;
4152     /**
4153      * The {@code +} (addition) operator.
4154      *
4155      * <p>For example:</p>
4156      * <pre>
4157      * c = a + b;
4158      * </pre>
4159      *
4160      * <p>parses as:</p>
4161      * <pre>
4162      * |--EXPR -&gt; EXPR
4163      * |   `--ASSIGN -&gt; =
4164      * |       |--IDENT -&gt; c
4165      * |       `--PLUS -&gt; +
4166      * |           |--IDENT -&gt; a
4167      * |           `--IDENT -&gt; b
4168      * |--SEMI -&gt; ;
4169      * </pre>
4170      *
4171      * @see <a
4172      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18">Java
4173      *     Language Specification, &sect;15.18</a>
4174      * @see #EXPR
4175      **/
4176     public static final int PLUS = JavaLanguageLexer.PLUS;
4177     /**
4178      * The {@code -} (subtraction) operator.
4179      *
4180      * <p>For example:</p>
4181      * <pre>
4182      * c = a - b;
4183      * </pre>
4184      *
4185      * <p>parses as:</p>
4186      * <pre>
4187      * |--EXPR -&gt; EXPR
4188      * |   `--ASSIGN -&gt; =
4189      * |       |--IDENT -&gt; c
4190      * |       `--MINUS -&gt; -
4191      * |           |--IDENT -&gt; a
4192      * |           `--IDENT -&gt; b
4193      * |--SEMI -&gt; ;
4194      * </pre>
4195      *
4196      * @see <a
4197      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18">Java
4198      *     Language Specification, &sect;15.18</a>
4199      * @see #EXPR
4200      **/
4201     public static final int MINUS = JavaLanguageLexer.MINUS;
4202     /**
4203      * The {@code /} (division) operator.
4204      *
4205      * <p>For example:</p>
4206      * <pre>
4207      * a = 4 / 2;
4208      * </pre>
4209      *
4210      * <p>parses as:</p>
4211      * <pre>
4212      * |--EXPR -&gt; EXPR
4213      * |   `--ASSIGN -&gt; =
4214      * |       |--IDENT -&gt; a
4215      * |       `--DIV -&gt; /
4216      * |           |--NUM_INT -&gt; 4
4217      * |           `--NUM_INT -&gt; 2
4218      * |--SEMI -&gt; ;
4219      * </pre>
4220      *
4221      * @see <a
4222      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.2">Java
4223      *     Language Specification, &sect;15.17.2</a>
4224      * @see #EXPR
4225      **/
4226     public static final int DIV = JavaLanguageLexer.DIV;
4227     /**
4228      * The {@code %} (remainder) operator.
4229      *
4230      * <p>For example:</p>
4231      * <pre>
4232      * c = a % b;
4233      * </pre>
4234      *
4235      * <p>parses as:</p>
4236      * <pre>
4237      * EXPR -&gt; EXPR
4238      *  `--ASSIGN -&gt; =
4239      *      |--IDENT -&gt; c
4240      *      `--MOD -&gt; %
4241      *          |--IDENT -&gt; a
4242      *          `--IDENT -&gt; b
4243      * SEMI -&gt; ;
4244      * </pre>
4245      *
4246      * @see <a
4247      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17.3">Java
4248      *     Language Specification, &sect;15.17.3</a>
4249      * @see #EXPR
4250      **/
4251     public static final int MOD = JavaLanguageLexer.MOD;
4252     /**
4253      * The {@code ++} (prefix increment) operator.
4254      *
4255      * <p>For example:</p>
4256      * <pre>
4257      * ++a;
4258      * </pre>
4259      *
4260      * <p>parses as:</p>
4261      * <pre>
4262      * |--EXPR -&gt; EXPR
4263      * |   `--INC -&gt; ++
4264      * |       `--IDENT -&gt; a
4265      * |--SEMI -&gt; ;
4266      * </pre>
4267      *
4268      * @see <a
4269      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.1">Java
4270      *     Language Specification, &sect;15.15.1</a>
4271      * @see #EXPR
4272      * @see #POST_INC
4273      **/
4274     public static final int INC = JavaLanguageLexer.INC;
4275     /**
4276      * The {@code --} (prefix decrement) operator.
4277      *
4278      * <p>For example:</p>
4279      * <pre>
4280      * --a;
4281      * </pre>
4282      *
4283      * <p>parses as:</p>
4284      * <pre>
4285      * |--EXPR -&gt; EXPR
4286      * |   `--DEC -&gt; --
4287      * |       `--IDENT -&gt; a
4288      * |--SEMI -&gt; ;
4289      * </pre>
4290      *
4291      * @see <a
4292      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.2">Java
4293      *     Language Specification, &sect;15.15.2</a>
4294      * @see #EXPR
4295      * @see #POST_DEC
4296      **/
4297     public static final int DEC = JavaLanguageLexer.DEC;
4298     /**
4299      * The {@code ~} (bitwise complement) operator.
4300      *
4301      * <p>For example:</p>
4302      * <pre>
4303      * a = ~ a;
4304      * </pre>
4305      *
4306      * <p>parses as:</p>
4307      * <pre>
4308      * |--EXPR -&gt; EXPR
4309      * |   `--ASSIGN -&gt; =
4310      * |       |--IDENT -&gt; a
4311      * |       `--BNOT -&gt; ~
4312      * |           `--IDENT -&gt; a
4313      * |--SEMI -&gt; ;
4314      * </pre>
4315      *
4316      * @see <a
4317      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.5">Java
4318      *     Language Specification, &sect;15.15.5</a>
4319      * @see #EXPR
4320      **/
4321     public static final int BNOT = JavaLanguageLexer.BNOT;
4322     /**
4323      * The {@code !} (logical complement) operator.
4324      *
4325      * <p>For example:</p>
4326      * <pre>
4327      * c = &#33; a;
4328      * </pre>
4329      *
4330      * <p>parses as:</p>
4331      * <pre>
4332      * |--EXPR -&gt; EXPR
4333      * |   `--ASSIGN -&gt; =
4334      * |       |--IDENT -&gt; c
4335      * |       `--LNOT -&gt; &#33;
4336      * |           `--IDENT -&gt; a
4337      * |--SEMI -&gt; ;
4338      * </pre>
4339      *
4340      * @see <a
4341      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.15.6">Java
4342      *     Language Specification, &sect;15.15.6</a>
4343      * @see #EXPR
4344      **/
4345     public static final int LNOT = JavaLanguageLexer.LNOT;
4346     /**
4347      * The {@code true} keyword.
4348      *
4349      * <p>For example:</p>
4350      * <pre>
4351      * boolean a = true;
4352      * </pre>
4353      *
4354      * <p>parses as:</p>
4355      * <pre>
4356      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
4357      * |   |--MODIFIERS -&gt; MODIFIERS
4358      * |   |--TYPE -&gt; TYPE
4359      * |   |   `--LITERAL_BOOLEAN -&gt; boolean
4360      * |   |--IDENT -&gt; a
4361      * |   `--ASSIGN -&gt; =
4362      * |       `--EXPR -&gt; EXPR
4363      * |           `--LITERAL_TRUE -&gt; true
4364      * |--SEMI -&gt; ;
4365      * </pre>
4366      *
4367      * @see <a
4368      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.3">Java
4369      *     Language Specification, &sect;3.10.3</a>
4370      * @see #EXPR
4371      * @see #LITERAL_FALSE
4372      **/
4373     public static final int LITERAL_TRUE =
4374         JavaLanguageLexer.LITERAL_TRUE;
4375 
4376     /**
4377      * The {@code false} keyword.
4378      *
4379      * <p>For example:</p>
4380      * <pre>
4381      * boolean a = false;
4382      * </pre>
4383      *
4384      * <p>parses as:</p>
4385      * <pre>
4386      * VARIABLE_DEF -&gt; VARIABLE_DEF
4387      *  |--MODIFIERS -&gt; MODIFIERS
4388      *  |--TYPE -&gt; TYPE
4389      *  |   `--LITERAL_BOOLEAN -&gt; boolean
4390      *  |--IDENT -&gt; a
4391      *  |--ASSIGN -&gt; =
4392      *  |   `--EXPR -&gt; EXPR
4393      *  |       `--LITERAL_FALSE -&gt; false
4394      *  `--SEMI -&gt; ;
4395      * </pre>
4396      *
4397      * @see <a
4398      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.3">Java
4399      *     Language Specification, &sect;3.10.3</a>
4400      * @see #EXPR
4401      * @see #LITERAL_TRUE
4402      **/
4403     public static final int LITERAL_FALSE =
4404         JavaLanguageLexer.LITERAL_FALSE;
4405 
4406     /**
4407      * The {@code null} keyword.
4408      *
4409      * <p>For example:</p>
4410      * <pre>
4411      * String s = null;
4412      * </pre>
4413      *
4414      * <p>parses as:</p>
4415      * <pre>
4416      * VARIABLE_DEF -&gt; VARIABLE_DEF
4417      *  |--MODIFIERS -&gt; MODIFIERS
4418      *  |--TYPE -&gt; TYPE
4419      *  |   `--IDENT -&gt; String
4420      *  |--IDENT -&gt; s
4421      *  |--ASSIGN -&gt; =
4422      *  |   `--EXPR -&gt; EXPR
4423      *  |       `--LITERAL_NULL -&gt; null
4424      *  `--SEMI -&gt; ;
4425      * </pre>
4426      *
4427      * @see <a
4428      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.7">Java
4429      *     Language Specification, &sect;3.10.7</a>
4430      * @see #EXPR
4431      **/
4432     public static final int LITERAL_NULL =
4433         JavaLanguageLexer.LITERAL_NULL;
4434 
4435     /**
4436      * The {@code new} keyword.  This element is used to define
4437      * new instances of objects, new arrays, and new anonymous inner
4438      * classes.
4439      *
4440      * <p>For example:</p>
4441      *
4442      * <pre>
4443      * List&lt;String&gt; l = new ArrayList&lt;String&gt;();
4444      * </pre>
4445      *
4446      * <p>parses as:</p>
4447      * <pre>
4448      * VARIABLE_DEF -&gt; VARIABLE_DEF
4449      *  |--MODIFIERS -&gt; MODIFIERS
4450      *  |--TYPE -&gt; TYPE
4451      *  |   |--IDENT -&gt; List
4452      *  |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
4453      *  |       |--GENERIC_START -&gt; &lt;
4454      *  |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
4455      *  |       |   `--IDENT -&gt; String
4456      *  |       `--GENERIC_END -&gt; &gt;
4457      *  |--IDENT -&gt; l
4458      *  |--ASSIGN -&gt; =
4459      *  |   `--EXPR -&gt; EXPR
4460      *  |       `--LITERAL_NEW -&gt; new
4461      *  |           |--IDENT -&gt; ArrayList
4462      *  |           |--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
4463      *  |           |   |--GENERIC_START -&gt; &lt;
4464      *  |           |   |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
4465      *  |           |   |   `--IDENT -&gt; String
4466      *  |           |   `--GENERIC_END -&gt; &gt;
4467      *  |           |--LPAREN -&gt; (
4468      *  |           |--ELIST -&gt; ELIST
4469      *  |           `--RPAREN -&gt; )
4470      *  `--SEMI -&gt; ;
4471      * </pre>
4472      *
4473      * <p>For example:</p>
4474      * <pre>
4475      * String[] strings = new String[3];
4476      * </pre>
4477      *
4478      * <p>parses as:</p>
4479      * <pre>
4480      * VARIABLE_DEF -&gt; VARIABLE_DEF
4481      *  |--MODIFIERS -&gt; MODIFIERS
4482      *  |--TYPE -&gt; TYPE
4483      *  |   |--IDENT -&gt; String
4484      *  |   `--ARRAY_DECLARATOR -&gt; [
4485      *  |       `--RBRACK -&gt; ]
4486      *  |--IDENT -&gt; strings
4487      *  |--ASSIGN -&gt; =
4488      *  |   `--EXPR -&gt; EXPR
4489      *  |       `--LITERAL_NEW -&gt; new
4490      *  |           |--IDENT -&gt; String
4491      *  |           `--ARRAY_DECLARATOR -&gt; [
4492      *  |               |--EXPR -&gt; EXPR
4493      *  |               |   `--NUM_INT -&gt; 3
4494      *  |               `--RBRACK -&gt; ]
4495      *  `--SEMI -&gt; ;
4496      * </pre>
4497      *
4498      * <p>For example:</p>
4499      * <pre>
4500      * Supplier&lt;Integer&gt; s = new Supplier&lt;&gt;() {
4501      *     &#064;Override
4502      *     public Integer get() {
4503      *         return 42;
4504      *     }
4505      * };
4506      * </pre>
4507      *
4508      * <p>parses as:</p>
4509      * <pre>
4510      * VARIABLE_DEF -&gt; VARIABLE_DEF
4511      *  |--MODIFIERS -&gt; MODIFIERS
4512      *  |--TYPE -&gt; TYPE
4513      *  |   |--IDENT -&gt; Supplier
4514      *  |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
4515      *  |       |--GENERIC_START -&gt; &lt;
4516      *  |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
4517      *  |       |   `--IDENT -&gt; Integer
4518      *  |       `--GENERIC_END -&gt; &gt;
4519      *  |--IDENT -&gt; s
4520      *  |--ASSIGN -&gt; =
4521      *  |   `--EXPR -&gt; EXPR
4522      *  |       `--LITERAL_NEW -&gt; new
4523      *  |           |--IDENT -&gt; Supplier
4524      *  |           |--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
4525      *  |           |   |--GENERIC_START -&gt; &lt;
4526      *  |           |   `--GENERIC_END -&gt; &gt;
4527      *  |           |--LPAREN -&gt; (
4528      *  |           |--ELIST -&gt; ELIST
4529      *  |           |--RPAREN -&gt; )
4530      *  |           `--OBJBLOCK -&gt; OBJBLOCK
4531      *  |               |--LCURLY -&gt; {
4532      *  |               |--METHOD_DEF -&gt; METHOD_DEF
4533      *  |               |   |--MODIFIERS -&gt; MODIFIERS
4534      *  |               |   |   |--ANNOTATION -&gt; ANNOTATION
4535      *  |               |   |   |   |--AT -&gt; @
4536      *  |               |   |   |   `--IDENT -&gt; Override
4537      *  |               |   |   `--LITERAL_PUBLIC -&gt; public
4538      *  |               |   |--TYPE -&gt; TYPE
4539      *  |               |   |   `--IDENT -&gt; Integer
4540      *  |               |   |--IDENT -&gt; get
4541      *  |               |   |--LPAREN -&gt; (
4542      *  |               |   |--PARAMETERS -&gt; PARAMETERS
4543      *  |               |   |--RPAREN -&gt; )
4544      *  |               |   `--SLIST -&gt; {
4545      *  |               |       |--LITERAL_RETURN -&gt; return
4546      *  |               |       |   |--EXPR -&gt; EXPR
4547      *  |               |       |   |   `--NUM_INT -&gt; 42
4548      *  |               |       |   `--SEMI -&gt; ;
4549      *  |               |       `--RCURLY -&gt; }
4550      *  |               `--RCURLY -&gt; }
4551      *  `--SEMI -&gt; ;
4552      * </pre>
4553      *
4554      * @see #IDENT
4555      * @see #DOT
4556      * @see #LPAREN
4557      * @see #ELIST
4558      * @see #RPAREN
4559      * @see #OBJBLOCK
4560      * @see #ARRAY_INIT
4561      * @see FullIdent
4562      **/
4563     public static final int LITERAL_NEW = JavaLanguageLexer.LITERAL_NEW;
4564     /**
4565      * An integer literal.  These may be specified in decimal,
4566      * hexadecimal, or octal form.
4567      *
4568      * <p>For example:</p>
4569      * <pre>
4570      * a = 3;
4571      * </pre>
4572      *
4573      * <p>parses as:</p>
4574      * <pre>
4575      * |--EXPR -&gt; EXPR
4576      * |   `--ASSIGN -&gt; =
4577      * |       |--IDENT -&gt; a
4578      * |       `--NUM_INT -&gt; 3
4579      * |--SEMI -&gt; ;
4580      * </pre>
4581      *
4582      * @see <a
4583      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1">Java
4584      *     Language Specification, &sect;3.10.1</a>
4585      * @see #EXPR
4586      * @see #NUM_LONG
4587      **/
4588     public static final int NUM_INT = JavaLanguageLexer.NUM_INT;
4589     /**
4590      * A character literal.  This is a (possibly escaped) character
4591      * enclosed in single quotes.
4592      *
4593      * <p>For example:</p>
4594      * <pre>
4595      * return 'a';
4596      * </pre>
4597      *
4598      * <p>parses as:</p>
4599      * <pre>
4600      * --LITERAL_RETURN -&gt; return
4601      *    |--EXPR -&gt; EXPR
4602      *    |   `--CHAR_LITERAL -&gt; 'a'
4603      *    `--SEMI -&gt; ;
4604      * </pre>
4605      *
4606      * @see <a
4607      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.4">Java
4608      *     Language Specification, &sect;3.10.4</a>
4609      * @see #EXPR
4610      **/
4611     public static final int CHAR_LITERAL =
4612         JavaLanguageLexer.CHAR_LITERAL;
4613 
4614     /**
4615      * A string literal.  This is a sequence of (possibly escaped)
4616      * characters enclosed in double quotes.
4617      *
4618      * <p>For example:</p>
4619      * <pre>String str = "StringLiteral";</pre>
4620      *
4621      * <p>parses as:</p>
4622      * <pre>
4623      *  |--VARIABLE_DEF -&gt; VARIABLE_DEF
4624      *  |   |--MODIFIERS -&gt; MODIFIERS
4625      *  |   |--TYPE -&gt; TYPE
4626      *  |   |   `--IDENT -&gt; String
4627      *  |   |--IDENT -&gt; str
4628      *  |   `--ASSIGN -&gt; =
4629      *  |       `--EXPR -&gt; EXPR
4630      *  |           `--STRING_LITERAL -&gt; "StringLiteral"
4631      *  |--SEMI -&gt; ;
4632      * </pre>
4633      *
4634      * @see <a
4635      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.5">Java
4636      *     Language Specification, &sect;3.10.5</a>
4637      * @see #EXPR
4638      **/
4639     public static final int STRING_LITERAL =
4640         JavaLanguageLexer.STRING_LITERAL;
4641 
4642     /**
4643      * A single precision floating point literal.  This is a floating
4644      * point number with an {@code F} or {@code f} suffix.
4645      *
4646      * <p>For example:</p>
4647      * <pre>
4648      * a = 3.14f;
4649      * </pre>
4650      *
4651      * <p>parses as:</p>
4652      * <pre>
4653      * |--EXPR -&gt; EXPR
4654      * |   `--ASSIGN -&gt; =
4655      * |       |--IDENT -&gt; a
4656      * |       `--NUM_FLOAT -&gt; 3.14f
4657      * |--SEMI -&gt; ;
4658      * </pre>
4659      *
4660      * @see <a
4661      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.2">Java
4662      *     Language Specification, &sect;3.10.2</a>
4663      * @see #EXPR
4664      * @see #NUM_DOUBLE
4665      **/
4666     public static final int NUM_FLOAT = JavaLanguageLexer.NUM_FLOAT;
4667     /**
4668      * A long integer literal.  These are almost the same as integer
4669      * literals, but they have an {@code L} or {@code l}
4670      * (ell) suffix.
4671      *
4672      * <p>For example:</p>
4673      * <pre>
4674      * a = 3l;
4675      * </pre>
4676      *
4677      * <p>parses as:</p>
4678      * <pre>
4679      * |--EXPR -&gt; EXPR
4680      * |   `--ASSIGN -&gt; =
4681      * |       |--IDENT -&gt; a
4682      * |       `--NUM_LONG -&gt; 3l
4683      * |--SEMI -&gt; ;
4684      * </pre>
4685      *
4686      * @see <a
4687      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.1">Java
4688      *     Language Specification, &sect;3.10.1</a>
4689      * @see #EXPR
4690      * @see #NUM_INT
4691      **/
4692     public static final int NUM_LONG = JavaLanguageLexer.NUM_LONG;
4693     /**
4694      * A double precision floating point literal.  This is a floating
4695      * point number with an optional {@code D} or {@code d}
4696      * suffix.
4697      *
4698      * <p>For example:</p>
4699      * <pre>
4700      * a = 3.14d;
4701      * </pre>
4702      *
4703      * <p>parses as:</p>
4704      * <pre>
4705      * |--EXPR -&gt; EXPR
4706      * |   `--ASSIGN -&gt; =
4707      * |       |--IDENT -&gt; a
4708      * |       `--NUM_DOUBLE -&gt; 3.14d
4709      * |--SEMI -&gt; ;
4710      * </pre>
4711      *
4712      * @see <a
4713      *     href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.10.2">Java
4714      *     Language Specification, &sect;3.10.2</a>
4715      * @see #EXPR
4716      * @see #NUM_FLOAT
4717      **/
4718     public static final int NUM_DOUBLE = JavaLanguageLexer.NUM_DOUBLE;
4719 
4720     /**
4721      * The {@code assert} keyword.  This is only for Java 1.4 and
4722      * later.
4723      *
4724      * <p>For example:</p>
4725      * <pre>
4726      * assert(x==4);
4727      * </pre>
4728      *
4729      * <p>parses as:</p>
4730      * <pre>
4731      * LITERAL_ASSERT -&gt; assert
4732      *  |--EXPR -&gt; EXPR
4733      *  |   |--LPAREN -&gt; (
4734      *  |   |--EQUAL -&gt; ==
4735      *  |   |   |--IDENT -&gt; x
4736      *  |   |   `--NUM_INT -&gt; 4
4737      *  |   `--RPAREN -&gt; )
4738      *  `--SEMI -&gt; ;
4739      * </pre>
4740      **/
4741     public static final int LITERAL_ASSERT = JavaLanguageLexer.ASSERT;
4742 
4743     /**
4744      * A static import declaration.  Static import declarations are optional,
4745      * but must appear after the package declaration and before the type
4746      * declaration.
4747      *
4748      * <p>For example:</p>
4749      * <pre>
4750      * import static java.io.IOException;
4751      * </pre>
4752      *
4753      * <p>parses as:</p>
4754      * <pre>
4755      * STATIC_IMPORT -&gt; import
4756      * |--LITERAL_STATIC -&gt; static
4757      * |--DOT -&gt; .
4758      * |   |--DOT -&gt; .
4759      * |   |   |--IDENT -&gt; java
4760      * |   |   `--IDENT -&gt; io
4761      * |   `--IDENT -&gt; IOException
4762      * `--SEMI -&gt; ;
4763      * </pre>
4764      *
4765      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
4766      *     JSR201</a>
4767      * @see #LITERAL_STATIC
4768      * @see #DOT
4769      * @see #IDENT
4770      * @see #STAR
4771      * @see #SEMI
4772      * @see FullIdent
4773      **/
4774     public static final int STATIC_IMPORT =
4775         JavaLanguageLexer.STATIC_IMPORT;
4776 
4777     /**
4778      * An enum declaration. Its notable children are
4779      * enum constant declarations followed by
4780      * any construct that may be expected in a class body.
4781      *
4782      * <p>For example:</p>
4783      * <pre>
4784      * public enum MyEnum
4785      *   implements Serializable
4786      * {
4787      *     FIRST_CONSTANT,
4788      *     SECOND_CONSTANT;
4789      *
4790      *     public void someMethod()
4791      *     {
4792      *     }
4793      * }
4794      * </pre>
4795      *
4796      * <p>parses as:</p>
4797      * <pre>
4798      * ENUM_DEF -&gt; ENUM_DEF
4799      *  |--MODIFIERS -&gt; MODIFIERS
4800      *  |   `--LITERAL_PUBLIC -&gt; public
4801      *  |--ENUM -&gt; enum
4802      *  |--IDENT -&gt; MyEnum
4803      *  |--IMPLEMENTS_CLAUSE -&gt; implements
4804      *  |   `--IDENT -&gt; Serializable
4805      *  `--OBJBLOCK -&gt; OBJBLOCK
4806      *      |--LCURLY -&gt; {
4807      *      |--ENUM_CONSTANT_DEF -&gt; ENUM_CONSTANT_DEF
4808      *      |   |--ANNOTATIONS -&gt; ANNOTATIONS
4809      *      |   `--IDENT -&gt; FIRST_CONSTANT
4810      *      |--COMMA -&gt; ,
4811      *      |--ENUM_CONSTANT_DEF -&gt; ENUM_CONSTANT_DEF
4812      *      |   |--ANNOTATIONS -&gt; ANNOTATIONS
4813      *      |   `--IDENT -&gt; SECOND_CONSTANT
4814      *      |--SEMI -&gt; ;
4815      *      |--METHOD_DEF -&gt; METHOD_DEF
4816      *      |   |--MODIFIERS -&gt; MODIFIERS
4817      *      |   |   `--LITERAL_PUBLIC -&gt; public
4818      *      |   |--TYPE -&gt; TYPE
4819      *      |   |   `--LITERAL_VOID -&gt; void
4820      *      |   |--IDENT -&gt; someMethod
4821      *      |   |--LPAREN -&gt; (
4822      *      |   |--PARAMETERS -&gt; PARAMETERS
4823      *      |   |--RPAREN -&gt; )
4824      *      |   `--SLIST -&gt; {
4825      *      |       `--RCURLY -&gt; }
4826      *      `--RCURLY -&gt; }
4827      * </pre>
4828      *
4829      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
4830      *     JSR201</a>
4831      * @see #MODIFIERS
4832      * @see #ENUM
4833      * @see #IDENT
4834      * @see #EXTENDS_CLAUSE
4835      * @see #IMPLEMENTS_CLAUSE
4836      * @see #OBJBLOCK
4837      * @see #LITERAL_NEW
4838      * @see #ENUM_CONSTANT_DEF
4839      **/
4840     public static final int ENUM_DEF =
4841         JavaLanguageLexer.ENUM_DEF;
4842 
4843     /**
4844      * The {@code enum} keyword.  This element appears
4845      * as part of an enum declaration.
4846      *
4847      * <p>For example:</p>
4848      * <pre>
4849      * public enum Count {}
4850      * </pre>
4851      *
4852      * <p>parses as:</p>
4853      * <pre>
4854      * ENUM_DEF -&gt; ENUM_DEF
4855      *  |--MODIFIERS -&gt; MODIFIERS
4856      *  |  `--LITERAL_PUBLIC -&gt; public
4857      *  |--ENUM -&gt; enum
4858      *  |--IDENT -&gt; Count
4859      *  `--OBJBLOCK -&gt; OBJBLOCK
4860      *      |--LCURLY -&gt; {
4861      *      `--RCURLY -&gt; }
4862      * </pre>
4863      *
4864      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">JSR201</a>
4865      * @see #MODIFIERS
4866      * @see #ENUM_DEF
4867      * @see #IDENT
4868      * @see #OBJBLOCK
4869      **/
4870     public static final int ENUM =
4871         JavaLanguageLexer.ENUM;
4872 
4873     /**
4874      * An enum constant declaration. Its notable children are annotations,
4875      * arguments and object block akin to an anonymous
4876      * inner class' body.
4877      *
4878      * <p>For example:</p>
4879      * <pre>
4880      * SOME_CONSTANT(1)
4881      * {
4882      *     public void someMethodOverriddenFromMainBody()
4883      *     {
4884      *     }
4885      * }
4886      * </pre>
4887      *
4888      * <p>parses as:</p>
4889      * <pre>
4890      * ENUM_CONSTANT_DEF -&gt; ENUM_CONSTANT_DEF
4891      *   |   |--ANNOTATIONS -&gt; ANNOTATIONS
4892      *   |   |--IDENT -&gt; SOME_CONSTANT
4893      *   |   |--LPAREN -&gt; (
4894      *   |   |--ELIST -&gt; ELIST
4895      *   |   |   `--EXPR -&gt; EXPR
4896      *   |   |       `--NUM_INT -&gt; 1
4897      *   |   |--RPAREN -&gt; )
4898      *   |   `--OBJBLOCK -&gt; OBJBLOCK
4899      *   |       |--LCURLY -&gt; {
4900      *   |       |--METHOD_DEF -&gt; METHOD_DEF
4901      *   |       |   |--MODIFIERS -&gt; MODIFIERS
4902      *   |       |   |   `--LITERAL_PUBLIC -&gt; public
4903      *   |       |   |--TYPE -&gt; TYPE
4904      *   |       |   |   `--LITERAL_VOID -&gt; void
4905      *   |       |   |--IDENT -&gt; someMethodOverriddenFromMainBody
4906      *   |       |   |--LPAREN -&gt; (
4907      *   |       |   |--PARAMETERS -&gt; PARAMETERS
4908      *   |       |   |--RPAREN -&gt; )
4909      *   |       |   `--SLIST -&gt; {
4910      *   |       |       `--RCURLY -&gt; }
4911      *   |       `--RCURLY -&gt; }
4912      * </pre>
4913      *
4914      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
4915      *     JSR201</a>
4916      * @see #ANNOTATIONS
4917      * @see #MODIFIERS
4918      * @see #IDENT
4919      * @see #ELIST
4920      * @see #OBJBLOCK
4921      **/
4922     public static final int ENUM_CONSTANT_DEF =
4923         JavaLanguageLexer.ENUM_CONSTANT_DEF;
4924 
4925     /**
4926      * A for-each clause.  This is a child of
4927      * {@code LITERAL_FOR}.  The children of this element may be
4928      * a parameter definition, the colon literal and an expression.
4929      *
4930      * <p>For example:</p>
4931      * <pre>
4932      * for (int value : values) {
4933      *     doSomething();
4934      * }
4935      * </pre>
4936      *
4937      * <p>parses as:</p>
4938      * <pre>
4939      * LITERAL_FOR -&gt; for
4940      *  |--LPAREN -&gt; (
4941      *  |--FOR_EACH_CLAUSE -&gt; FOR_EACH_CLAUSE
4942      *  |   |--VARIABLE_DEF -&gt; VARIABLE_DEF
4943      *  |   |   |--MODIFIERS -&gt; MODIFIERS
4944      *  |   |   |--TYPE -&gt; TYPE
4945      *  |   |   |   `--LITERAL_INT -&gt; int
4946      *  |   |   `--IDENT -&gt; value
4947      *  |   |--COLON -&gt; :
4948      *  |   `--EXPR -&gt; EXPR
4949      *  |       `--IDENT -&gt; values
4950      *  |--RPAREN -&gt; )
4951      *  `--SLIST -&gt; {
4952      *      |--EXPR -&gt; EXPR
4953      *      |   `--METHOD_CALL -&gt; (
4954      *      |       |--IDENT -&gt; doSomething
4955      *      |       |--ELIST -&gt; ELIST
4956      *      |       `--RPAREN -&gt; )
4957      *      |--SEMI -&gt; ;
4958      *      `--RCURLY -&gt; }
4959      * </pre>
4960      *
4961      * @see #VARIABLE_DEF
4962      * @see #ELIST
4963      * @see #LITERAL_FOR
4964      **/
4965     public static final int FOR_EACH_CLAUSE =
4966         JavaLanguageLexer.FOR_EACH_CLAUSE;
4967 
4968     /**
4969      * An annotation declaration. The notable children are the name of the
4970      * annotation type, annotation field declarations and (constant) fields.
4971      *
4972      * <p>For example:</p>
4973      * <pre>
4974      * public @interface MyAnnotation
4975      * {
4976      *     int someValue();
4977      * }
4978      * </pre>
4979      *
4980      * <p>parses as:</p>
4981      * <pre>
4982      * ANNOTATION_DEF -&gt; ANNOTATION_DEF
4983      *  |--MODIFIERS -&gt; MODIFIERS
4984      *  |   `--LITERAL_PUBLIC -&gt; public
4985      *  |--AT -&gt; @
4986      *  |--LITERAL_INTERFACE -&gt; interface
4987      *  |--IDENT -&gt; MyAnnotation
4988      *  `--OBJBLOCK -&gt; OBJBLOCK
4989      *      |--LCURLY -&gt; {
4990      *      |--ANNOTATION_FIELD_DEF -&gt; ANNOTATION_FIELD_DEF
4991      *      |   |--MODIFIERS -&gt; MODIFIERS
4992      *      |   |--TYPE -&gt; TYPE
4993      *      |   |   `--LITERAL_INT -&gt; int
4994      *      |   |--IDENT -&gt; someValue
4995      *      |   |--LPAREN -&gt; (
4996      *      |   |--RPAREN -&gt; )
4997      *      |   `--SEMI -&gt; ;
4998      *      `--RCURLY -&gt; }
4999      * </pre>
5000      *
5001      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5002      *     JSR201</a>
5003      * @see #MODIFIERS
5004      * @see #LITERAL_INTERFACE
5005      * @see #IDENT
5006      * @see #OBJBLOCK
5007      * @see #ANNOTATION_FIELD_DEF
5008      **/
5009     public static final int ANNOTATION_DEF =
5010         JavaLanguageLexer.ANNOTATION_DEF;
5011 
5012     /**
5013      * An annotation field declaration.  The notable children are modifiers,
5014      * field type, field name and an optional default value (a conditional
5015      * compile-time constant expression). Default values may also be
5016      * annotations.
5017      *
5018      * <p>For example:</p>
5019      *
5020      * <pre>
5021      *     String someField() default "Hello world";
5022      * </pre>
5023      *
5024      * <p>parses as:</p>
5025      *
5026      * <pre>
5027      * ANNOTATION_FIELD_DEF -&gt; ANNOTATION_FIELD_DEF
5028      *  |--MODIFIERS -&gt; MODIFIERS
5029      *  |--TYPE -&gt; TYPE
5030      *  |   `--IDENT -&gt; String
5031      *  |--IDENT -&gt; someField
5032      *  |--LPAREN -&gt; (
5033      *  |--RPAREN -&gt; )
5034      *  |--LITERAL_DEFAULT -&gt; default
5035      *  |   `--EXPR -&gt; EXPR
5036      *  |       `--STRING_LITERAL -&gt; "Hello world"
5037      *  `--SEMI -&gt; ;
5038      * </pre>
5039      *
5040      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5041      *     JSR201</a>
5042      * @see #MODIFIERS
5043      * @see #TYPE
5044      * @see #LITERAL_DEFAULT
5045      */
5046     public static final int ANNOTATION_FIELD_DEF =
5047         JavaLanguageLexer.ANNOTATION_FIELD_DEF;
5048 
5049     // note: &#064; is the html escape for '@',
5050     // used here to avoid confusing the javadoc tool
5051     /**
5052      * A collection of annotations on a package or enum constant.
5053      * A collections of annotations will only occur on these nodes
5054      * as all other nodes that may be qualified with an annotation can
5055      * be qualified with any other modifier and hence these annotations
5056      * would be contained in a {@link #MODIFIERS} node.
5057      *
5058      * <p>For example:</p>
5059      *
5060      * <pre>
5061      *     &#064;MyAnnotation package blah;
5062      * </pre>
5063      *
5064      * <p>parses as:</p>
5065      *
5066      * <pre>
5067      * PACKAGE_DEF -&gt; package
5068      *  |--ANNOTATIONS -&gt; ANNOTATIONS
5069      *  |   `--ANNOTATION -&gt; ANNOTATION
5070      *  |       |--AT -&gt; @
5071      *  |       `--IDENT -&gt; MyAnnotation
5072      *  |--IDENT -&gt; blah
5073      *  `--SEMI -&gt; ;
5074      * </pre>
5075      *
5076      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5077      *     JSR201</a>
5078      * @see #ANNOTATION
5079      * @see #AT
5080      * @see #IDENT
5081      */
5082     public static final int ANNOTATIONS =
5083         JavaLanguageLexer.ANNOTATIONS;
5084 
5085     // note: &#064; is the html escape for '@',
5086     // used here to avoid confusing the javadoc tool
5087     /**
5088      * An annotation of a package, type, field, parameter or variable.
5089      * An annotation may occur anywhere modifiers occur (it is a
5090      * type of modifier) and may also occur prior to a package definition.
5091      * The notable children are: The annotation name and either a single
5092      * default annotation value or a sequence of name value pairs.
5093      * Annotation values may also be annotations themselves.
5094      *
5095      * <p>For example:</p>
5096      * <pre>
5097      *     &#064;MyAnnotation(someField1 = "Hello",
5098      *                    someField2 = &#064;SomeOtherAnnotation)
5099      * </pre>
5100      *
5101      * <p>parses as:</p>
5102      * <pre>
5103      * ANNOTATION -&gt; ANNOTATION
5104      *  |--AT -&gt; @
5105      *  |--IDENT -&gt; MyAnnotation
5106      *  |--LPAREN -&gt; (
5107      *  |--ANNOTATION_MEMBER_VALUE_PAIR -&gt; ANNOTATION_MEMBER_VALUE_PAIR
5108      *  |   |--IDENT -&gt; someField1
5109      *  |   |--ASSIGN -&gt; =
5110      *  |   `--EXPR -&gt; EXPR
5111      *  |       `--STRING_LITERAL -&gt; "Hello"
5112      *  |--COMMA -&gt; ,
5113      *  |--ANNOTATION_MEMBER_VALUE_PAIR -&gt; ANNOTATION_MEMBER_VALUE_PAIR
5114      *  |   |--IDENT -&gt; someField2
5115      *  |   |--ASSIGN -&gt; =
5116      *  |   `--ANNOTATION -&gt; ANNOTATION
5117      *  |       |--AT -&gt; @
5118      *  |       `--IDENT -&gt; SomeOtherAnnotation
5119      *  `--RPAREN -&gt; )
5120      * </pre>
5121      *
5122      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5123      *     JSR201</a>
5124      * @see #MODIFIERS
5125      * @see #IDENT
5126      * @see #ANNOTATION_MEMBER_VALUE_PAIR
5127      */
5128     public static final int ANNOTATION =
5129         JavaLanguageLexer.ANNOTATION;
5130 
5131     /**
5132      * An initialization of an annotation member with a value.
5133      * Its children are the name of the member, the assignment literal
5134      * and the (compile-time constant conditional expression) value.
5135      *
5136      * <p>For example:</p>
5137      * <pre>
5138      * &#064;Annotation(
5139      *     value="123"
5140      * )
5141      * </pre>
5142      *
5143      * <p>parses as:</p>
5144      * <pre>
5145      * ANNOTATION -&gt; ANNOTATION
5146      *  |--AT -&gt; &#64;
5147      *  |--IDENT -&gt; Annotation
5148      *  |--LPAREN -&gt; (
5149      *  |--ANNOTATION_MEMBER_VALUE_PAIR -&gt; ANNOTATION_MEMBER_VALUE_PAIR
5150      *  |   |--IDENT -&gt; value
5151      *  |   |--ASSIGN -&gt; =
5152      *  |   `--EXPR -&gt; EXPR
5153      *  |       `--STRING_LITERAL -&gt; "123"
5154      *  `--RPAREN -&gt; )
5155      * </pre>
5156      *
5157      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5158      *     JSR201</a>
5159      * @see #ANNOTATION
5160      * @see #IDENT
5161      */
5162     public static final int ANNOTATION_MEMBER_VALUE_PAIR =
5163         JavaLanguageLexer.ANNOTATION_MEMBER_VALUE_PAIR;
5164 
5165     /**
5166      * An annotation array member initialization.
5167      * Initializers can not be nested.
5168      * An initializer may be present as a default to an annotation
5169      * member, as the single default value to an annotation
5170      * (e.g. @Annotation({1,2})) or as the value of an annotation
5171      * member value pair.
5172      *
5173      * <p>For example:</p>
5174      * <pre>
5175      * &#64;Annotation({1, 2})
5176      * </pre>
5177      *
5178      * <p>parses as:</p>
5179      * <pre>
5180      * ANNOTATION -&gt; ANNOTATION
5181      *  |--AT -&gt; &#64;
5182      *  |--IDENT -&gt; Annotation
5183      *  |--LPAREN -&gt; (
5184      *  |--ANNOTATION_ARRAY_INIT -&gt; {
5185      *  |   |--EXPR -&gt; EXPR
5186      *  |   |   `--NUM_INT -&gt; 1
5187      *  |   |--COMMA -&gt; ,
5188      *  |   |--EXPR -&gt; EXPR
5189      *  |   |   `--NUM_INT -&gt; 2
5190      *  |   `--RCURLY -&gt; }
5191      *  `--RPAREN -&gt; )
5192      * </pre>
5193      *
5194      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5195      *     JSR201</a>
5196      * @see #ANNOTATION
5197      * @see #IDENT
5198      * @see #ANNOTATION_MEMBER_VALUE_PAIR
5199      */
5200     public static final int ANNOTATION_ARRAY_INIT =
5201         JavaLanguageLexer.ANNOTATION_ARRAY_INIT;
5202 
5203     /**
5204      * A list of type parameters to a class, interface or
5205      * method definition. Children are LT, at least one
5206      * TYPE_PARAMETER, zero or more of: a COMMAs followed by a single
5207      * TYPE_PARAMETER and a final GT.
5208      *
5209      * <p>For example:</p>
5210      *
5211      * <pre>
5212      * public class MyClass&lt;A, B&gt; {
5213      *
5214      * }
5215      * </pre>
5216      *
5217      * <p>parses as:</p>
5218      *
5219      * <pre>
5220      * CLASS_DEF -&gt; CLASS_DEF
5221      * |--MODIFIERS -&gt; MODIFIERS
5222      * |   `--LITERAL_PUBLIC -&gt; public
5223      * |--LITERAL_CLASS -&gt; class
5224      * |--IDENT -&gt; MyClass
5225      * |--TYPE_PARAMETERS -&gt; TYPE_PARAMETERS
5226      * |   |--GENERIC_START -&gt; &lt;
5227      * |   |--TYPE_PARAMETER -&gt; TYPE_PARAMETER
5228      * |   |   `--IDENT -&gt; A
5229      * |   |--COMMA -&gt; ,
5230      * |   |--TYPE_PARAMETER -&gt; TYPE_PARAMETER
5231      * |   |   `--IDENT -&gt; B
5232      * |   `--GENERIC_END -&gt; &gt;
5233      * `--OBJBLOCK -&gt; OBJBLOCK
5234      *     |--LCURLY -&gt; {
5235      *     `--RCURLY -&gt; }
5236      * </pre>
5237      *
5238      * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5239      *     Generic Classes and Type Parameters</a>
5240      * @see #GENERIC_START
5241      * @see #GENERIC_END
5242      * @see #TYPE_PARAMETER
5243      * @see #COMMA
5244      */
5245     public static final int TYPE_PARAMETERS =
5246         JavaLanguageLexer.TYPE_PARAMETERS;
5247 
5248     /**
5249      * A type parameter to a class, interface or method definition.
5250      * Children are the type name and an optional TYPE_UPPER_BOUNDS.
5251      *
5252      * <p>For example:</p>
5253      *
5254      * <pre>
5255      * public class MyClass &lt;A extends Collection&gt; {
5256      *
5257      * }
5258      * </pre>
5259      *
5260      * <p>parses as:</p>
5261      *
5262      * <pre>
5263      * CLASS_DEF -&gt; CLASS_DEF
5264      * |--MODIFIERS -&gt; MODIFIERS
5265      * |   `--LITERAL_PUBLIC -&gt; public
5266      * |--LITERAL_CLASS -&gt; class
5267      * |--IDENT -&gt; MyClass
5268      * |--TYPE_PARAMETERS -&gt; TYPE_PARAMETERS
5269      * |   |--GENERIC_START -&gt; &lt;
5270      * |   |--TYPE_PARAMETER -&gt; TYPE_PARAMETER
5271      * |   |   |--IDENT -&gt; A
5272      * |   |   `--TYPE_UPPER_BOUNDS -&gt; extends
5273      * |   |       `--IDENT -&gt; Collection
5274      * |   `--GENERIC_END -&gt; &gt;
5275      * `--OBJBLOCK -&gt; OBJBLOCK
5276      *     |--LCURLY -&gt; {
5277      *     `--RCURLY -&gt; }
5278      * </pre>
5279      *
5280      * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5281      *     Generic Classes and Type Parameters</a>
5282      * @see #IDENT
5283      * @see #WILDCARD_TYPE
5284      * @see #TYPE_UPPER_BOUNDS
5285      */
5286     public static final int TYPE_PARAMETER =
5287         JavaLanguageLexer.TYPE_PARAMETER;
5288 
5289     /**
5290      * A list of type arguments to a type reference or
5291      * a method/ctor invocation. Children are GENERIC_START, at least one
5292      * TYPE_ARGUMENT, zero or more of a COMMAs followed by a single
5293      * TYPE_ARGUMENT, and a final GENERIC_END.
5294      *
5295      * <p>For example:</p>
5296      *
5297      * <pre>
5298      *     public Collection&lt;?&gt; a;
5299      * </pre>
5300      *
5301      * <p>parses as:</p>
5302      *
5303      * <pre>
5304      * VARIABLE_DEF -&gt; VARIABLE_DEF
5305      *  |--MODIFIERS -&gt; MODIFIERS
5306      *  |   `--LITERAL_PUBLIC -&gt; public
5307      *  |--TYPE -&gt; TYPE
5308      *  |   |--IDENT -&gt; Collection
5309      *  |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
5310      *  |       |--GENERIC_START -&gt; &lt;
5311      *  |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
5312      *  |       |   `--WILDCARD_TYPE -&gt; ?
5313      *  |       `--GENERIC_END -&gt; &gt;
5314      *  |--IDENT -&gt; a
5315      *  `--SEMI -&gt; ;
5316      * </pre>
5317      *
5318      * @see #GENERIC_START
5319      * @see #GENERIC_END
5320      * @see #TYPE_ARGUMENT
5321      * @see #COMMA
5322      */
5323     public static final int TYPE_ARGUMENTS =
5324         JavaLanguageLexer.TYPE_ARGUMENTS;
5325 
5326     /**
5327      * A type arguments to a type reference or a method/ctor invocation.
5328      * Children are either: type name or wildcard type with possible type
5329      * upper or lower bounds.
5330      *
5331      * <p>For example:</p>
5332      * <pre>List&lt;? super List&gt; list;</pre>
5333      *
5334      * <p>parses as:</p>
5335      * <pre>
5336      * VARIABLE_DEF -&gt; VARIABLE_DEF
5337      *  |--MODIFIERS -&gt; MODIFIERS
5338      *  |--TYPE -&gt; TYPE
5339      *  |   |--IDENT -&gt; List
5340      *  |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
5341      *  |       |--GENERIC_START -&gt; &lt;
5342      *  |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
5343      *  |       |   |--WILDCARD_TYPE -&gt; ?
5344      *  |       |   `--TYPE_LOWER_BOUNDS -&gt; super
5345      *  |       |       `--IDENT -&gt; List
5346      *  |       `--GENERIC_END -&gt; &gt;
5347      *  |--IDENT -&gt; list
5348      *  `--SEMI -&gt; ;
5349      * </pre>
5350      *
5351      * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5352      *     Generic Classes and Type Parameters</a>
5353      * @see #WILDCARD_TYPE
5354      * @see #TYPE_UPPER_BOUNDS
5355      * @see #TYPE_LOWER_BOUNDS
5356      */
5357     public static final int TYPE_ARGUMENT =
5358         JavaLanguageLexer.TYPE_ARGUMENT;
5359 
5360     /**
5361      * The type that refers to all types. This node has no children.
5362      *
5363      * <p>For example: </p>
5364      * <pre>
5365      *
5366      * List&lt;?&gt; list;
5367      * </pre>
5368      *
5369      * <p>parses as:</p>
5370      * <pre>
5371      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
5372      * |   |--MODIFIERS -&gt; MODIFIERS
5373      * |   |--TYPE -&gt; TYPE
5374      * |   |   |--IDENT -&gt; List
5375      * |   |   |`--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
5376      * |   |        |--GENERIC_START -&gt; &lt;
5377      * |   |        |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
5378      * |   |        |  `--WILDCARD_TYPE -&gt; ?
5379      * |   |        `--GENERIC_END -&gt; &gt;
5380      * |   `--IDENT -&gt; list
5381      * |--SEMI -&gt; ;
5382      * </pre>
5383      *
5384      * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5385      *     Generic Classes and Type Parameters</a>
5386      * @see #TYPE_ARGUMENT
5387      * @see #TYPE_UPPER_BOUNDS
5388      * @see #TYPE_LOWER_BOUNDS
5389      */
5390     public static final int WILDCARD_TYPE =
5391         JavaLanguageLexer.WILDCARD_TYPE;
5392 
5393     /**
5394      * An upper bounds on a wildcard type argument or type parameter.
5395      * This node has one child - the type that is being used for
5396      * the bounding.
5397      *
5398      * <p>For example:</p>
5399      * <pre>List&lt;? extends Number&gt; list;</pre>
5400      *
5401      * <p>parses as:</p>
5402      * <pre>
5403      * --VARIABLE_DEF -&gt; VARIABLE_DEF
5404      *  |--MODIFIERS -&gt; MODIFIERS
5405      *  |--TYPE -&gt; TYPE
5406      *  |   |--IDENT -&gt; List
5407      *  |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
5408      *  |       |--GENERIC_START -&gt; &lt;
5409      *  |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
5410      *  |       |   |--WILDCARD_TYPE -&gt; ?
5411      *  |       |   `--TYPE_UPPER_BOUNDS -&gt; extends
5412      *  |       |       `--IDENT -&gt; Number
5413      *  |       `--GENERIC_END -&gt; &gt;
5414      *  |--IDENT -&gt; list
5415      *  `--SEMI -&gt; ;
5416      *  </pre>
5417      *
5418      * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5419      *     Generic Classes and Type Parameters</a>
5420      * @see #TYPE_PARAMETER
5421      * @see #TYPE_ARGUMENT
5422      * @see #WILDCARD_TYPE
5423      */
5424     public static final int TYPE_UPPER_BOUNDS =
5425         JavaLanguageLexer.TYPE_UPPER_BOUNDS;
5426 
5427     /**
5428      * A lower bounds on a wildcard type argument. This node has one child
5429      *  - the type that is being used for the bounding.
5430      *
5431      *  <p>For example:</p>
5432      *  <pre>List&lt;? super Integer&gt; list;</pre>
5433      *
5434      *  <p>parses as:</p>
5435      *  <pre>
5436      *  --VARIABLE_DEF -&gt; VARIABLE_DEF
5437      *     |--MODIFIERS -&gt; MODIFIERS
5438      *     |--TYPE -&gt; TYPE
5439      *     |   |--IDENT -&gt; List
5440      *     |   `--TYPE_ARGUMENTS -&gt; TYPE_ARGUMENTS
5441      *     |       |--GENERIC_START -&gt; &lt;
5442      *     |       |--TYPE_ARGUMENT -&gt; TYPE_ARGUMENT
5443      *     |       |   |--WILDCARD_TYPE -&gt; ?
5444      *     |       |   `--TYPE_LOWER_BOUNDS -&gt; super
5445      *     |       |       `--IDENT -&gt; Integer
5446      *     |       `--GENERIC_END -&gt; &gt;
5447      *     |--IDENT -&gt; list
5448      *     `--SEMI -&gt; ;
5449      *  </pre>
5450      *
5451      * @see <a href="https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#jls-8.1.2">
5452      *     Generic Classes and Type Parameters</a>
5453      * @see #TYPE_ARGUMENT
5454      * @see #WILDCARD_TYPE
5455      */
5456     public static final int TYPE_LOWER_BOUNDS =
5457         JavaLanguageLexer.TYPE_LOWER_BOUNDS;
5458 
5459     /**
5460      * An {@code @} symbol - signifying an annotation instance or the prefix
5461      * to the interface literal signifying the definition of an annotation
5462      * declaration.
5463      *
5464      * <p>For example:</p>
5465      * <pre>
5466      * &#64;Deprecated
5467      * private int value;
5468      * </pre>
5469      *
5470      * <p>parses as:</p>
5471      * <pre>
5472      * VARIABLE_DEF -&gt; VARIABLE_DEF
5473      * |--MODIFIERS -&gt; MODIFIERS
5474      * |  |--ANNOTATION -&gt; ANNOTATION
5475      * |  |  |--AT -&gt; &#64;
5476      * |  |  `--IDENT -&gt; Deprecated
5477      * |  `--LITERAL_PRIVATE -&gt; private
5478      * |--TYPE -&gt; TYPE
5479      * |  `--LITERAL_INT -&gt; int
5480      * |--IDENT -&gt; value
5481      * `--SEMI -&gt; ;
5482      * </pre>
5483      *
5484      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5485      *     JSR201</a>
5486      */
5487     public static final int AT = JavaLanguageLexer.AT;
5488 
5489     /**
5490      * A triple dot for variable-length parameters. This token only ever occurs
5491      * in a parameter declaration immediately after the type of the parameter.
5492      *
5493      * <p>For example:</p>
5494      * <pre>
5495      *  public void myShape(int... dimension) {
5496      *
5497      *  }
5498      * </pre>
5499      *
5500      * <p>parses as:</p>
5501      * <pre>
5502      * METHOD_DEF -&gt; METHOD_DEF
5503      *   |--MODIFIERS -&gt; MODIFIERS
5504      *   |   `--LITERAL_PUBLIC -&gt; public
5505      *   |--TYPE -&gt; TYPE
5506      *   |   `--LITERAL_VOID -&gt; void
5507      *   |--IDENT -&gt; myShape
5508      *   |--LPAREN -&gt; (
5509      *   |--PARAMETERS -&gt; PARAMETERS
5510      *   |   `--PARAMETER_DEF -&gt; PARAMETER_DEF
5511      *   |       |--MODIFIERS -&gt; MODIFIERS
5512      *   |       |--TYPE -&gt; TYPE
5513      *   |       |   `--LITERAL_INT -&gt; int
5514      *   |       |--ELLIPSIS -&gt; ...
5515      *   |       `--IDENT -&gt; dimension
5516      *   |--RPAREN -&gt; )
5517      *   `--SLIST -&gt; {
5518      *       `--RCURLY -&gt; }
5519      * </pre>
5520      *
5521      * @see <a href="https://www.jcp.org/en/jsr/detail?id=201">
5522      *     JSR201</a>
5523      */
5524     public static final int ELLIPSIS = JavaLanguageLexer.ELLIPSIS;
5525 
5526     /**
5527      * The {@code &} symbol when used to extend a generic upper or lower bounds constrain
5528      * or a type cast expression with an additional interface.
5529      *
5530      * <p>Generic type bounds extension:
5531      * {@code class Comparable<T extends Serializable & CharSequence>}</p>
5532      * <pre>
5533      * CLASS_DEF -&gt; CLASS_DEF
5534      * |--MODIFIERS -&gt; MODIFIERS
5535      * |--LITERAL_CLASS -&gt; class
5536      * |--IDENT -&gt; Comparable
5537      * |--TYPE_PARAMETERS -&gt; TYPE_PARAMETERS
5538      *     |--GENERIC_START -&gt; &lt;
5539      *     |--TYPE_PARAMETER -&gt; TYPE_PARAMETER
5540      *     |   |--IDENT -&gt; T
5541      *     |   `--TYPE_UPPER_BOUNDS -&gt; extends
5542      *     |       |--IDENT -&gt; Serializable
5543      *     |       |--TYPE_EXTENSION_AND -&gt; &#38;
5544      *     |       `--IDENT -&gt; CharSequence
5545      *     `--GENERIC_END -&gt; &gt;
5546      * </pre>
5547      *
5548      * <p>Type cast extension:
5549      * {@code return (Serializable & CharSequence) null;}</p>
5550      * <pre>
5551      * --LITERAL_RETURN -&gt; return
5552      *    |--EXPR -&gt; EXPR
5553      *    |   `--TYPECAST -&gt; (
5554      *    |       |--TYPE -&gt; TYPE
5555      *    |       |   `--IDENT -&gt; Serializable
5556      *    |       |--TYPE_EXTENSION_AND -&gt; &#38;
5557      *    |       |--TYPE -&gt; TYPE
5558      *    |       |   `--IDENT -&gt; CharSequence
5559      *    |       |--RPAREN -&gt; )
5560      *    |       `--LITERAL_NULL -&gt; null
5561      *    `--SEMI -&gt; ;
5562      * </pre>
5563      *
5564      * @see #EXTENDS_CLAUSE
5565      * @see #TYPECAST
5566      * @see <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.4">
5567      *     Java Language Specification, &sect;4.4</a>
5568      * @see <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.16">
5569      *     Java Language Specification, &sect;15.16</a>
5570      */
5571     public static final int TYPE_EXTENSION_AND =
5572         JavaLanguageLexer.TYPE_EXTENSION_AND;
5573 
5574     /**
5575      * A {@code <} symbol signifying the start of type arguments or type parameters.
5576      *
5577      * <p>For example:</p>
5578      * <pre>
5579      * class Test&lt;T&gt; {}
5580      * </pre>
5581      *
5582      * <p>parses as:</p>
5583      * <pre>
5584      * CLASS_DEF -&gt; CLASS_DEF
5585      *  |--MODIFIERS -&gt; MODIFIERS
5586      *  |--LITERAL_CLASS -&gt; class
5587      *  |--IDENT -&gt; Test
5588      *  |--TYPE_PARAMETERS -&gt; TYPE_PARAMETERS
5589      *  |   |--GENERIC_START -&gt; &lt;
5590      *  |   |--TYPE_PARAMETER -&gt; TYPE_PARAMETER
5591      *  |   |   `--IDENT -&gt; T
5592      *  |   `--GENERIC_END -&gt; &gt;
5593      *  `--OBJBLOCK -&gt; OBJBLOCK
5594      *      |--LCURLY -&gt; {
5595      *      `--RCURLY -&gt; }
5596      * </pre>
5597      *
5598      * @see #MODIFIERS
5599      * @see #IDENT
5600      * @see #OBJBLOCK
5601      * @see #TYPE_PARAMETERS
5602      * @see #GENERIC_END
5603      */
5604     public static final int GENERIC_START =
5605         JavaLanguageLexer.GENERIC_START;
5606 
5607     /**
5608      * A {@code >} symbol signifying the end of type arguments or type parameters.
5609      *
5610      * <p>For example:</p>
5611      * <pre>
5612      * class Test&lt;T&gt; {}
5613      * </pre>
5614      *
5615      * <p>parses as:</p>
5616      * <pre>
5617      * CLASS_DEF -&gt; CLASS_DEF
5618      *  |--MODIFIERS -&gt; MODIFIERS
5619      *  |--LITERAL_CLASS -&gt; class
5620      *  |--IDENT -&gt; Test
5621      *  |--TYPE_PARAMETERS -&gt; TYPE_PARAMETERS
5622      *  |   |--GENERIC_START -&gt; &lt;
5623      *  |   |--TYPE_PARAMETER -&gt; TYPE_PARAMETER
5624      *  |   |   `--IDENT -&gt; T
5625      *  |   `--GENERIC_END -&gt; &gt;
5626      *  `--OBJBLOCK -&gt; OBJBLOCK
5627      *      |--LCURLY -&gt; {
5628      *      `--RCURLY -&gt; }
5629      * </pre>
5630      *
5631      * @see #MODIFIERS
5632      * @see #IDENT
5633      * @see #OBJBLOCK
5634      * @see #TYPE_PARAMETERS
5635      * @see #GENERIC_START
5636      */
5637     public static final int GENERIC_END = JavaLanguageLexer.GENERIC_END;
5638 
5639     /**
5640      * Special lambda symbol {@code ->}.
5641      *
5642      * <p>For example:</p>
5643      * <pre>
5644      * numbers.forEach((n) -&gt; System.out.println(n));
5645      * </pre>
5646      *
5647      * <p>parses as:</p>
5648      * <pre>
5649      * METHOD_CALL -&gt; (
5650      *  |--DOT -&gt; .
5651      *  |   |--IDENT -&gt; numbers
5652      *  |   `--IDENT -&gt; forEach
5653      *  |--ELIST -&gt; ELIST
5654      *  |   `--LAMBDA -&gt; -&gt;
5655      *  |       |--LPAREN -&gt; (
5656      *  |       |--PARAMETERS -&gt; PARAMETERS
5657      *  |       |   `--PARAMETER_DEF -&gt; PARAMETER_DEF
5658      *  |       |       |--MODIFIERS -&gt; MODIFIERS
5659      *  |       |       |--TYPE -&gt; TYPE
5660      *  |       |       `--IDENT -&gt; n
5661      *  |       |--RPAREN -&gt; )
5662      *  |       `--EXPR -&gt; EXPR
5663      *  |           `--METHOD_CALL -&gt; (
5664      *  |               |--DOT -&gt; .
5665      *  |               |   |--DOT -&gt; .
5666      *  |               |   |   |--IDENT -&gt; System
5667      *  |               |   |   `--IDENT -&gt; out
5668      *  |               |   `--IDENT -&gt; println
5669      *  |               |--ELIST -&gt; ELIST
5670      *  |               |   `--EXPR -&gt; EXPR
5671      *  |               |       `--IDENT -&gt; n
5672      *  |               `--RPAREN -&gt; )
5673      *  `--RPAREN -&gt; )
5674      * </pre>
5675      *
5676      */
5677     public static final int LAMBDA = JavaLanguageLexer.LAMBDA;
5678 
5679     /**
5680      * Beginning of single-line comment: '//'.
5681      *
5682      * <pre>
5683      * SINGLE_LINE_COMMENT -&gt; //
5684      *  `--COMMENT_CONTENT -&gt; \r\n
5685      * </pre>
5686      *
5687      * <p>For example:</p>
5688      * <pre>
5689      * // Comment content
5690      * </pre>
5691      *
5692      * <p>parses as:</p>
5693      * <pre>
5694      * SINGLE_LINE_COMMENT -&gt; //
5695      *  `--COMMENT_CONTENT -&gt;  Comment Content\n
5696      * </pre>
5697      */
5698     public static final int SINGLE_LINE_COMMENT =
5699             JavaLanguageLexer.SINGLE_LINE_COMMENT;
5700 
5701     /**
5702      * Beginning of block comment: '/*'.
5703      *
5704      * <p>For example:</p>
5705      * <pre>
5706      * /&#42; Comment content
5707      * &#42;/
5708      * </pre>
5709      *
5710      * <p>parses as:</p>
5711      * <pre>
5712      * --BLOCK_COMMENT_BEGIN -&gt; /&#42;
5713      *    |--COMMENT_CONTENT -&gt;  Comment content\r\n
5714      *    `--BLOCK_COMMENT_END -&gt; &#42;/
5715      * </pre>
5716      */
5717     public static final int BLOCK_COMMENT_BEGIN =
5718             JavaLanguageLexer.BLOCK_COMMENT_BEGIN;
5719 
5720     /**
5721      * End of block comment: '&#42;/'.
5722      *
5723      * <p>For example:</p>
5724      * <pre>
5725      * /&#42;comment&#42;/
5726      * </pre>
5727      *
5728      * <p>parses as:</p>
5729      * <pre>
5730      * BLOCK_COMMENT_BEGIN -&gt; /&#42;
5731      *  |--COMMENT_CONTENT -&gt; comment
5732      *  `--BLOCK_COMMENT_END -&gt; &#42;/
5733      * </pre>
5734      *
5735      */
5736     public static final int BLOCK_COMMENT_END =
5737             JavaLanguageLexer.BLOCK_COMMENT_END;
5738 
5739     /**
5740      * Text of single-line or block comment.
5741      *
5742      * <p>For example:</p>
5743      * <pre>
5744      * //this is single-line comment
5745      *
5746      * /&#42;
5747      * this is multiline comment
5748      * &#42;/
5749      * </pre>
5750      *
5751      * <p>parses as:</p>
5752      * <pre>
5753      * |--SINGLE_LINE_COMMENT -&gt; //
5754      * |   `--COMMENT_CONTENT -&gt; this is single-line comment\n
5755      * |--BLOCK_COMMENT_BEGIN -&gt; /&#42;
5756      * |   |--COMMENT_CONTENT -&gt; \n\t\t\tthis is multiline comment\n\t\t
5757      * |   `--BLOCK_COMMENT_END -&gt; &#42;/
5758      * </pre>
5759      *
5760      */
5761     public static final int COMMENT_CONTENT =
5762             JavaLanguageLexer.COMMENT_CONTENT;
5763 
5764     /**
5765      * A pattern variable definition; when conditionally matched,
5766      * this variable is assigned with the defined type.
5767      *
5768      * <p>For example:</p>
5769      * <pre>
5770      * if (obj instanceof String str) { }
5771      * </pre>
5772      *
5773      * <p>parses as:</p>
5774      * <pre>
5775      * LITERAL_IF -&gt; if
5776      *  |--LPAREN -&gt; (
5777      *  |--EXPR -&gt; EXPR
5778      *  |   `--LITERAL_INSTANCEOF -&gt; instanceof
5779      *  |       |--IDENT -&gt; obj
5780      *  |       `--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
5781      *  |           |--TYPE -&gt; TYPE
5782      *  |           |   `--IDENT -&gt; String
5783      *  |           `--IDENT -&gt; str
5784      *  |--RPAREN -&gt; )
5785      *  `--SLIST -&gt; {
5786      *      `--RCURLY -&gt; }
5787      * </pre>
5788      *
5789      * @see #LITERAL_INSTANCEOF
5790      * @since 8.35
5791      */
5792     public static final int PATTERN_VARIABLE_DEF =
5793             JavaLanguageLexer.PATTERN_VARIABLE_DEF;
5794 
5795     /**
5796      * The {@code record} keyword.  This element appears
5797      * as part of a record declaration.
5798      *
5799      * <p>For example:</p>
5800      * <pre>
5801      * public record MyRecord () {
5802      *
5803      * }
5804      * </pre>
5805      *
5806      * <p>parses as:</p>
5807      * <pre>
5808      * RECORD_DEF -&gt; RECORD_DEF
5809      * |--MODIFIERS -&gt; MODIFIERS
5810      * |   `--LITERAL_PUBLIC -&gt; public
5811      * |--LITERAL_RECORD -&gt; record
5812      * |--IDENT -&gt; MyRecord
5813      * |--LPAREN -&gt; (
5814      * |--RECORD_COMPONENTS -&gt; RECORD_COMPONENTS
5815      * |--RPAREN -&gt; )
5816      * `--OBJBLOCK -&gt; OBJBLOCK
5817      *     |--LCURLY -&gt; {
5818      *     `--RCURLY -&gt; }
5819      * </pre>
5820      *
5821      * @since 8.35
5822      **/
5823     public static final int LITERAL_RECORD =
5824             JavaLanguageLexer.LITERAL_RECORD;
5825 
5826     /**
5827      * A declaration of a record specifies a name, a header, and a body.
5828      * The header lists the components of the record, which are the variables
5829      * that make up its state.
5830      *
5831      * <p>For example:</p>
5832      * <pre>
5833      * public record MyRecord () {
5834      *
5835      * }
5836      * </pre>
5837      *
5838      * <p>parses as:</p>
5839      * <pre>
5840      * RECORD_DEF -&gt; RECORD_DEF
5841      * |--MODIFIERS -&gt; MODIFIERS
5842      * |   `--LITERAL_PUBLIC -&gt; public
5843      * |--LITERAL_RECORD -&gt; record
5844      * |--IDENT -&gt; MyRecord
5845      * |--LPAREN -&gt; (
5846      * |--RECORD_COMPONENTS -&gt; RECORD_COMPONENTS
5847      * |--RPAREN -&gt; )
5848      * `--OBJBLOCK -&gt; OBJBLOCK
5849      *     |--LCURLY -&gt; {
5850      *     `--RCURLY -&gt; }
5851      * </pre>
5852      *
5853      * @since 8.35
5854      */
5855     public static final int RECORD_DEF =
5856             JavaLanguageLexer.RECORD_DEF;
5857 
5858     /**
5859      * Record components are a (possibly empty) list containing the components of a record, which
5860      * are the variables that make up its state.
5861      *
5862      * <p>For example:</p>
5863      * <pre>
5864      * public record myRecord (Comp x, Comp y) { }
5865      * </pre>
5866      *
5867      * <p>parses as:</p>
5868      * <pre>
5869      * RECORD_DEF -&gt; RECORD_DEF
5870      *  |--MODIFIERS -&gt; MODIFIERS
5871      *  |   `--LITERAL_PUBLIC -&gt; public
5872      *  |--LITERAL_RECORD -&gt; record
5873      *  |--IDENT -&gt; myRecord
5874      *  |--LPAREN -&gt; (
5875      *  |--RECORD_COMPONENTS -&gt; RECORD_COMPONENTS
5876      *  |   |--RECORD_COMPONENT_DEF -&gt; RECORD_COMPONENT_DEF
5877      *  |   |   |--ANNOTATIONS -&gt; ANNOTATIONS
5878      *  |   |   |--TYPE -&gt; TYPE
5879      *  |   |   |   `--IDENT -&gt; Comp
5880      *  |   |   `--IDENT -&gt; x
5881      *  |   |--COMMA -&gt; ,
5882      *  |   `--RECORD_COMPONENT_DEF -&gt; RECORD_COMPONENT_DEF
5883      *  |       |--ANNOTATIONS -&gt; ANNOTATIONS
5884      *  |       |--TYPE -&gt; TYPE
5885      *  |       |   `--IDENT -&gt; Comp
5886      *  |       `--IDENT -&gt; y
5887      *  |--RPAREN -&gt; )
5888      *  `--OBJBLOCK -&gt; OBJBLOCK
5889      *      |--LCURLY -&gt; {
5890      *      `--RCURLY -&gt; }
5891      * </pre>
5892      *
5893      * @since 8.36
5894      */
5895     public static final int RECORD_COMPONENTS =
5896             JavaLanguageLexer.RECORD_COMPONENTS;
5897 
5898     /**
5899      * A record component is a variable that comprises the state of a record.  Record components
5900      * have annotations (possibly), a type definition, and an identifier.  They can also be of
5901      * variable arity ('...').
5902      *
5903      * <p>For example:</p>
5904      * <pre>
5905      * public record MyRecord(Comp x, Comp... comps) {
5906      *
5907      * }
5908      * </pre>
5909      *
5910      * <p>parses as:</p>
5911      * <pre>
5912      * RECORD_DEF -&gt; RECORD_DEF
5913      * |--MODIFIERS -&gt; MODIFIERS
5914      * |   `--LITERAL_PUBLIC -&gt; public
5915      * |--LITERAL_RECORD -&gt; record
5916      * |--IDENT -&gt; MyRecord
5917      * |--LPAREN -&gt; (
5918      * |--RECORD_COMPONENTS -&gt; RECORD_COMPONENTS
5919      * |   |--RECORD_COMPONENT_DEF -&gt; RECORD_COMPONENT_DEF
5920      * |   |   |--ANNOTATIONS -&gt; ANNOTATIONS
5921      * |   |   |--TYPE -&gt; TYPE
5922      * |   |   |   `--IDENT -&gt; Comp
5923      * |   |   `--IDENT -&gt; x
5924      * |   |--COMMA -&gt; ,
5925      * |   `--RECORD_COMPONENT_DEF -&gt; RECORD_COMPONENT_DEF
5926      * |       |--ANNOTATIONS -&gt; ANNOTATIONS
5927      * |       |--TYPE -&gt; TYPE
5928      * |       |   `--IDENT -&gt; Comp
5929      * |       |--ELLIPSIS -&gt; ...
5930      * |       `--IDENT -&gt; comps
5931      * |--RPAREN -&gt; )
5932      * `--OBJBLOCK -&gt; OBJBLOCK
5933      *     |--LCURLY -&gt; {
5934      *     `--RCURLY -&gt; }
5935      * </pre>
5936      *
5937      * @since 8.36
5938      */
5939     public static final int RECORD_COMPONENT_DEF =
5940             JavaLanguageLexer.RECORD_COMPONENT_DEF;
5941 
5942     /**
5943      * A compact canonical constructor eliminates the list of formal parameters; they are
5944      * declared implicitly.
5945      *
5946      * <p>For example:</p>
5947      * <pre>
5948      * public record myRecord () {
5949      *     public myRecord{}
5950      * }
5951      * </pre>
5952      *
5953      * <p>parses as:</p>
5954      * <pre>
5955      * RECORD_DEF
5956      * |--MODIFIERS
5957      * |   `--LITERAL_PUBLIC (public)
5958      * |--LITERAL_RECORD (record)
5959      * |--IDENT (myRecord)
5960      * |--LPAREN (()
5961      * |--RECORD_COMPONENTS
5962      * |--RPAREN ())
5963      * `--OBJBLOCK
5964      *     |--LCURLY ({)
5965      *     |--COMPACT_CTOR_DEF
5966      *     |   |--MODIFIERS
5967      *     |   |   `--LITERAL_PUBLIC (public)
5968      *     |   |--IDENT (myRecord)
5969      *     |   `--SLIST ({)
5970      *     |       `--RCURLY (})
5971      *     `--RCURLY (})
5972      * </pre>
5973      *
5974      * @since 8.36
5975      */
5976     public static final int COMPACT_CTOR_DEF =
5977             JavaLanguageLexer.COMPACT_CTOR_DEF;
5978 
5979     /**
5980      * Text blocks are a new feature added to to Java SE 15 and later
5981      * that will make writing multi-line strings much easier and cleaner.
5982      * Beginning of a Java 15 Text Block literal,
5983      * delimited by three double quotes.
5984      *
5985      * <p>For example:</p>
5986      * <pre>
5987      *         String hello = """
5988      *                 Hello, world!
5989      *                 """;
5990      * </pre>
5991      *
5992      * <p>parses as:</p>
5993      * <pre>
5994      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
5995      * |   |--MODIFIERS -&gt; MODIFIERS
5996      * |   |--TYPE -&gt; TYPE
5997      * |   |   `--IDENT -&gt; String
5998      * |   |--IDENT -&gt; hello
5999      * |   `--ASSIGN -&gt; =
6000      * |       `--EXPR -&gt; EXPR
6001      * |           `--TEXT_BLOCK_LITERAL_BEGIN -&gt; """
6002      * |               |--TEXT_BLOCK_CONTENT -&gt; \n                Hello, world!\n
6003      * |               `--TEXT_BLOCK_LITERAL_END -&gt; """
6004      * `--SEMI -&gt; ;
6005      * </pre>
6006      *
6007      * @since 8.36
6008      */
6009     public static final int TEXT_BLOCK_LITERAL_BEGIN =
6010             JavaLanguageLexer.TEXT_BLOCK_LITERAL_BEGIN;
6011 
6012     /**
6013      * Content of a Java 15 text block. This is a
6014      * sequence of characters, possibly escaped with '\'. Actual line terminators
6015      * are represented by '\n'.
6016      *
6017      * <p>For example:</p>
6018      * <pre>
6019      *         String hello = """
6020      *                 Hello, world!
6021      *                 """;
6022      * </pre>
6023      *
6024      * <p>parses as:</p>
6025      * <pre>
6026      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
6027      * |   |--MODIFIERS -&gt; MODIFIERS
6028      * |   |--TYPE -&gt; TYPE
6029      * |   |   `--IDENT -&gt; String
6030      * |   |--IDENT -&gt; hello
6031      * |   `--ASSIGN -&gt; =
6032      * |       `--EXPR -&gt; EXPR
6033      * |           `--TEXT_BLOCK_LITERAL_BEGIN -&gt; """
6034      * |               |--TEXT_BLOCK_CONTENT -&gt; \n                Hello, world!\n
6035      * |               `--TEXT_BLOCK_LITERAL_END -&gt; """
6036      * `--SEMI -&gt; ;
6037      * </pre>
6038      *
6039      * @since 8.36
6040      */
6041     public static final int TEXT_BLOCK_CONTENT =
6042             JavaLanguageLexer.TEXT_BLOCK_CONTENT;
6043 
6044     /**
6045      * End of a Java 15 text block literal, delimited by three
6046      * double quotes.
6047      *
6048      * <p>For example:</p>
6049      * <pre>
6050      *         String hello = """
6051      *                 Hello, world!
6052      *                 """;
6053      * </pre>
6054      *
6055      * <p>parses as:</p>
6056      * <pre>
6057      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
6058      * |   |--MODIFIERS -&gt; MODIFIERS
6059      * |   |--TYPE -&gt; TYPE
6060      * |   |   `--IDENT -&gt; String
6061      * |   |--IDENT -&gt; hello
6062      * |   `--ASSIGN -&gt; =
6063      * |       `--EXPR -&gt; EXPR
6064      * |           `--TEXT_BLOCK_LITERAL_BEGIN -&gt; """
6065      * |               |--TEXT_BLOCK_CONTENT -&gt; \n                Hello, world!\n
6066      * |               `--TEXT_BLOCK_LITERAL_END -&gt; """
6067      * `--SEMI -&gt; ;
6068      * </pre>
6069      *
6070      * @since 8.36
6071      */
6072     public static final int TEXT_BLOCK_LITERAL_END =
6073             JavaLanguageLexer.TEXT_BLOCK_LITERAL_END;
6074 
6075     /**
6076      * The {@code yield} keyword.  This element appears
6077      * as part of a yield statement.
6078      *
6079      * <p>For example:</p>
6080      * <pre>
6081      * int yield = 0; // not a keyword here
6082      * return switch (mode) {
6083      *    case "a", "b":
6084      *        yield 1;
6085      *    default:
6086      *        yield - 1;
6087      * };
6088      * </pre>
6089      *
6090      * <p>parses as:</p>
6091      * <pre>
6092      * |--VARIABLE_DEF -&gt; VARIABLE_DEF
6093      * |   |--MODIFIERS -&gt; MODIFIERS
6094      * |   |--TYPE -&gt; TYPE
6095      * |   |   `--LITERAL_INT -&gt; int
6096      * |   |--IDENT -&gt; yield
6097      * |   `--ASSIGN -&gt; =
6098      * |       `--EXPR -&gt; EXPR
6099      * |           `--NUM_INT -&gt; 0
6100      * |--SEMI -&gt; ;
6101      * |--LITERAL_RETURN -&gt; return
6102      * |   |--EXPR -&gt; EXPR
6103      * |   |   `--LITERAL_SWITCH -&gt; switch
6104      * |   |       |--LPAREN -&gt; (
6105      * |   |       |--EXPR -&gt; EXPR
6106      * |   |       |   `--IDENT -&gt; mode
6107      * |   |       |--RPAREN -&gt; )
6108      * |   |       |--LCURLY -&gt; {
6109      * |   |       |--CASE_GROUP -&gt; CASE_GROUP
6110      * |   |       |   |--LITERAL_CASE -&gt; case
6111      * |   |       |   |   |--EXPR -&gt; EXPR
6112      * |   |       |   |   |   `--STRING_LITERAL -&gt; "a"
6113      * |   |       |   |   |--COMMA -&gt; ,
6114      * |   |       |   |   |--EXPR -&gt; EXPR
6115      * |   |       |   |   |   `--STRING_LITERAL -&gt; "b"
6116      * |   |       |   |   `--COLON -&gt; :
6117      * |   |       |   `--SLIST -&gt; SLIST
6118      * |   |       |       `--LITERAL_YIELD -&gt; yield
6119      * |   |       |           |--EXPR -&gt; EXPR
6120      * |   |       |           |   `--NUM_INT -&gt; 1
6121      * |   |       |           `--SEMI -&gt; ;
6122      * |   |       |--CASE_GROUP -&gt; CASE_GROUP
6123      * |   |       |   |--LITERAL_DEFAULT -&gt; default
6124      * |   |       |   |   `--COLON -&gt; :
6125      * |   |       |   `--SLIST -&gt; SLIST
6126      * |   |       |       `--LITERAL_YIELD -&gt; yield
6127      * |   |       |           |--EXPR -&gt; EXPR
6128      * |   |       |           |   `--UNARY_MINUS -&gt; -
6129      * |   |       |           |       `--NUM_INT -&gt; 1
6130      * |   |       |           `--SEMI -&gt; ;
6131      * |   |       `--RCURLY -&gt; }
6132      * |   `--SEMI -&gt; ;
6133      * </pre>
6134      *
6135      *
6136      * @see #LITERAL_SWITCH
6137      * @see #CASE_GROUP
6138      * @see #SLIST
6139      * @see #SWITCH_RULE
6140      *
6141      * @see <a href="https://docs.oracle.com/javase/specs/jls/se13/preview/switch-expressions.html">
6142      *     Java Language Specification, &sect;14.21</a>
6143      *
6144      * @since 8.36
6145      */
6146     public static final int LITERAL_YIELD =
6147             JavaLanguageLexer.LITERAL_YIELD;
6148 
6149     /**
6150      * Switch Expressions.
6151      *
6152      * <p>For example:</p>
6153      * <pre>
6154      * return switch (day) {
6155      *     case SAT, SUN -&gt; "Weekend";
6156      *     default -&gt; "Working day";
6157      * };
6158      * </pre>
6159      *
6160      * <p>parses as:</p>
6161      * <pre>
6162      * LITERAL_RETURN -&gt; return
6163      *  |--EXPR -&gt; EXPR
6164      *  |   `--LITERAL_SWITCH -&gt; switch
6165      *  |       |--LPAREN -&gt; (
6166      *  |       |--EXPR -&gt; EXPR
6167      *  |       |   `--IDENT -&gt; day
6168      *  |       |--RPAREN -&gt; )
6169      *  |       |--LCURLY -&gt; {
6170      *  |       |--SWITCH_RULE -&gt; SWITCH_RULE
6171      *  |       |   |--LITERAL_CASE -&gt; case
6172      *  |       |   |   |--EXPR -&gt; EXPR
6173      *  |       |   |   |   `--IDENT -&gt; SAT
6174      *  |       |   |   |--COMMA -&gt; ,
6175      *  |       |   |   `--EXPR -&gt; EXPR
6176      *  |       |   |       `--IDENT -&gt; SUN
6177      *  |       |   |--LAMBDA -&gt; -&gt;
6178      *  |       |   |--EXPR -&gt; EXPR
6179      *  |       |   |   `--STRING_LITERAL -&gt; "Weekend"
6180      *  |       |   `--SEMI -&gt; ;
6181      *  |       |--SWITCH_RULE -&gt; SWITCH_RULE
6182      *  |       |   |--LITERAL_DEFAULT -&gt; default
6183      *  |       |   |--LAMBDA -&gt; -&gt;
6184      *  |       |   |--EXPR -&gt; EXPR
6185      *  |       |   |   `--STRING_LITERAL -&gt; "Working day"
6186      *  |       |   `--SEMI -&gt; ;
6187      *  |       `--RCURLY -&gt; }
6188      *  `--SEMI -&gt; ;
6189      * </pre>
6190      *
6191      * @see #LITERAL_CASE
6192      * @see #LITERAL_DEFAULT
6193      * @see #LITERAL_SWITCH
6194      * @see #LITERAL_YIELD
6195      *
6196      * @see <a href="https://docs.oracle.com/javase/specs/jls/se13/preview/switch-expressions.html">
6197      *     Java Language Specification, &sect;14.21</a>
6198      *
6199      * @since 8.36
6200      */
6201     public static final int SWITCH_RULE =
6202             JavaLanguageLexer.SWITCH_RULE;
6203 
6204     /**
6205      * The {@code non-sealed} keyword.  This element appears
6206      * as part of a class or interface declaration.
6207      *
6208      * <p>For example:</p>
6209      * <pre>
6210      * non-sealed class Square extends Rectangle { }
6211      * </pre>
6212      *
6213      * <p>parses as:</p>
6214      * <pre>
6215      * CLASS_DEF -&gt; CLASS_DEF
6216      * |--MODIFIERS -&gt; MODIFIERS
6217      * |   `--LITERAL_NON_SEALED -&gt; non-sealed
6218      * |--LITERAL_CLASS -&gt; class
6219      * |--IDENT -&gt; Square
6220      * |--EXTENDS_CLAUSE -&gt; extends
6221      * |   `--IDENT -&gt; Rectangle
6222      * `--OBJBLOCK -&gt; OBJBLOCK
6223      *     |--LCURLY -&gt; {
6224      *     `--RCURLY -&gt; }
6225      * </pre>
6226      *
6227      * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6228      *     Java Language Specification, &sect;8.1.1.2</a>
6229      * @see #MODIFIERS
6230      *
6231      * @since 8.42
6232      */
6233     public static final int LITERAL_NON_SEALED =
6234         JavaLanguageLexer.LITERAL_NON_SEALED;
6235 
6236     /**
6237      * The {@code sealed} restricted identifier.  This element appears
6238      * as part of a class or interface declaration.
6239      *
6240      * <p>For example:</p>
6241      * <pre>
6242      * public sealed class Shape permits Circle, Square, Rectangle { }
6243      * </pre>
6244      *
6245      * <p>parses as:</p>
6246      * <pre>
6247      * CLASS_DEF -&gt; CLASS_DEF
6248      * |--MODIFIERS -&gt; MODIFIERS
6249      * |   |--LITERAL_PUBLIC -&gt; public
6250      * |   `--LITERAL_SEALED -&gt; sealed
6251      * |--LITERAL_CLASS -&gt; class
6252      * |--IDENT -&gt; Shape
6253      * |--PERMITS_CLAUSE -&gt; permits
6254      * |   |--IDENT -&gt; Circle
6255      * |   |--COMMA -&gt; ,
6256      * |   |--IDENT -&gt; Square
6257      * |   |--COMMA -&gt; ,
6258      * |   `--IDENT -&gt; Rectangle
6259      * `--OBJBLOCK -&gt; OBJBLOCK
6260      *     |--LCURLY -&gt; {
6261      *     `--RCURLY -&gt; }
6262      * </pre>
6263      *
6264      * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6265      *     Java Language Specification, &sect;8.1.1.2</a>
6266      * @see #MODIFIERS
6267      *
6268      * @since 8.42
6269      */
6270     public static final int LITERAL_SEALED =
6271         JavaLanguageLexer.LITERAL_SEALED;
6272 
6273     /**
6274      * The {@code permits} restricted identifier.  This element appears
6275      * as part of a class or interface declaration.
6276      *
6277      * <p>For example:</p>
6278      * <pre>
6279      * public sealed class Shape permits Circle, Square, Rectangle { }
6280      * </pre>
6281      *
6282      * <p>parses as:</p>
6283      * <pre>
6284      * CLASS_DEF -&gt; CLASS_DEF
6285      * |--MODIFIERS -&gt; MODIFIERS
6286      * |   |--LITERAL_PUBLIC -&gt; public
6287      * |   `--LITERAL_SEALED -&gt; sealed
6288      * |--LITERAL_CLASS -&gt; class
6289      * |--IDENT -&gt; Shape
6290      * |--PERMITS_CLAUSE -&gt; permits
6291      * |   |--IDENT -&gt; Circle
6292      * |   |--COMMA -&gt; ,
6293      * |   |--IDENT -&gt; Square
6294      * |   |--COMMA -&gt; ,
6295      * |   `--IDENT -&gt; Rectangle
6296      * `--OBJBLOCK -&gt; OBJBLOCK
6297      *     |--LCURLY -&gt; {
6298      *     `--RCURLY -&gt; }
6299      * </pre>
6300      *
6301      * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6302      *     Java Language Specification, &sect;9.1.4</a>
6303      * @see #MODIFIERS
6304      *
6305      * @since 8.42
6306      */
6307     public static final int LITERAL_PERMITS =
6308         JavaLanguageLexer.LITERAL_PERMITS;
6309 
6310     /**
6311      * A permits clause.  A permits clause's children are a comma separated list of one or
6312      * more identifiers.
6313      *
6314      * <p>For example:</p>
6315      * <pre>
6316      * public sealed class Shape permits Circle, Square, Rectangle { }
6317      * </pre>
6318      *
6319      * <p>parses as:</p>
6320      * <pre>
6321      * CLASS_DEF -&gt; CLASS_DEF
6322      * |--MODIFIERS -&gt; MODIFIERS
6323      * |   |--LITERAL_PUBLIC -&gt; public
6324      * |   `--LITERAL_SEALED -&gt; sealed
6325      * |--LITERAL_CLASS -&gt; class
6326      * |--IDENT -&gt; Shape
6327      * |--PERMITS_CLAUSE -&gt; permits
6328      * |   |--IDENT -&gt; Circle
6329      * |   |--COMMA -&gt; ,
6330      * |   |--IDENT -&gt; Square
6331      * |   |--COMMA -&gt; ,
6332      * |   `--IDENT -&gt; Rectangle
6333      * `--OBJBLOCK -&gt; OBJBLOCK
6334      *     |--LCURLY -&gt; {
6335      *     `--RCURLY -&gt; }
6336      * </pre>
6337      *
6338      * @see <a href="https://docs.oracle.com/en/java/javase/15/docs/specs/sealed-classes-jls.html">
6339      *     Java Language Specification, &sect;9.1.4</a>
6340      * @see #MODIFIERS
6341      * @see #CLASS_DEF
6342      * @see #INTERFACE_DEF
6343      * @see #COMMA
6344      * @see #IDENT
6345      *
6346      * @since 8.42
6347      */
6348     public static final int PERMITS_CLAUSE =
6349         JavaLanguageLexer.PERMITS_CLAUSE;
6350 
6351     /**
6352      * A pattern definition, excluding simple type pattern (pattern variable)
6353      * definition such as {@code if (o instanceof Integer i){}}. Pattern definitions
6354      * appear as operands of statements and expressions.
6355      *
6356      * <p>For example:</p>
6357      * <pre>
6358      * switch(o) {
6359      *     case String s when s.length() &gt; 4: // guarded pattern, `PATTERN_DEF`
6360      *         break;
6361      *     case String s: // type pattern, no `PATTERN_DEF`
6362      *         break;
6363      * }
6364      * </pre>
6365      *
6366      * <p>parses as:</p>
6367      * <pre>
6368      * LITERAL_SWITCH -&gt; switch
6369      * |   |--LPAREN -&gt; (
6370      * |   |--EXPR -&gt; EXPR
6371      * |   |   `--IDENT -&gt; o
6372      * |   |--RPAREN -&gt; )
6373      * |   |--LCURLY -&gt; {
6374      * |   |--CASE_GROUP -&gt; CASE_GROUP
6375      * |   |   |--LITERAL_CASE -&gt; case
6376      * |   |   |   |--PATTERN_DEF -&gt; PATTERN_DEF
6377      * |   |   |   |   `--LITERAL_WHEN -&gt; when
6378      * |   |   |   |       |--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6379      * |   |   |   |       |   |--MODIFIERS -&gt; MODIFIERS
6380      * |   |   |   |       |   |--TYPE -&gt; TYPE
6381      * |   |   |   |       |   |   `--IDENT -&gt; String
6382      * |   |   |   |       |   `--IDENT -&gt; s
6383      * |   |   |   |       `--GT -&gt; &gt;
6384      * |   |   |   |           |--METHOD_CALL -&gt; (
6385      * |   |   |   |           |   |--DOT -&gt; .
6386      * |   |   |   |           |   |   |--IDENT -&gt; s
6387      * |   |   |   |           |   |   `--IDENT -&gt; length
6388      * |   |   |   |           |   |--ELIST -&gt; ELIST
6389      * |   |   |   |           |   `--RPAREN -&gt; )
6390      * |   |   |   |           `--NUM_INT -&gt; 4
6391      * |   |   |   `--COLON -&gt; :
6392      * |   |   `--SLIST -&gt; SLIST
6393      * |   |       `--LITERAL_BREAK -&gt; break
6394      * |   |           `--SEMI -&gt; ;
6395      * |   |--CASE_GROUP -&gt; CASE_GROUP
6396      * |   |   |--LITERAL_CASE -&gt; case
6397      * |   |   |   |--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6398      * |   |   |   |   |--MODIFIERS -&gt; MODIFIERS
6399      * |   |   |   |   |--TYPE -&gt; TYPE
6400      * |   |   |   |   |   `--IDENT -&gt; String
6401      * |   |   |   |   `--IDENT -&gt; s
6402      * |   |   |   `--COLON -&gt; :
6403      * |   |   `--SLIST -&gt; SLIST
6404      * |   |       `--LITERAL_BREAK -&gt; break
6405      * |   |           `--SEMI -&gt; ;
6406      * |   `--RCURLY -&gt; }
6407      * `--RCURLY -&gt; }
6408      * </pre>
6409      *
6410      * @see <a href="https://docs.oracle.com/javase/specs/jls/se17/html/jls-14.html#jls-14.30">
6411      *     Java Language Specification, &sect;14.30</a>
6412      * @see #LITERAL_SWITCH
6413      * @see #PATTERN_VARIABLE_DEF
6414      * @see #LITERAL_INSTANCEOF
6415      *
6416      * @since 9.3
6417      */
6418     public static final int PATTERN_DEF =
6419         JavaLanguageLexer.PATTERN_DEF;
6420 
6421     /**
6422      * A {@code when} clause. Appears as part of a switch label in a guarded pattern definition.
6423      *
6424      * <p>For example:</p>
6425      * <pre>
6426      * return switch (o) {
6427      *     case Integer i when i &gt;= 0 -&gt; i;
6428      *     default -&gt; 2;
6429      * };
6430      * </pre>
6431      *
6432      * <p>parses as:</p>
6433      * <pre>
6434      * LITERAL_RETURN -&gt; return
6435      *  `--EXPR -&gt; EXPR
6436      *      `--LITERAL_SWITCH -&gt; switch
6437      *          |--LPAREN -&gt; (
6438      *          |--EXPR -&gt; EXPR
6439      *          |   `--IDENT -&gt; o
6440      *          |--RPAREN -&gt; )
6441      *          |--LCURLY -&gt; {
6442      *          |--SWITCH_RULE -&gt; SWITCH_RULE
6443      *          |   |--LITERAL_CASE -&gt; case
6444      *          |   |   `--PATTERN_DEF -&gt; PATTERN_DEF
6445      *          |   |       `--LITERAL_WHEN -&gt; when
6446      *          |   |           |--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6447      *          |   |           |   |--MODIFIERS -&gt; MODIFIERS
6448      *          |   |           |   |--TYPE -&gt; TYPE
6449      *          |   |           |   |   `--IDENT -&gt; Integer
6450      *          |   |           |   `--IDENT -&gt; i
6451      *          |   |           `--GE -&gt; &gt;=
6452      *          |   |               |--IDENT -&gt; i
6453      *          |   |               `--NUM_INT -&gt; 0
6454      *          |   |--LAMBDA -&gt; -&gt;
6455      *          |   |--EXPR -&gt; EXPR
6456      *          |   |   `--IDENT -&gt; i
6457      *          |   `--SEMI -&gt; ;
6458      *          |--SWITCH_RULE -&gt; SWITCH_RULE
6459      *          |   |--LITERAL_DEFAULT -&gt; default
6460      *          |   |--LAMBDA -&gt; -&gt;
6461      *          |   |--EXPR -&gt; EXPR
6462      *          |   |   `--NUM_INT -&gt; 2
6463      *          |   `--SEMI -&gt; ;
6464      *          `--RCURLY -&gt; }
6465      * </pre>
6466      *
6467      * @see <a href="https://docs.oracle.com/javase/specs/jls/se17/html/jls-14.html#jls-14.30">
6468      *     Java Language Specification, &sect;14.30</a>
6469      * @see #LITERAL_SWITCH
6470      * @see #PATTERN_VARIABLE_DEF
6471      * @see #LITERAL_INSTANCEOF
6472      * @see #SWITCH_RULE
6473      *
6474      * @since 10.7.0
6475      */
6476     public static final int LITERAL_WHEN =
6477         JavaLanguageLexer.LITERAL_WHEN;
6478 
6479     /**
6480      * A {@code record} pattern definition. A record pattern consists of a type,
6481      * a (possibly empty) record component pattern list which is used to match against
6482      * the corresponding record components, and an optional identifier. Appears as part of
6483      * an {@code instanceof} expression or a {@code case} label in a switch.
6484      *
6485      * <p>For example:</p>
6486      * <pre>
6487      * record R(Object o){}
6488      * if (o instanceof R(String s) myRecord) {}
6489      * switch (o) {
6490      *     case R(String s) myRecord -&gt; {}
6491      * }
6492      * </pre>
6493      *
6494      * <p>parses as:</p>
6495      * <pre>
6496      * |--RECORD_DEF -&gt; RECORD_DEF
6497      * |   |--MODIFIERS -&gt; MODIFIERS
6498      * |   |--LITERAL_RECORD -&gt; record
6499      * |   |--IDENT -&gt; R
6500      * |   |--LPAREN -&gt; (
6501      * |   |--RECORD_COMPONENTS -&gt; RECORD_COMPONENTS
6502      * |   |   `--RECORD_COMPONENT_DEF -&gt; RECORD_COMPONENT_DEF
6503      * |   |       |--ANNOTATIONS -&gt; ANNOTATIONS
6504      * |   |       |--TYPE -&gt; TYPE
6505      * |   |       |   `--IDENT -&gt; Object
6506      * |   |       `--IDENT -&gt; o
6507      * |   |--RPAREN -&gt; )
6508      * |   `--OBJBLOCK -&gt; OBJBLOCK
6509      * |       |--LCURLY -&gt; {
6510      * |       `--RCURLY -&gt; }
6511      * |--LITERAL_IF -&gt; if
6512      * |   |--LPAREN -&gt; (
6513      * |   |--EXPR -&gt; EXPR
6514      * |   |   `--LITERAL_INSTANCEOF -&gt; instanceof
6515      * |   |       |--IDENT -&gt; o
6516      * |   |       `--RECORD_PATTERN_DEF -&gt; RECORD_PATTERN_DEF
6517      * |   |           |--MODIFIERS -&gt; MODIFIERS
6518      * |   |           |--TYPE -&gt; TYPE
6519      * |   |           |   `--IDENT -&gt; R
6520      * |   |           |--LPAREN -&gt; (
6521      * |   |           |--RECORD_PATTERN_COMPONENTS -&gt; RECORD_PATTERN_COMPONENTS
6522      * |   |           |   `--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6523      * |   |           |       |--MODIFIERS -&gt; MODIFIERS
6524      * |   |           |       |--TYPE -&gt; TYPE
6525      * |   |           |       |   `--IDENT -&gt; String
6526      * |   |           |       `--IDENT -&gt; s
6527      * |   |           |--RPAREN -&gt; )
6528      * |   |           `--IDENT -&gt; myRecord
6529      * |   |--RPAREN -&gt; )
6530      * |   `--SLIST -&gt; {
6531      * |       `--RCURLY -&gt; }
6532      * |--LITERAL_SWITCH -&gt; switch
6533      * |   |--LPAREN -&gt; (
6534      * |   |--EXPR -&gt; EXPR
6535      * |   |   `--IDENT -&gt; o
6536      * |   |--RPAREN -&gt; )
6537      * |   |--LCURLY -&gt; {
6538      * |   |--SWITCH_RULE -&gt; SWITCH_RULE
6539      * |   |   |--LITERAL_CASE -&gt; case
6540      * |   |   |   `--RECORD_PATTERN_DEF -&gt; RECORD_PATTERN_DEF
6541      * |   |   |       |--MODIFIERS -&gt; MODIFIERS
6542      * |   |   |       |--TYPE -&gt; TYPE
6543      * |   |   |       |   `--IDENT -&gt; R
6544      * |   |   |       |--LPAREN -&gt; (
6545      * |   |   |       |--RECORD_PATTERN_COMPONENTS -&gt; RECORD_PATTERN_COMPONENTS
6546      * |   |   |       |   `--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6547      * |   |   |       |       |--MODIFIERS -&gt; MODIFIERS
6548      * |   |   |       |       |--TYPE -&gt; TYPE
6549      * |   |   |       |       |   `--IDENT -&gt; String
6550      * |   |   |       |       `--IDENT -&gt; s
6551      * |   |   |       |--RPAREN -&gt; )
6552      * |   |   |       `--IDENT -&gt; myRecord
6553      * |   |   |--LAMBDA -&gt; -&gt;
6554      * |   |   `--SLIST -&gt; {
6555      * |   |       `--RCURLY -&gt; }
6556      * |   `--RCURLY -&gt; }
6557      * `--RCURLY -&gt; }
6558      * </pre>
6559      *
6560      * @see <a href="https://openjdk.org/jeps/405">JEP 405: Record Patterns</a>
6561      * @see #LITERAL_WHEN
6562      * @see #PATTERN_VARIABLE_DEF
6563      * @see #LITERAL_INSTANCEOF
6564      * @see #SWITCH_RULE
6565      *
6566      * @since 10.12.0
6567      */
6568     public static final int RECORD_PATTERN_DEF =
6569         JavaLanguageLexer.RECORD_PATTERN_DEF;
6570 
6571     /**
6572      * A (possibly empty) record component pattern list which is used to match against
6573      * the corresponding record components. Appears as part of a record pattern definition.
6574      *
6575      * <p>For example:</p>
6576      * <pre>
6577      * record R(Object o){}
6578      * if (o instanceof R(String myComponent)) {}
6579      * switch (o) {
6580      *     case R(String myComponent) when "component".equalsIgnoreCase(myComponent) -&gt; {}
6581      * }
6582      * </pre>
6583      *
6584      * <p>parses as:</p>
6585      * <pre>
6586      * |--RECORD_DEF -&gt; RECORD_DEF
6587      * |   |--MODIFIERS -&gt; MODIFIERS
6588      * |   |--LITERAL_RECORD -&gt; record
6589      * |   |--IDENT -&gt; R
6590      * |   |--LPAREN -&gt; (
6591      * |   |--RECORD_COMPONENTS -&gt; RECORD_COMPONENTS
6592      * |   |   `--RECORD_COMPONENT_DEF -&gt; RECORD_COMPONENT_DEF
6593      * |   |       |--ANNOTATIONS -&gt; ANNOTATIONS
6594      * |   |       |--TYPE -&gt; TYPE
6595      * |   |       |   `--IDENT -&gt; Object
6596      * |   |       `--IDENT -&gt; o
6597      * |   |--RPAREN -&gt; )
6598      * |   `--OBJBLOCK -&gt; OBJBLOCK
6599      * |       |--LCURLY -&gt; {
6600      * |       `--RCURLY -&gt; }
6601      * |--LITERAL_IF -&gt; if
6602      * |   |--LPAREN -&gt; (
6603      * |   |--EXPR -&gt; EXPR
6604      * |   |   `--LITERAL_INSTANCEOF -&gt; instanceof
6605      * |   |       |--IDENT -&gt; o
6606      * |   |       `--RECORD_PATTERN_DEF -&gt; RECORD_PATTERN_DEF
6607      * |   |           |--MODIFIERS -&gt; MODIFIERS
6608      * |   |           |--TYPE -&gt; TYPE
6609      * |   |           |   `--IDENT -&gt; R
6610      * |   |           |--LPAREN -&gt; (
6611      * |   |           |--RECORD_PATTERN_COMPONENTS -&gt; RECORD_PATTERN_COMPONENTS
6612      * |   |           |   `--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6613      * |   |           |       |--MODIFIERS -&gt; MODIFIERS
6614      * |   |           |       |--TYPE -&gt; TYPE
6615      * |   |           |       |   `--IDENT -&gt; String
6616      * |   |           |       `--IDENT -&gt; myComponent
6617      * |   |           `--RPAREN -&gt; )
6618      * |   |--RPAREN -&gt; )
6619      * |   `--SLIST -&gt; {
6620      * |       `--RCURLY -&gt; }
6621      * |--LITERAL_SWITCH -&gt; switch
6622      * |   |--LPAREN -&gt; (
6623      * |   |--EXPR -&gt; EXPR
6624      * |   |   `--IDENT -&gt; o
6625      * |   |--RPAREN -&gt; )
6626      * |   |--LCURLY -&gt; {
6627      * |   |--SWITCH_RULE -&gt; SWITCH_RULE
6628      * |   |   |--LITERAL_CASE -&gt; case
6629      * |   |   |   `--PATTERN_DEF -&gt; PATTERN_DEF
6630      * |   |   |       `--LITERAL_WHEN -&gt; when
6631      * |   |   |           |--RECORD_PATTERN_DEF -&gt; RECORD_PATTERN_DEF
6632      * |   |   |           |   |--MODIFIERS -&gt; MODIFIERS
6633      * |   |   |           |   |--TYPE -&gt; TYPE
6634      * |   |   |           |   |   `--IDENT -&gt; R
6635      * |   |   |           |   |--LPAREN -&gt; (
6636      * |   |   |           |   |--RECORD_PATTERN_COMPONENTS -&gt; RECORD_PATTERN_COMPONENTS
6637      * |   |   |           |   |   `--PATTERN_VARIABLE_DEF -&gt; PATTERN_VARIABLE_DEF
6638      * |   |   |           |   |       |--MODIFIERS -&gt; MODIFIERS
6639      * |   |   |           |   |       |--TYPE -&gt; TYPE
6640      * |   |   |           |   |       |   `--IDENT -&gt; String
6641      * |   |   |           |   |       `--IDENT -&gt; myComponent
6642      * |   |   |           |   `--RPAREN -&gt; )
6643      * |   |   |           `--METHOD_CALL -&gt; (
6644      * |   |   |               |--DOT -&gt; .
6645      * |   |   |               |   |--STRING_LITERAL -&gt; "component"
6646      * |   |   |               |   `--IDENT -&gt; equalsIgnoreCase
6647      * |   |   |               |--ELIST -&gt; ELIST
6648      * |   |   |               |   `--EXPR -&gt; EXPR
6649      * |   |   |               |       `--IDENT -&gt; myComponent
6650      * |   |   |               `--RPAREN -&gt; )
6651      * |   |   |--LAMBDA -&gt; -&gt;
6652      * |   |   `--SLIST -&gt; {
6653      * |   |       `--RCURLY -&gt; }
6654      * |   `--RCURLY -&gt; }
6655      * `--RCURLY -&gt; }
6656      * </pre>
6657      *
6658      * @see <a href="https://openjdk.org/jeps/405">JEP 405: Record Patterns</a>
6659      * @see #LITERAL_WHEN
6660      * @see #PATTERN_VARIABLE_DEF
6661      * @see #LITERAL_INSTANCEOF
6662      * @see #SWITCH_RULE
6663      *
6664      * @since 10.12.0
6665      */
6666     public static final int RECORD_PATTERN_COMPONENTS =
6667             JavaLanguageLexer.RECORD_PATTERN_COMPONENTS;
6668 
6669     /**
6670      * An unnamed pattern variable definition. Appears as part of a pattern definition.
6671      *
6672      * <p>For example:</p>
6673      * <pre>
6674      *    if (r instanceof R(_)) {}
6675      * </pre>
6676      *
6677      * <p>parses as:</p>
6678      * <pre>
6679      * LITERAL_IF -&gt; if
6680      *  |--LPAREN -&gt; (
6681      *  |--EXPR -&gt; EXPR
6682      *  |   `--LITERAL_INSTANCEOF -&gt; instanceof
6683      *  |       |--IDENT -&gt; r
6684      *  |       `--RECORD_PATTERN_DEF -&gt; RECORD_PATTERN_DEF
6685      *  |           |--MODIFIERS -&gt; MODIFIERS
6686      *  |           |--TYPE -&gt; TYPE
6687      *  |           |   `--IDENT -&gt; R
6688      *  |           |--LPAREN -&gt; (
6689      *  |           |--RECORD_PATTERN_COMPONENTS -&gt; RECORD_PATTERN_COMPONENTS
6690      *  |           |   `--UNNAMED_PATTERN_DEF -&gt; _
6691      *  |           `--RPAREN -&gt; )
6692      *  |--RPAREN -&gt; )
6693      *  `--SLIST -&gt; {
6694      *      `--RCURLY -&gt; }
6695      * </pre>
6696      *
6697      * @see #RECORD_PATTERN_COMPONENTS
6698      * @see #RECORD_PATTERN_DEF
6699      * @see #LITERAL_SWITCH
6700      * @see #LITERAL_INSTANCEOF
6701      * @see #SWITCH_RULE
6702      * @see #LITERAL_WHEN
6703      * @see #PATTERN_VARIABLE_DEF
6704      * @see #PATTERN_DEF
6705      *
6706      * @since 10.14.0
6707      */
6708     public static final int UNNAMED_PATTERN_DEF =
6709             JavaLanguageLexer.UNNAMED_PATTERN_DEF;
6710 
6711     /**
6712      * A {@code module} keyword.
6713      *
6714      * <p>For example:</p>
6715      * <pre>
6716      * import module java.base;
6717      * </pre>
6718      *
6719      * <p>parses as:</p>
6720      * <pre>
6721      * MODULE_IMPORT -> import
6722      *  |--LITERAL_MODULE -> module
6723      *  |--DOT -> .
6724      *  |   |--IDENT -> java
6725      *  |   `--IDENT -> base
6726      *  `--SEMI -> ;
6727      * </pre>
6728      *
6729      * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.5.5">
6730      *     Java Language Specification, &sect;7.5.5</a>
6731      * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.7">
6732      *     Java Language Specification, &sect;7.7</a>
6733      * @see #IMPORT
6734      * @see #MODULE_IMPORT
6735      *
6736      * @since 12.2.0
6737      */
6738     public static final int LITERAL_MODULE = JavaLanguageLexer.LITERAL_MODULE;
6739 
6740     /**
6741      * A module import declaration - {@code import module}.
6742      *
6743      * <p>For example:</p>
6744      * <pre>
6745      * import module java.base;
6746      * </pre>
6747      *
6748      * <p>parses as:</p>
6749      * <pre>
6750      * MODULE_IMPORT -> import
6751      *  |--LITERAL_MODULE -> module
6752      *  |--DOT -> .
6753      *  |   |--IDENT -> java
6754      *  |   `--IDENT -> base
6755      *  `--SEMI -> ;
6756      * </pre>
6757      *
6758      * @see <a href="https://docs.oracle.com/javase/specs/jls/se25/html/jls-7.html#jls-7.5.5">
6759      *     Java Language Specification, &sect;7.5.5</a>
6760      * @see #IMPORT
6761      * @see #LITERAL_MODULE
6762      *
6763      * @since 12.2.0
6764      */
6765     public static final int MODULE_IMPORT = JavaLanguageLexer.MODULE_IMPORT;
6766 
6767     /** Prevent instantiation. */
6768     private TokenTypes() {
6769     }
6770 
6771 }