JAVADOC_CONTENT -> JAVADOC_CONTENT [0:1]
|--LEADING_ASTERISK -> * [0:1]
|--TEXT ->  Demonstration of "snippet" tag usage in various forms. [0:2]
|--NEWLINE -> \n [0:57]
|--LEADING_ASTERISK -> * [1:1]
|--NEWLINE -> \n [1:2]
|--LEADING_ASTERISK -> * [2:1]
|--TEXT ->  ✅ 1. Basic usage – external file: [2:2]
|--NEWLINE -> \n [2:36]
|--LEADING_ASTERISK -> * [3:1]
|--TEXT ->   [3:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [3:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [3:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [3:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [3:12]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [3:12]
|       |       |--TEXT ->   [3:12]
|       |       |--SNIPPET_ATTR_NAME -> file [3:13]
|       |       |--EQUALS -> = [3:17]
|       |       `--ATTRIBUTE_VALUE -> "Example.java" [3:18]
|       `--JAVADOC_INLINE_TAG_END -> } [3:32]
|--NEWLINE -> \n [3:33]
|--LEADING_ASTERISK -> * [4:1]
|--NEWLINE -> \n [4:2]
|--LEADING_ASTERISK -> * [5:1]
|--TEXT ->  ✅ 2. Inline code body : [5:2]
|--NEWLINE -> \n [5:26]
|--LEADING_ASTERISK -> * [6:1]
|--TEXT ->   [6:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [6:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [6:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [6:3]
|       |--COLON -> : [6:13]
|       |--SNIPPET_BODY -> SNIPPET_BODY [6:14]
|       |   |--NEWLINE -> \n [6:14]
|       |   |--LEADING_ASTERISK -> * [7:1]
|       |   |--TEXT ->      System.out.println("Hello, world!"); [7:2]
|       |   |--NEWLINE -> \n [7:43]
|       |   |--LEADING_ASTERISK -> * [8:1]
|       |   `--TEXT ->   [8:2]
|       `--JAVADOC_INLINE_TAG_END -> } [8:3]
|--NEWLINE -> \n [8:4]
|--LEADING_ASTERISK -> * [9:1]
|--NEWLINE -> \n [9:2]
|--LEADING_ASTERISK -> * [10:1]
|--TEXT ->  ✅ 3. With multiple attributes: [10:2]
|--NEWLINE -> \n [10:33]
|--LEADING_ASTERISK -> * [11:1]
|--TEXT ->   [11:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [11:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [11:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [11:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [11:12]
|       |   |--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [11:12]
|       |   |   |--TEXT ->   [11:12]
|       |   |   |--SNIPPET_ATTR_NAME -> lang [11:13]
|       |   |   |--EQUALS -> = [11:17]
|       |   |   `--ATTRIBUTE_VALUE -> java  [11:18]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [11:23]
|       |       |--SNIPPET_ATTR_NAME -> class [11:23]
|       |       |--EQUALS -> = [11:28]
|       |       `--ATTRIBUTE_VALUE -> highlighted  [11:29]
|       |--COLON -> : [11:41]
|       |--SNIPPET_BODY -> SNIPPET_BODY [11:42]
|       |   |--NEWLINE -> \n [11:42]
|       |   |--LEADING_ASTERISK -> * [12:1]
|       |   |--TEXT ->      int result = Math.addExact(1, 2); [12:2]
|       |   |--NEWLINE -> \n [12:40]
|       |   |--LEADING_ASTERISK -> * [13:1]
|       |   `--TEXT ->   [13:2]
|       `--JAVADOC_INLINE_TAG_END -> } [13:3]
|--NEWLINE -> \n [13:4]
|--LEADING_ASTERISK -> * [14:1]
|--NEWLINE -> \n [14:2]
|--LEADING_ASTERISK -> * [15:1]
|--TEXT ->  ✅ 4. File with region attribute (external code block): [15:2]
|--NEWLINE -> \n [15:57]
|--LEADING_ASTERISK -> * [16:1]
|--TEXT ->   [16:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [16:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [16:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [16:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [16:12]
|       |   |--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [16:12]
|       |   |   |--TEXT ->   [16:12]
|       |   |   |--SNIPPET_ATTR_NAME -> file [16:13]
|       |   |   |--EQUALS -> = [16:17]
|       |   |   `--ATTRIBUTE_VALUE -> "Calculator.java" [16:18]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [16:35]
|       |       |--TEXT ->   [16:35]
|       |       |--SNIPPET_ATTR_NAME -> region [16:36]
|       |       |--EQUALS -> = [16:42]
|       |       `--ATTRIBUTE_VALUE -> addMethod [16:43]
|       `--JAVADOC_INLINE_TAG_END -> } [16:52]
|--NEWLINE -> \n [16:53]
|--LEADING_ASTERISK -> * [17:1]
|--NEWLINE -> \n [17:2]
|--LEADING_ASTERISK -> * [18:1]
|--TEXT ->  ✅ 5. Real usage from OpenJDK – file-based snippet: [18:2]
|--NEWLINE -> \n [18:53]
|--LEADING_ASTERISK -> * [19:1]
|--TEXT ->   [19:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [19:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [19:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [19:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [19:12]
|       |   |--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [19:12]
|       |   |   |--TEXT ->   [19:12]
|       |   |   |--SNIPPET_ATTR_NAME -> file [19:13]
|       |   |   |--EQUALS -> = [19:17]
|       |   |   `--ATTRIBUTE_VALUE -> "doc-files/BitSetSample.java" [19:18]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [19:47]
|       |       |--TEXT ->   [19:47]
|       |       |--SNIPPET_ATTR_NAME -> region [19:48]
|       |       |--EQUALS -> = [19:54]
|       |       `--ATTRIBUTE_VALUE -> DocGet [19:55]
|       `--JAVADOC_INLINE_TAG_END -> } [19:61]
|--NEWLINE -> \n [19:62]
|--LEADING_ASTERISK -> * [20:1]
|--NEWLINE -> \n [20:2]
|--LEADING_ASTERISK -> * [21:1]
|--TEXT ->  ✅ 6. Real usage from OpenJDK – inline try-with-resources: [21:2]
|--NEWLINE -> \n [21:60]
|--LEADING_ASTERISK -> * [22:1]
|--TEXT ->   [22:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [22:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [22:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [22:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [22:12]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [22:12]
|       |       |--TEXT ->   [22:12]
|       |       |--SNIPPET_ATTR_NAME -> lang [22:13]
|       |       |--EQUALS -> = [22:17]
|       |       `--ATTRIBUTE_VALUE -> java  [22:18]
|       |--COLON -> : [22:23]
|       |--SNIPPET_BODY -> SNIPPET_BODY [22:24]
|       |   |--NEWLINE -> \n [22:24]
|       |   |--LEADING_ASTERISK -> * [23:1]
|       |   |--TEXT ->    try (InputStream in = new FileInputStream("file.txt")) { [23:2]
|       |   |--NEWLINE -> \n [23:61]
|       |   |--LEADING_ASTERISK -> * [24:1]
|       |   |--TEXT ->        // read from file [24:2]
|       |   |--NEWLINE -> \n [24:26]
|       |   |--LEADING_ASTERISK -> * [25:1]
|       |   |--TEXT ->    } [25:2]
|       |   |--NEWLINE -> \n [25:6]
|       |   |--LEADING_ASTERISK -> * [26:1]
|       |   `--TEXT ->   [26:2]
|       `--JAVADOC_INLINE_TAG_END -> } [26:3]
|--NEWLINE -> \n [26:4]
|--LEADING_ASTERISK -> * [27:1]
|--TEXT ->  ========== [27:2]
|--NEWLINE -> \n [27:13]
|--LEADING_ASTERISK -> * [28:1]
|--TEXT ->   [28:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [28:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [28:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [28:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [28:12]
|       |   |--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [28:12]
|       |   |   |--TEXT ->   [28:12]
|       |   |   |--SNIPPET_ATTR_NAME -> id [28:13]
|       |   |   |--EQUALS -> = [28:15]
|       |   |   `--ATTRIBUTE_VALUE -> "entry-point" [28:16]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [28:29]
|       |       |--TEXT ->   [28:29]
|       |       |--SNIPPET_ATTR_NAME -> lang [28:30]
|       |       |--EQUALS -> = [28:34]
|       |       `--ATTRIBUTE_VALUE -> java  [28:35]
|       |--COLON -> : [28:40]
|       |--SNIPPET_BODY -> SNIPPET_BODY [28:41]
|       |   |--NEWLINE -> \n [28:41]
|       |   |--LEADING_ASTERISK -> * [29:1]
|       |   |--TEXT ->     public boolean run(DocletEnvironment environment) // @highlight substring="run" [29:2]
|       |   |--NEWLINE -> \n [29:85]
|       |   |--LEADING_ASTERISK -> * [30:1]
|       |   `--TEXT ->   [30:2]
|       `--JAVADOC_INLINE_TAG_END -> } [30:3]
|--NEWLINE -> \n [30:4]
|--LEADING_ASTERISK -> * [31:1]
|--TEXT ->  ===== [31:2]
|--NEWLINE -> \n [31:8]
|--LEADING_ASTERISK -> * [32:1]
|--TEXT ->   [32:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [32:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [32:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [32:3]
|       |--COLON -> : [32:13]
|       |--SNIPPET_BODY -> SNIPPET_BODY [32:14]
|       |   |--NEWLINE -> \n [32:14]
|       |   |--LEADING_ASTERISK -> * [33:1]
|       |   |--TEXT ->  package com.example; [33:2]
|       |   |--NEWLINE -> \n [33:23]
|       |   |--LEADING_ASTERISK -> * [34:1]
|       |   |--NEWLINE -> \n [34:2]
|       |   |--LEADING_ASTERISK -> * [35:1]
|       |   |--TEXT ->  @Name("example.LogMessage") [35:2]
|       |   |--NEWLINE -> \n [35:30]
|       |   |--LEADING_ASTERISK -> * [36:1]
|       |   |--TEXT ->  @Label("Log Message") [36:2]
|       |   |--NEWLINE -> \n [36:24]
|       |   |--LEADING_ASTERISK -> * [37:1]
|       |   |--TEXT ->  @StackFilter("com.example.Logger::log") [37:2]
|       |   |--NEWLINE -> \n [37:42]
|       |   |--LEADING_ASTERISK -> * [38:1]
|       |   |--TEXT ->  class LogMessage extends Event { [38:2]
|       |   |--NEWLINE -> \n [38:35]
|       |   |--LEADING_ASTERISK -> * [39:1]
|       |   |--TEXT ->      @Label("Message") [39:2]
|       |   |--NEWLINE -> \n [39:24]
|       |   |--LEADING_ASTERISK -> * [40:1]
|       |   |--TEXT ->      String message; [40:2]
|       |   |--NEWLINE -> \n [40:22]
|       |   |--LEADING_ASTERISK -> * [41:1]
|       |   |--TEXT ->  } [41:2]
|       |   |--NEWLINE -> \n [41:4]
|       |   |--LEADING_ASTERISK -> * [42:1]
|       |   |--NEWLINE -> \n [42:2]
|       |   |--LEADING_ASTERISK -> * [43:1]
|       |   |--TEXT ->  public class Logger { [43:2]
|       |   |--NEWLINE -> \n [43:24]
|       |   |--LEADING_ASTERISK -> * [44:1]
|       |   |--NEWLINE -> \n [44:2]
|       |   |--LEADING_ASTERISK -> * [45:1]
|       |   |--TEXT ->      public static void log(String message) { [45:2]
|       |   |--NEWLINE -> \n [45:47]
|       |   |--LEADING_ASTERISK -> * [46:1]
|       |   |--TEXT ->          System.out.print(Instant.now() + " : " + message); [46:2]
|       |   |--NEWLINE -> \n [46:61]
|       |   |--LEADING_ASTERISK -> * [47:1]
|       |   |--TEXT ->          LogMessage event = new LogMessage(); [47:2]
|       |   |--NEWLINE -> \n [47:47]
|       |   |--LEADING_ASTERISK -> * [48:1]
|       |   |--TEXT ->          event.message = message; [48:2]
|       |   |--NEWLINE -> \n [48:35]
|       |   |--LEADING_ASTERISK -> * [49:1]
|       |   |--TEXT ->          event.commit(); [49:2]
|       |   |--NEWLINE -> \n [49:26]
|       |   |--LEADING_ASTERISK -> * [50:1]
|       |   |--TEXT ->      } [50:2]
|       |   |--NEWLINE -> \n [50:8]
|       |   |--LEADING_ASTERISK -> * [51:1]
|       |   |--TEXT ->  } [51:2]
|       |   |--NEWLINE -> \n [51:4]
|       |   |--LEADING_ASTERISK -> * [52:1]
|       |   `--TEXT ->   [52:2]
|       `--JAVADOC_INLINE_TAG_END -> } [52:3]
|--NEWLINE -> \n [52:4]
|--LEADING_ASTERISK -> * [53:1]
|--NEWLINE -> \n [53:2]
|--LEADING_ASTERISK -> * [54:1]
|--TEXT ->   [54:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [54:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [54:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [54:3]
|       |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [54:12]
|       |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [54:12]
|       |       |--TEXT ->   [54:12]
|       |       |--SNIPPET_ATTR_NAME -> file [54:13]
|       |       |--EQUALS -> = [54:17]
|       |       `--ATTRIBUTE_VALUE -> "Example.java" [54:18]
|       `--JAVADOC_INLINE_TAG_END -> } [54:32]
|--NEWLINE -> \n [54:33]
|--LEADING_ASTERISK -> * [55:1]
|--TEXT ->   [55:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [55:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [55:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [55:3]
|       |--COLON -> : [55:13]
|       |--SNIPPET_BODY -> SNIPPET_BODY [55:14]
|       |   |--NEWLINE -> \n [55:14]
|       |   |--LEADING_ASTERISK -> * [56:1]
|       |   |--TEXT ->    {@snippet lang=java : System.out.println("nested?"); } [56:2]
|       |   |--NEWLINE -> \n [56:59]
|       |   |--LEADING_ASTERISK -> * [57:1]
|       |   `--TEXT ->   [57:2]
|       `--JAVADOC_INLINE_TAG_END -> } [57:3]
|--NEWLINE -> \n [57:4]
|--LEADING_ASTERISK -> * [58:1]
|--NEWLINE -> \n [58:2]
|--LEADING_ASTERISK -> * [59:1]
|--TEXT ->   [59:2]
|--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [59:3]
|   `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [59:3]
|       |--JAVADOC_INLINE_TAG_START -> {@ [59:3]
|       |--COLON -> : [59:13]
|       |--SNIPPET_BODY -> SNIPPET_BODY [59:14]
|       |   |--NEWLINE -> \n [59:14]
|       |   |--LEADING_ASTERISK -> * [60:1]
|       |   |--TEXT ->    /** [60:2]
|       |   |--NEWLINE -> \n [60:8]
|       |   |--LEADING_ASTERISK -> * [61:1]
|       |   |--TEXT ->     * {@link Object} [61:2]
|       |   |--NEWLINE -> \n [61:22]
|       |   |--LEADING_ASTERISK -> * [62:1]
|       |   |--TEXT ->     * {@code int x = 5;} [62:2]
|       |   |--NEWLINE -> \n [62:26]
|       |   |--LEADING_ASTERISK -> * [63:1]
|       |   |--TEXT ->     *\/ [63:2]
|       |   |--NEWLINE -> \n [63:9]
|       |   |--LEADING_ASTERISK -> * [64:1]
|       |   `--TEXT ->   [64:2]
|       `--JAVADOC_INLINE_TAG_END -> } [64:3]
|--NEWLINE -> \n [64:4]
|--LEADING_ASTERISK -> * [65:1]
|--TEXT ->   [65:2]
`--JAVADOC_INLINE_TAG -> JAVADOC_INLINE_TAG [65:3]
    `--SNIPPET_INLINE_TAG -> SNIPPET_INLINE_TAG [65:3]
        |--JAVADOC_INLINE_TAG_START -> {@ [65:3]
        |--SNIPPET_ATTRIBUTES -> SNIPPET_ATTRIBUTES [65:12]
        |   `--SNIPPET_ATTRIBUTE -> SNIPPET_ATTRIBUTE [65:12]
        |       |--TEXT ->   [65:12]
        |       |--SNIPPET_ATTR_NAME -> lang [65:13]
        |       |--EQUALS -> = [65:17]
        |       `--ATTRIBUTE_VALUE -> "java" [65:18]
        |--COLON -> : [65:24]
        |--SNIPPET_BODY -> SNIPPET_BODY [65:25]
        |   `--TEXT ->  code [65:25]
        `--JAVADOC_INLINE_TAG_END -> } [65:30]
