SOURCE_FILE@0..349
  MACRO_DEF@0..93
    MACRO_KW@0..5 "macro"
    WHITESPACE@5..6 " "
    NAME@6..21
      IDENT@6..21 "parse_use_trees"
    TOKEN_TREE@21..93
      TOKEN_TREE@21..41
        L_PAREN@21..22 "("
        DOLLAR@22..23 "$"
        TOKEN_TREE@23..32
          L_PAREN@23..24 "("
          DOLLAR@24..25 "$"
          IDENT@25..26 "s"
          COLON@26..27 ":"
          IDENT@27..31 "expr"
          R_PAREN@31..32 ")"
        COMMA@32..33 ","
        STAR@33..34 "*"
        WHITESPACE@34..35 " "
        DOLLAR@35..36 "$"
        TOKEN_TREE@36..39
          L_PAREN@36..37 "("
          COMMA@37..38 ","
          R_PAREN@38..39 ")"
        STAR@39..40 "*"
        R_PAREN@40..41 ")"
      WHITESPACE@41..42 " "
      TOKEN_TREE@42..93
        L_CURLY@42..43 "{"
        WHITESPACE@43..48 "\n    "
        IDENT@48..51 "vec"
        BANG@51..52 "!"
        TOKEN_TREE@52..91
          L_BRACK@52..53 "["
          WHITESPACE@53..62 "\n        "
          DOLLAR@62..63 "$"
          TOKEN_TREE@63..84
            L_PAREN@63..64 "("
            IDENT@64..78 "parse_use_tree"
            TOKEN_TREE@78..82
              L_PAREN@78..79 "("
              DOLLAR@79..80 "$"
              IDENT@80..81 "s"
              R_PAREN@81..82 ")"
            COMMA@82..83 ","
            R_PAREN@83..84 ")"
          STAR@84..85 "*"
          WHITESPACE@85..90 "\n    "
          R_BRACK@90..91 "]"
        WHITESPACE@91..92 "\n"
        R_CURLY@92..93 "}"
  WHITESPACE@93..95 "\n\n"
  FN@95..348
    ATTR@95..102
      POUND@95..96 "#"
      L_BRACK@96..97 "["
      PATH@97..101
        PATH_SEGMENT@97..101
          NAME_REF@97..101
            IDENT@97..101 "test"
      R_BRACK@101..102 "]"
    WHITESPACE@102..103 "\n"
    FN_KW@103..105 "fn"
    WHITESPACE@105..106 " "
    NAME@106..125
      IDENT@106..125 "test_use_tree_merge"
    PARAM_LIST@125..127
      L_PAREN@125..126 "("
      R_PAREN@126..127 ")"
    WHITESPACE@127..128 " "
    BLOCK_EXPR@128..348
      L_CURLY@128..129 "{"
      WHITESPACE@129..134 "\n    "
      MACRO_DEF@134..346
        MACRO_KW@134..139 "macro"
        WHITESPACE@139..140 " "
        NAME@140..150
          IDENT@140..150 "test_merge"
        TOKEN_TREE@150..346
          TOKEN_TREE@150..203
            L_PAREN@150..151 "("
            TOKEN_TREE@151..175
              L_BRACK@151..152 "["
              DOLLAR@152..153 "$"
              TOKEN_TREE@153..166
                L_PAREN@153..154 "("
                DOLLAR@154..155 "$"
                IDENT@155..160 "input"
                COLON@160..161 ":"
                IDENT@161..165 "expr"
                R_PAREN@165..166 ")"
              COMMA@166..167 ","
              STAR@167..168 "*"
              WHITESPACE@168..169 " "
              DOLLAR@169..170 "$"
              TOKEN_TREE@170..173
                L_PAREN@170..171 "("
                COMMA@171..172 ","
                R_PAREN@172..173 ")"
              STAR@173..174 "*"
              R_BRACK@174..175 "]"
            COMMA@175..176 ","
            WHITESPACE@176..177 " "
            TOKEN_TREE@177..202
              L_BRACK@177..178 "["
              DOLLAR@178..179 "$"
              TOKEN_TREE@179..193
                L_PAREN@179..180 "("
                DOLLAR@180..181 "$"
                IDENT@181..187 "output"
                COLON@187..188 ":"
                IDENT@188..192 "expr"
                R_PAREN@192..193 ")"
              COMMA@193..194 ","
              STAR@194..195 "*"
              WHITESPACE@195..196 " "
              DOLLAR@196..197 "$"
              TOKEN_TREE@197..200
                L_PAREN@197..198 "("
                COMMA@198..199 ","
                R_PAREN@199..200 ")"
              STAR@200..201 "*"
              R_BRACK@201..202 "]"
            R_PAREN@202..203 ")"
          WHITESPACE@203..204 " "
          TOKEN_TREE@204..346
            L_CURLY@204..205 "{"
            WHITESPACE@205..214 "\n        "
            IDENT@214..223 "assert_eq"
            BANG@223..224 "!"
            TOKEN_TREE@224..339
              L_PAREN@224..225 "("
              WHITESPACE@225..238 "\n            "
              IDENT@238..253 "merge_use_trees"
              TOKEN_TREE@253..284
                L_PAREN@253..254 "("
                IDENT@254..269 "parse_use_trees"
                BANG@269..270 "!"
                TOKEN_TREE@270..283
                  L_PAREN@270..271 "("
                  DOLLAR@271..272 "$"
                  TOKEN_TREE@272..281
                    L_PAREN@272..273 "("
                    DOLLAR@273..274 "$"
                    IDENT@274..279 "input"
                    COMMA@279..280 ","
                    R_PAREN@280..281 ")"
                  STAR@281..282 "*"
                  R_PAREN@282..283 ")"
                R_PAREN@283..284 ")"
              COMMA@284..285 ","
              WHITESPACE@285..298 "\n            "
              IDENT@298..313 "parse_use_trees"
              BANG@313..314 "!"
              TOKEN_TREE@314..328
                L_PAREN@314..315 "("
                DOLLAR@315..316 "$"
                TOKEN_TREE@316..326
                  L_PAREN@316..317 "("
                  DOLLAR@317..318 "$"
                  IDENT@318..324 "output"
                  COMMA@324..325 ","
                  R_PAREN@325..326 ")"
                STAR@326..327 "*"
                R_PAREN@327..328 ")"
              COMMA@328..329 ","
              WHITESPACE@329..338 "\n        "
              R_PAREN@338..339 ")"
            SEMICOLON@339..340 ";"
            WHITESPACE@340..345 "\n    "
            R_CURLY@345..346 "}"
      WHITESPACE@346..347 "\n"
      R_CURLY@347..348 "}"
  WHITESPACE@348..349 "\n"