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