SOURCE_FILE@0..3813
  COMMENT@0..55 "//! Adapted from a `r ..."
  WHITESPACE@55..56 "\n"
  COMMENT@56..173 "//! https://github.co ..."
  WHITESPACE@173..174 "\n"
  COMMENT@174..178 "//! "
  WHITESPACE@178..179 "\n"
  COMMENT@179..269 "//! Reported to rust- ..."
  WHITESPACE@269..271 "\n\n"
  ATTR@271..302
    POUND@271..272 "#"
    BANG@272..273 "!"
    L_BRACK@273..274 "["
    PATH@274..279
      PATH_SEGMENT@274..279
        NAME_REF@274..279
          IDENT@274..279 "allow"
    TOKEN_TREE@279..301
      L_PAREN@279..280 "("
      IDENT@280..300 "non_camel_case_types"
      R_PAREN@300..301 ")"
    R_BRACK@301..302 "]"
  WHITESPACE@302..303 "\n"
  ATTR@303..323
    POUND@303..304 "#"
    BANG@304..305 "!"
    L_BRACK@305..306 "["
    PATH@306..311
      PATH_SEGMENT@306..311
        NAME_REF@306..311
          IDENT@306..311 "allow"
    TOKEN_TREE@311..322
      L_PAREN@311..312 "("
      IDENT@312..321 "dead_code"
      R_PAREN@321..322 ")"
    R_BRACK@322..323 "]"
  WHITESPACE@323..324 "\n"
  ATTR@324..351
    POUND@324..325 "#"
    BANG@325..326 "!"
    L_BRACK@326..327 "["
    PATH@327..332
      PATH_SEGMENT@327..332
        NAME_REF@327..332
          IDENT@327..332 "allow"
    TOKEN_TREE@332..350
      L_PAREN@332..333 "("
      IDENT@333..349 "unreachable_code"
      R_PAREN@349..350 ")"
    R_BRACK@350..351 "]"
  WHITESPACE@351..352 "\n"
  ATTR@352..376
    POUND@352..353 "#"
    BANG@353..354 "!"
    L_BRACK@354..355 "["
    PATH@355..360
      PATH_SEGMENT@355..360
        NAME_REF@355..360
          IDENT@355..360 "allow"
    TOKEN_TREE@360..375
      L_PAREN@360..361 "("
      IDENT@361..374 "unused_parens"
      R_PAREN@374..375 ")"
    R_BRACK@375..376 "]"
  WHITESPACE@376..378 "\n\n"
  ATTR@378..405
    POUND@378..379 "#"
    BANG@379..380 "!"
    L_BRACK@380..381 "["
    PATH@381..396
      PATH_SEGMENT@381..396
        NAME_REF@381..396
          IDENT@381..396 "recursion_limit"
    WHITESPACE@396..397 " "
    EQ@397..398 "="
    WHITESPACE@398..399 " "
    LITERAL@399..404
      STRING@399..404 "\"128\""
    R_BRACK@404..405 "]"
  WHITESPACE@405..407 "\n\n"
  USE@407..427
    USE_KW@407..410 "use"
    WHITESPACE@410..411 " "
    USE_TREE@411..426
      PATH@411..426
        PATH@411..420
          PATH@411..414
            PATH_SEGMENT@411..414
              NAME_REF@411..414
                IDENT@411..414 "std"
          COLON2@414..416 "::"
          PATH_SEGMENT@416..420
            NAME_REF@416..420
              IDENT@416..420 "cell"
        COLON2@420..422 "::"
        PATH_SEGMENT@422..426
          NAME_REF@422..426
            IDENT@422..426 "Cell"
    SEMICOLON@426..427 ";"
  WHITESPACE@427..428 "\n"
  USE@428..447
    USE_KW@428..431 "use"
    WHITESPACE@431..432 " "
    USE_TREE@432..446
      PATH@432..446
        PATH@432..440
          PATH@432..435
            PATH_SEGMENT@432..435
              NAME_REF@432..435
                IDENT@432..435 "std"
          COLON2@435..437 "::"
          PATH_SEGMENT@437..440
            NAME_REF@437..440
              IDENT@437..440 "mem"
        COLON2@440..442 "::"
        PATH_SEGMENT@442..446
          NAME_REF@442..446
            IDENT@442..446 "swap"
    SEMICOLON@446..447 ";"
  WHITESPACE@447..449 "\n\n"
  COMMENT@449..518 "// Just a grab bag of ..."
  WHITESPACE@518..520 "\n\n"
  FN@520..572
    FN_KW@520..522 "fn"
    WHITESPACE@522..523 " "
    NAME@523..530
      IDENT@523..530 "strange"
    PARAM_LIST@530..532
      L_PAREN@530..531 "("
      R_PAREN@531..532 ")"
    WHITESPACE@532..533 " "
    RET_TYPE@533..540
      THIN_ARROW@533..535 "->"
      WHITESPACE@535..536 " "
      PATH_TYPE@536..540
        PATH@536..540
          PATH_SEGMENT@536..540
            NAME_REF@536..540
              IDENT@536..540 "bool"
    WHITESPACE@540..541 " "
    BLOCK_EXPR@541..572
      L_CURLY@541..542 "{"
      WHITESPACE@542..543 " "
      LET_STMT@543..570
        LET_KW@543..546 "let"
        WHITESPACE@546..547 " "
        IDENT_PAT@547..549
          NAME@547..549
            IDENT@547..549 "_x"
        COLON@549..550 ":"
        WHITESPACE@550..551 " "
        PATH_TYPE@551..555
          PATH@551..555
            PATH_SEGMENT@551..555
              NAME_REF@551..555
                IDENT@551..555 "bool"
        WHITESPACE@555..556 " "
        EQ@556..557 "="
        WHITESPACE@557..558 " "
        RETURN_EXPR@558..569
          RETURN_KW@558..564 "return"
          WHITESPACE@564..565 " "
          LITERAL@565..569
            TRUE_KW@565..569 "true"
        SEMICOLON@569..570 ";"
      WHITESPACE@570..571 " "
      R_CURLY@571..572 "}"
  WHITESPACE@572..574 "\n\n"
  FN@574..624
    FN_KW@574..576 "fn"
    WHITESPACE@576..577 " "
    NAME@577..582
      IDENT@577..582 "funny"
    PARAM_LIST@582..584
      L_PAREN@582..583 "("
      R_PAREN@583..584 ")"
    WHITESPACE@584..585 " "
    BLOCK_EXPR@585..624
      L_CURLY@585..586 "{"
      WHITESPACE@586..591 "\n    "
      FN@591..607
        FN_KW@591..593 "fn"
        WHITESPACE@593..594 " "
        NAME@594..595
          IDENT@594..595 "f"
        PARAM_LIST@595..603
          L_PAREN@595..596 "("
          PARAM@596..602
            IDENT_PAT@596..598
              NAME@596..598
                IDENT@596..598 "_x"
            COLON@598..599 ":"
            WHITESPACE@599..600 " "
            TUPLE_TYPE@600..602
              L_PAREN@600..601 "("
              R_PAREN@601..602 ")"
          R_PAREN@602..603 ")"
        WHITESPACE@603..604 " "
        BLOCK_EXPR@604..607
          L_CURLY@604..605 "{"
          WHITESPACE@605..606 " "
          R_CURLY@606..607 "}"
      WHITESPACE@607..612 "\n    "
      EXPR_STMT@612..622
        CALL_EXPR@612..621
          PATH_EXPR@612..613
            PATH@612..613
              PATH_SEGMENT@612..613
                NAME_REF@612..613
                  IDENT@612..613 "f"
          ARG_LIST@613..621
            L_PAREN@613..614 "("
            RETURN_EXPR@614..620
              RETURN_KW@614..620 "return"
            R_PAREN@620..621 ")"
        SEMICOLON@621..622 ";"
      WHITESPACE@622..623 "\n"
      R_CURLY@623..624 "}"
  WHITESPACE@624..626 "\n\n"
  FN@626..816
    FN_KW@626..628 "fn"
    WHITESPACE@628..629 " "
    NAME@629..633
      IDENT@629..633 "what"
    PARAM_LIST@633..635
      L_PAREN@633..634 "("
      R_PAREN@634..635 ")"
    WHITESPACE@635..636 " "
    BLOCK_EXPR@636..816
      L_CURLY@636..637 "{"
      WHITESPACE@637..642 "\n    "
      FN@642..720
        FN_KW@642..644 "fn"
        WHITESPACE@644..645 " "
        NAME@645..648
          IDENT@645..648 "the"
        PARAM_LIST@648..664
          L_PAREN@648..649 "("
          PARAM@649..663
            IDENT_PAT@649..650
              NAME@649..650
                IDENT@649..650 "x"
            COLON@650..651 ":"
            WHITESPACE@651..652 " "
            REF_TYPE@652..663
              AMP@652..653 "&"
              PATH_TYPE@653..663
                PATH@653..663
                  PATH_SEGMENT@653..663
                    NAME_REF@653..657
                      IDENT@653..657 "Cell"
                    GENERIC_ARG_LIST@657..663
                      L_ANGLE@657..658 "<"
                      TYPE_ARG@658..662
                        PATH_TYPE@658..662
                          PATH@658..662
                            PATH_SEGMENT@658..662
                              NAME_REF@658..662
                                IDENT@658..662 "bool"
                      R_ANGLE@662..663 ">"
          R_PAREN@663..664 ")"
        WHITESPACE@664..665 " "
        BLOCK_EXPR@665..720
          L_CURLY@665..666 "{"
          WHITESPACE@666..675 "\n        "
          EXPR_STMT@675..714
            RETURN_EXPR@675..713
              RETURN_KW@675..681 "return"
              WHITESPACE@681..682 " "
              WHILE_EXPR@682..713
                WHILE_KW@682..687 "while"
                WHITESPACE@687..688 " "
                CONDITION@688..696
                  PREFIX_EXPR@688..696
                    BANG@688..689 "!"
                    METHOD_CALL_EXPR@689..696
                      PATH_EXPR@689..690
                        PATH@689..690
                          PATH_SEGMENT@689..690
                            NAME_REF@689..690
                              IDENT@689..690 "x"
                      DOT@690..691 "."
                      NAME_REF@691..694
                        IDENT@691..694 "get"
                      ARG_LIST@694..696
                        L_PAREN@694..695 "("
                        R_PAREN@695..696 ")"
                WHITESPACE@696..697 " "
                BLOCK_EXPR@697..713
                  L_CURLY@697..698 "{"
                  WHITESPACE@698..699 " "
                  EXPR_STMT@699..711
                    METHOD_CALL_EXPR@699..710
                      PATH_EXPR@699..700
                        PATH@699..700
                          PATH_SEGMENT@699..700
                            NAME_REF@699..700
                              IDENT@699..700 "x"
                      DOT@700..701 "."
                      NAME_REF@701..704
                        IDENT@701..704 "set"
                      ARG_LIST@704..710
                        L_PAREN@704..705 "("
                        LITERAL@705..709
                          TRUE_KW@705..709 "true"
                        R_PAREN@709..710 ")"
                    SEMICOLON@710..711 ";"
                  WHITESPACE@711..712 " "
                  R_CURLY@712..713 "}"
            SEMICOLON@713..714 ";"
          WHITESPACE@714..719 "\n    "
          R_CURLY@719..720 "}"
      WHITESPACE@720..725 "\n    "
      LET_STMT@725..751
        LET_KW@725..728 "let"
        WHITESPACE@728..729 " "
        IDENT_PAT@729..730
          NAME@729..730
            IDENT@729..730 "i"
        WHITESPACE@730..731 " "
        EQ@731..732 "="
        WHITESPACE@732..733 " "
        REF_EXPR@733..750
          AMP@733..734 "&"
          CALL_EXPR@734..750
            PATH_EXPR@734..743
              PATH@734..743
                PATH@734..738
                  PATH_SEGMENT@734..738
                    NAME_REF@734..738
                      IDENT@734..738 "Cell"
                COLON2@738..740 "::"
                PATH_SEGMENT@740..743
                  NAME_REF@740..743
                    IDENT@740..743 "new"
            ARG_LIST@743..750
              L_PAREN@743..744 "("
              LITERAL@744..749
                FALSE_KW@744..749 "false"
              R_PAREN@749..750 ")"
        SEMICOLON@750..751 ";"
      WHITESPACE@751..756 "\n    "
      LET_STMT@756..778
        LET_KW@756..759 "let"
        WHITESPACE@759..760 " "
        IDENT_PAT@760..764
          NAME@760..764
            IDENT@760..764 "dont"
        WHITESPACE@764..765 " "
        EQ@765..766 "="
        WHITESPACE@766..767 " "
        BLOCK_EXPR@767..777
          L_CURLY@767..768 "{"
          CLOSURE_EXPR@768..776
            PARAM_LIST@768..770
              PIPE@768..769 "|"
              PIPE@769..770 "|"
            CALL_EXPR@770..776
              PATH_EXPR@770..773
                PATH@770..773
                  PATH_SEGMENT@770..773
                    NAME_REF@770..773
                      IDENT@770..773 "the"
              ARG_LIST@773..776
                L_PAREN@773..774 "("
                PATH_EXPR@774..775
                  PATH@774..775
                    PATH_SEGMENT@774..775
                      NAME_REF@774..775
                        IDENT@774..775 "i"
                R_PAREN@775..776 ")"
          R_CURLY@776..777 "}"
        SEMICOLON@777..778 ";"
      WHITESPACE@778..783 "\n    "
      EXPR_STMT@783..790
        CALL_EXPR@783..789
          PATH_EXPR@783..787
            PATH@783..787
              PATH_SEGMENT@783..787
                NAME_REF@783..787
                  IDENT@783..787 "dont"
          ARG_LIST@787..789
            L_PAREN@787..788 "("
            R_PAREN@788..789 ")"
        SEMICOLON@789..790 ";"
      WHITESPACE@790..795 "\n    "
      EXPR_STMT@795..814
        MACRO_CALL@795..813
          PATH@795..801
            PATH_SEGMENT@795..801
              NAME_REF@795..801
                IDENT@795..801 "assert"
          BANG@801..802 "!"
          TOKEN_TREE@802..813
            L_PAREN@802..803 "("
            TOKEN_TREE@803..812
              L_PAREN@803..804 "("
              IDENT@804..805 "i"
              DOT@805..806 "."
              IDENT@806..809 "get"
              TOKEN_TREE@809..811
                L_PAREN@809..810 "("
                R_PAREN@810..811 ")"
              R_PAREN@811..812 ")"
            R_PAREN@812..813 ")"
        SEMICOLON@813..814 ";"
      WHITESPACE@814..815 "\n"
      R_CURLY@815..816 "}"
  WHITESPACE@816..818 "\n\n"
  FN@818..1322
    FN_KW@818..820 "fn"
    WHITESPACE@820..821 " "
    NAME@821..832
      IDENT@821..832 "zombiejesus"
    PARAM_LIST@832..834
      L_PAREN@832..833 "("
      R_PAREN@833..834 ")"
    WHITESPACE@834..835 " "
    BLOCK_EXPR@835..1322
      L_CURLY@835..836 "{"
      WHITESPACE@836..841 "\n    "
      LOOP_EXPR@841..1320
        LOOP_KW@841..845 "loop"
        WHITESPACE@845..846 " "
        BLOCK_EXPR@846..1320
          L_CURLY@846..847 "{"
          WHITESPACE@847..856 "\n        "
          EXPR_STMT@856..1283
            WHILE_EXPR@856..1283
              WHILE_KW@856..861 "while"
              WHITESPACE@861..862 " "
              CONDITION@862..870
                PAREN_EXPR@862..870
                  L_PAREN@862..863 "("
                  RETURN_EXPR@863..869
                    RETURN_KW@863..869 "return"
                  R_PAREN@869..870 ")"
              WHITESPACE@870..871 " "
              BLOCK_EXPR@871..1283
                L_CURLY@871..872 "{"
                WHITESPACE@872..885 "\n            "
                IF_EXPR@885..1273
                  IF_KW@885..887 "if"
                  WHITESPACE@887..888 " "
                  CONDITION@888..896
                    PAREN_EXPR@888..896
                      L_PAREN@888..889 "("
                      RETURN_EXPR@889..895
                        RETURN_KW@889..895 "return"
                      R_PAREN@895..896 ")"
                  WHITESPACE@896..897 " "
                  BLOCK_EXPR@897..1216
                    L_CURLY@897..898 "{"
                    WHITESPACE@898..915 "\n                "
                    EXPR_STMT@915..1202
                      MATCH_EXPR@915..1201
                        MATCH_KW@915..920 "match"
                        WHITESPACE@920..921 " "
                        PAREN_EXPR@921..929
                          L_PAREN@921..922 "("
                          RETURN_EXPR@922..928
                            RETURN_KW@922..928 "return"
                          R_PAREN@928..929 ")"
                        WHITESPACE@929..930 " "
                        MATCH_ARM_LIST@930..1201
                          L_CURLY@930..931 "{"
                          WHITESPACE@931..952 "\n                    "
                          MATCH_ARM@952..1147
                            LITERAL_PAT@952..953
                              LITERAL@952..953
                                INT_NUMBER@952..953 "1"
                            WHITESPACE@953..954 " "
                            FAT_ARROW@954..956 "=>"
                            WHITESPACE@956..957 " "
                            BLOCK_EXPR@957..1147
                              L_CURLY@957..958 "{"
                              WHITESPACE@958..983 "\n                     ..."
                              IF_EXPR@983..1125
                                IF_KW@983..985 "if"
                                WHITESPACE@985..986 " "
                                CONDITION@986..994
                                  PAREN_EXPR@986..994
                                    L_PAREN@986..987 "("
                                    RETURN_EXPR@987..993
                                      RETURN_KW@987..993 "return"
                                    R_PAREN@993..994 ")"
                                WHITESPACE@994..995 " "
                                BLOCK_EXPR@995..1057
                                  L_CURLY@995..996 "{"
                                  WHITESPACE@996..1025 "\n                     ..."
                                  RETURN_EXPR@1025..1031
                                    RETURN_KW@1025..1031 "return"
                                  WHITESPACE@1031..1056 "\n                     ..."
                                  R_CURLY@1056..1057 "}"
                                WHITESPACE@1057..1058 " "
                                ELSE_KW@1058..1062 "else"
                                WHITESPACE@1062..1063 " "
                                BLOCK_EXPR@1063..1125
                                  L_CURLY@1063..1064 "{"
                                  WHITESPACE@1064..1093 "\n                     ..."
                                  RETURN_EXPR@1093..1099
                                    RETURN_KW@1093..1099 "return"
                                  WHITESPACE@1099..1124 "\n                     ..."
                                  R_CURLY@1124..1125 "}"
                              WHITESPACE@1125..1146 "\n                    "
                              R_CURLY@1146..1147 "}"
                          WHITESPACE@1147..1168 "\n                    "
                          MATCH_ARM@1168..1183
                            WILDCARD_PAT@1168..1169
                              UNDERSCORE@1168..1169 "_"
                            WHITESPACE@1169..1170 " "
                            FAT_ARROW@1170..1172 "=>"
                            WHITESPACE@1172..1173 " "
                            BLOCK_EXPR@1173..1183
                              L_CURLY@1173..1174 "{"
                              WHITESPACE@1174..1175 " "
                              RETURN_EXPR@1175..1181
                                RETURN_KW@1175..1181 "return"
                              WHITESPACE@1181..1182 " "
                              R_CURLY@1182..1183 "}"
                          WHITESPACE@1183..1200 "\n                "
                          R_CURLY@1200..1201 "}"
                      SEMICOLON@1201..1202 ";"
                    WHITESPACE@1202..1215 "\n            "
                    R_CURLY@1215..1216 "}"
                  WHITESPACE@1216..1217 " "
                  ELSE_KW@1217..1221 "else"
                  WHITESPACE@1221..1222 " "
                  IF_EXPR@1222..1273
                    IF_KW@1222..1224 "if"
                    WHITESPACE@1224..1225 " "
                    CONDITION@1225..1233
                      PAREN_EXPR@1225..1233
                        L_PAREN@1225..1226 "("
                        RETURN_EXPR@1226..1232
                          RETURN_KW@1226..1232 "return"
                        R_PAREN@1232..1233 ")"
                    WHITESPACE@1233..1234 " "
                    BLOCK_EXPR@1234..1273
                      L_CURLY@1234..1235 "{"
                      WHITESPACE@1235..1252 "\n                "
                      EXPR_STMT@1252..1259
                        RETURN_EXPR@1252..1258
                          RETURN_KW@1252..1258 "return"
                        SEMICOLON@1258..1259 ";"
                      WHITESPACE@1259..1272 "\n            "
                      R_CURLY@1272..1273 "}"
                WHITESPACE@1273..1282 "\n        "
                R_CURLY@1282..1283 "}"
          WHITESPACE@1283..1292 "\n        "
          IF_EXPR@1292..1314
            IF_KW@1292..1294 "if"
            WHITESPACE@1294..1295 " "
            CONDITION@1295..1303
              PAREN_EXPR@1295..1303
                L_PAREN@1295..1296 "("
                RETURN_EXPR@1296..1302
                  RETURN_KW@1296..1302 "return"
                R_PAREN@1302..1303 ")"
            WHITESPACE@1303..1304 " "
            BLOCK_EXPR@1304..1314
              L_CURLY@1304..1305 "{"
              WHITESPACE@1305..1306 " "
              EXPR_STMT@1306..1312
                BREAK_EXPR@1306..1311
                  BREAK_KW@1306..1311 "break"
                SEMICOLON@1311..1312 ";"
              WHITESPACE@1312..1313 " "
              R_CURLY@1313..1314 "}"
          WHITESPACE@1314..1319 "\n    "
          R_CURLY@1319..1320 "}"
      WHITESPACE@1320..1321 "\n"
      R_CURLY@1321..1322 "}"
  WHITESPACE@1322..1324 "\n\n"
  FN@1324..1539
    FN_KW@1324..1326 "fn"
    WHITESPACE@1326..1327 " "
    NAME@1327..1334
      IDENT@1327..1334 "notsure"
    PARAM_LIST@1334..1336
      L_PAREN@1334..1335 "("
      R_PAREN@1335..1336 ")"
    WHITESPACE@1336..1337 " "
    BLOCK_EXPR@1337..1539
      L_CURLY@1337..1338 "{"
      WHITESPACE@1338..1343 "\n    "
      LET_STMT@1343..1361
        LET_KW@1343..1346 "let"
        WHITESPACE@1346..1347 " "
        IDENT_PAT@1347..1353
          MUT_KW@1347..1350 "mut"
          WHITESPACE@1350..1351 " "
          NAME@1351..1353
            IDENT@1351..1353 "_x"
        COLON@1353..1354 ":"
        WHITESPACE@1354..1355 " "
        PATH_TYPE@1355..1360
          PATH@1355..1360
            PATH_SEGMENT@1355..1360
              NAME_REF@1355..1360
                IDENT@1355..1360 "isize"
        SEMICOLON@1360..1361 ";"
      WHITESPACE@1361..1366 "\n    "
      LET_STMT@1366..1400
        LET_KW@1366..1369 "let"
        WHITESPACE@1369..1370 " "
        IDENT_PAT@1370..1376
          MUT_KW@1370..1373 "mut"
          WHITESPACE@1373..1374 " "
          NAME@1374..1376
            IDENT@1374..1376 "_y"
        WHITESPACE@1376..1377 " "
        EQ@1377..1378 "="
        WHITESPACE@1378..1379 " "
        BIN_EXPR@1379..1399
          PAREN_EXPR@1379..1387
            L_PAREN@1379..1380 "("
            BIN_EXPR@1380..1386
              PATH_EXPR@1380..1382
                PATH@1380..1382
                  PATH_SEGMENT@1380..1382
                    NAME_REF@1380..1382
                      IDENT@1380..1382 "_x"
              WHITESPACE@1382..1383 " "
              EQ@1383..1384 "="
              WHITESPACE@1384..1385 " "
              LITERAL@1385..1386
                INT_NUMBER@1385..1386 "0"
            R_PAREN@1386..1387 ")"
          WHITESPACE@1387..1388 " "
          EQ2@1388..1390 "=="
          WHITESPACE@1390..1391 " "
          PAREN_EXPR@1391..1399
            L_PAREN@1391..1392 "("
            BIN_EXPR@1392..1398
              PATH_EXPR@1392..1394
                PATH@1392..1394
                  PATH_SEGMENT@1392..1394
                    NAME_REF@1392..1394
                      IDENT@1392..1394 "_x"
              WHITESPACE@1394..1395 " "
              EQ@1395..1396 "="
              WHITESPACE@1396..1397 " "
              LITERAL@1397..1398
                INT_NUMBER@1397..1398 "0"
            R_PAREN@1398..1399 ")"
        SEMICOLON@1399..1400 ";"
      WHITESPACE@1400..1405 "\n    "
      LET_STMT@1405..1438
        LET_KW@1405..1408 "let"
        WHITESPACE@1408..1409 " "
        IDENT_PAT@1409..1415
          MUT_KW@1409..1412 "mut"
          WHITESPACE@1412..1413 " "
          NAME@1413..1415
            IDENT@1413..1415 "_z"
        WHITESPACE@1415..1416 " "
        EQ@1416..1417 "="
        WHITESPACE@1417..1418 " "
        BIN_EXPR@1418..1437
          PAREN_EXPR@1418..1426
            L_PAREN@1418..1419 "("
            BIN_EXPR@1419..1425
              PATH_EXPR@1419..1421
                PATH@1419..1421
                  PATH_SEGMENT@1419..1421
                    NAME_REF@1419..1421
                      IDENT@1419..1421 "_x"
              WHITESPACE@1421..1422 " "
              EQ@1422..1423 "="
              WHITESPACE@1423..1424 " "
              LITERAL@1424..1425
                INT_NUMBER@1424..1425 "0"
            R_PAREN@1425..1426 ")"
          WHITESPACE@1426..1427 " "
          L_ANGLE@1427..1428 "<"
          WHITESPACE@1428..1429 " "
          PAREN_EXPR@1429..1437
            L_PAREN@1429..1430 "("
            BIN_EXPR@1430..1436
              PATH_EXPR@1430..1432
                PATH@1430..1432
                  PATH_SEGMENT@1430..1432
                    NAME_REF@1430..1432
                      IDENT@1430..1432 "_x"
              WHITESPACE@1432..1433 " "
              EQ@1433..1434 "="
              WHITESPACE@1434..1435 " "
              LITERAL@1435..1436
                INT_NUMBER@1435..1436 "0"
            R_PAREN@1436..1437 ")"
        SEMICOLON@1437..1438 ";"
      WHITESPACE@1438..1443 "\n    "
      LET_STMT@1443..1474
        LET_KW@1443..1446 "let"
        WHITESPACE@1446..1447 " "
        IDENT_PAT@1447..1449
          NAME@1447..1449
            IDENT@1447..1449 "_a"
        WHITESPACE@1449..1450 " "
        EQ@1450..1451 "="
        WHITESPACE@1451..1452 " "
        BIN_EXPR@1452..1473
          PAREN_EXPR@1452..1461
            L_PAREN@1452..1453 "("
            BIN_EXPR@1453..1460
              PATH_EXPR@1453..1455
                PATH@1453..1455
                  PATH_SEGMENT@1453..1455
                    NAME_REF@1453..1455
                      IDENT@1453..1455 "_x"
              WHITESPACE@1455..1456 " "
              PLUSEQ@1456..1458 "+="
              WHITESPACE@1458..1459 " "
              LITERAL@1459..1460
                INT_NUMBER@1459..1460 "0"
            R_PAREN@1460..1461 ")"
          WHITESPACE@1461..1462 " "
          EQ2@1462..1464 "=="
          WHITESPACE@1464..1465 " "
          PAREN_EXPR@1465..1473
            L_PAREN@1465..1466 "("
            BIN_EXPR@1466..1472
              PATH_EXPR@1466..1468
                PATH@1466..1468
                  PATH_SEGMENT@1466..1468
                    NAME_REF@1466..1468
                      IDENT@1466..1468 "_x"
              WHITESPACE@1468..1469 " "
              EQ@1469..1470 "="
              WHITESPACE@1470..1471 " "
              LITERAL@1471..1472
                INT_NUMBER@1471..1472 "0"
            R_PAREN@1472..1473 ")"
        SEMICOLON@1473..1474 ";"
      WHITESPACE@1474..1479 "\n    "
      LET_STMT@1479..1537
        LET_KW@1479..1482 "let"
        WHITESPACE@1482..1483 " "
        IDENT_PAT@1483..1485
          NAME@1483..1485
            IDENT@1483..1485 "_b"
        WHITESPACE@1485..1486 " "
        EQ@1486..1487 "="
        WHITESPACE@1487..1488 " "
        BIN_EXPR@1488..1536
          CALL_EXPR@1488..1510
            PATH_EXPR@1488..1492
              PATH@1488..1492
                PATH_SEGMENT@1488..1492
                  NAME_REF@1488..1492
                    IDENT@1488..1492 "swap"
            ARG_LIST@1492..1510
              L_PAREN@1492..1493 "("
              REF_EXPR@1493..1500
                AMP@1493..1494 "&"
                MUT_KW@1494..1497 "mut"
                WHITESPACE@1497..1498 " "
                PATH_EXPR@1498..1500
                  PATH@1498..1500
                    PATH_SEGMENT@1498..1500
                      NAME_REF@1498..1500
                        IDENT@1498..1500 "_y"
              COMMA@1500..1501 ","
              WHITESPACE@1501..1502 " "
              REF_EXPR@1502..1509
                AMP@1502..1503 "&"
                MUT_KW@1503..1506 "mut"
                WHITESPACE@1506..1507 " "
                PATH_EXPR@1507..1509
                  PATH@1507..1509
                    PATH_SEGMENT@1507..1509
                      NAME_REF@1507..1509
                        IDENT@1507..1509 "_z"
              R_PAREN@1509..1510 ")"
          WHITESPACE@1510..1511 " "
          EQ2@1511..1513 "=="
          WHITESPACE@1513..1514 " "
          CALL_EXPR@1514..1536
            PATH_EXPR@1514..1518
              PATH@1514..1518
                PATH_SEGMENT@1514..1518
                  NAME_REF@1514..1518
                    IDENT@1514..1518 "swap"
            ARG_LIST@1518..1536
              L_PAREN@1518..1519 "("
              REF_EXPR@1519..1526
                AMP@1519..1520 "&"
                MUT_KW@1520..1523 "mut"
                WHITESPACE@1523..1524 " "
                PATH_EXPR@1524..1526
                  PATH@1524..1526
                    PATH_SEGMENT@1524..1526
                      NAME_REF@1524..1526
                        IDENT@1524..1526 "_y"
              COMMA@1526..1527 ","
              WHITESPACE@1527..1528 " "
              REF_EXPR@1528..1535
                AMP@1528..1529 "&"
                MUT_KW@1529..1532 "mut"
                WHITESPACE@1532..1533 " "
                PATH_EXPR@1533..1535
                  PATH@1533..1535
                    PATH_SEGMENT@1533..1535
                      NAME_REF@1533..1535
                        IDENT@1533..1535 "_z"
              R_PAREN@1535..1536 ")"
        SEMICOLON@1536..1537 ";"
      WHITESPACE@1537..1538 "\n"
      R_CURLY@1538..1539 "}"
  WHITESPACE@1539..1541 "\n\n"
  FN@1541..1741
    FN_KW@1541..1543 "fn"
    WHITESPACE@1543..1544 " "
    NAME@1544..1557
      IDENT@1544..1557 "canttouchthis"
    PARAM_LIST@1557..1559
      L_PAREN@1557..1558 "("
      R_PAREN@1558..1559 ")"
    WHITESPACE@1559..1560 " "
    RET_TYPE@1560..1568
      THIN_ARROW@1560..1562 "->"
      WHITESPACE@1562..1563 " "
      PATH_TYPE@1563..1568
        PATH@1563..1568
          PATH_SEGMENT@1563..1568
            NAME_REF@1563..1568
              IDENT@1563..1568 "usize"
    WHITESPACE@1568..1569 " "
    BLOCK_EXPR@1569..1741
      L_CURLY@1569..1570 "{"
      WHITESPACE@1570..1575 "\n    "
      FN@1575..1598
        FN_KW@1575..1577 "fn"
        WHITESPACE@1577..1578 " "
        NAME@1578..1579
          IDENT@1578..1579 "p"
        PARAM_LIST@1579..1581
          L_PAREN@1579..1580 "("
          R_PAREN@1580..1581 ")"
        WHITESPACE@1581..1582 " "
        RET_TYPE@1582..1589
          THIN_ARROW@1582..1584 "->"
          WHITESPACE@1584..1585 " "
          PATH_TYPE@1585..1589
            PATH@1585..1589
              PATH_SEGMENT@1585..1589
                NAME_REF@1585..1589
                  IDENT@1585..1589 "bool"
        WHITESPACE@1589..1590 " "
        BLOCK_EXPR@1590..1598
          L_CURLY@1590..1591 "{"
          WHITESPACE@1591..1592 " "
          LITERAL@1592..1596
            TRUE_KW@1592..1596 "true"
          WHITESPACE@1596..1597 " "
          R_CURLY@1597..1598 "}"
      WHITESPACE@1598..1603 "\n    "
      LET_STMT@1603..1648
        LET_KW@1603..1606 "let"
        WHITESPACE@1606..1607 " "
        IDENT_PAT@1607..1609
          NAME@1607..1609
            IDENT@1607..1609 "_a"
        WHITESPACE@1609..1610 " "
        EQ@1610..1611 "="
        WHITESPACE@1611..1612 " "
        PAREN_EXPR@1612..1647
          L_PAREN@1612..1613 "("
          BIN_EXPR@1613..1646
            MACRO_CALL@1613..1628
              PATH@1613..1619
                PATH_SEGMENT@1613..1619
                  NAME_REF@1613..1619
                    IDENT@1613..1619 "assert"
              BANG@1619..1620 "!"
              TOKEN_TREE@1620..1628
                L_PAREN@1620..1621 "("
                TOKEN_TREE@1621..1627
                  L_PAREN@1621..1622 "("
                  TRUE_KW@1622..1626 "true"
                  R_PAREN@1626..1627 ")"
                R_PAREN@1627..1628 ")"
            WHITESPACE@1628..1629 " "
            EQ2@1629..1631 "=="
            WHITESPACE@1631..1632 " "
            PAREN_EXPR@1632..1646
              L_PAREN@1632..1633 "("
              MACRO_CALL@1633..1645
                PATH@1633..1639
                  PATH_SEGMENT@1633..1639
                    NAME_REF@1633..1639
                      IDENT@1633..1639 "assert"
                BANG@1639..1640 "!"
                TOKEN_TREE@1640..1645
                  L_PAREN@1640..1641 "("
                  IDENT@1641..1642 "p"
                  TOKEN_TREE@1642..1644
                    L_PAREN@1642..1643 "("
                    R_PAREN@1643..1644 ")"
                  R_PAREN@1644..1645 ")"
              R_PAREN@1645..1646 ")"
          R_PAREN@1646..1647 ")"
        SEMICOLON@1647..1648 ";"
      WHITESPACE@1648..1653 "\n    "
      LET_STMT@1653..1685
        LET_KW@1653..1656 "let"
        WHITESPACE@1656..1657 " "
        IDENT_PAT@1657..1659
          NAME@1657..1659
            IDENT@1657..1659 "_c"
        WHITESPACE@1659..1660 " "
        EQ@1660..1661 "="
        WHITESPACE@1661..1662 " "
        PAREN_EXPR@1662..1684
          L_PAREN@1662..1663 "("
          BIN_EXPR@1663..1683
            MACRO_CALL@1663..1677
              PATH@1663..1669
                PATH_SEGMENT@1663..1669
                  NAME_REF@1663..1669
                    IDENT@1663..1669 "assert"
              BANG@1669..1670 "!"
              TOKEN_TREE@1670..1677
                L_PAREN@1670..1671 "("
                TOKEN_TREE@1671..1676
                  L_PAREN@1671..1672 "("
                  IDENT@1672..1673 "p"
                  TOKEN_TREE@1673..1675
                    L_PAREN@1673..1674 "("
                    R_PAREN@1674..1675 ")"
                  R_PAREN@1675..1676 ")"
                R_PAREN@1676..1677 ")"
            WHITESPACE@1677..1678 " "
            EQ2@1678..1680 "=="
            WHITESPACE@1680..1681 " "
            TUPLE_EXPR@1681..1683
              L_PAREN@1681..1682 "("
              R_PAREN@1682..1683 ")"
          R_PAREN@1683..1684 ")"
        SEMICOLON@1684..1685 ";"
      WHITESPACE@1685..1690 "\n    "
      LET_STMT@1690..1739
        LET_KW@1690..1693 "let"
        WHITESPACE@1693..1694 " "
        IDENT_PAT@1694..1696
          NAME@1694..1696
            IDENT@1694..1696 "_b"
        COLON@1696..1697 ":"
        WHITESPACE@1697..1698 " "
        PATH_TYPE@1698..1702
          PATH@1698..1702
            PATH_SEGMENT@1698..1702
              NAME_REF@1698..1702
                IDENT@1698..1702 "bool"
        WHITESPACE@1702..1703 " "
        EQ@1703..1704 "="
        WHITESPACE@1704..1705 " "
        PAREN_EXPR@1705..1738
          L_PAREN@1705..1706 "("
          BIN_EXPR@1706..1737
            MACRO_CALL@1706..1723
              PATH@1706..1713
                PATH_SEGMENT@1706..1713
                  NAME_REF@1706..1713
                    IDENT@1706..1713 "println"
              BANG@1713..1714 "!"
              TOKEN_TREE@1714..1723
                L_PAREN@1714..1715 "("
                STRING@1715..1719 "\"{}\""
                COMMA@1719..1720 ","
                WHITESPACE@1720..1721 " "
                INT_NUMBER@1721..1722 "0"
                R_PAREN@1722..1723 ")"
            WHITESPACE@1723..1724 " "
            EQ2@1724..1726 "=="
            WHITESPACE@1726..1727 " "
            PAREN_EXPR@1727..1737
              L_PAREN@1727..1728 "("
              RETURN_EXPR@1728..1736
                RETURN_KW@1728..1734 "return"
                WHITESPACE@1734..1735 " "
                LITERAL@1735..1736
                  INT_NUMBER@1735..1736 "0"
              R_PAREN@1736..1737 ")"
          R_PAREN@1737..1738 ")"
        SEMICOLON@1738..1739 ";"
      WHITESPACE@1739..1740 "\n"
      R_CURLY@1740..1741 "}"
  WHITESPACE@1741..1743 "\n\n"
  FN@1743..1904
    FN_KW@1743..1745 "fn"
    WHITESPACE@1745..1746 " "
    NAME@1746..1755
      IDENT@1746..1755 "angrydome"
    PARAM_LIST@1755..1757
      L_PAREN@1755..1756 "("
      R_PAREN@1756..1757 ")"
    WHITESPACE@1757..1758 " "
    BLOCK_EXPR@1758..1904
      L_CURLY@1758..1759 "{"
      WHITESPACE@1759..1764 "\n    "
      EXPR_STMT@1764..1785
        LOOP_EXPR@1764..1785
          LOOP_KW@1764..1768 "loop"
          WHITESPACE@1768..1769 " "
          BLOCK_EXPR@1769..1785
            L_CURLY@1769..1770 "{"
            WHITESPACE@1770..1771 " "
            IF_EXPR@1771..1783
              IF_KW@1771..1773 "if"
              WHITESPACE@1773..1774 " "
              CONDITION@1774..1779
                BREAK_EXPR@1774..1779
                  BREAK_KW@1774..1779 "break"
              WHITESPACE@1779..1780 " "
              BLOCK_EXPR@1780..1783
                L_CURLY@1780..1781 "{"
                WHITESPACE@1781..1782 " "
                R_CURLY@1782..1783 "}"
            WHITESPACE@1783..1784 " "
            R_CURLY@1784..1785 "}"
      WHITESPACE@1785..1790 "\n    "
      LET_STMT@1790..1804
        LET_KW@1790..1793 "let"
        WHITESPACE@1793..1794 " "
        IDENT_PAT@1794..1799
          MUT_KW@1794..1797 "mut"
          WHITESPACE@1797..1798 " "
          NAME@1798..1799
            IDENT@1798..1799 "i"
        WHITESPACE@1799..1800 " "
        EQ@1800..1801 "="
        WHITESPACE@1801..1802 " "
        LITERAL@1802..1803
          INT_NUMBER@1802..1803 "0"
        SEMICOLON@1803..1804 ";"
      WHITESPACE@1804..1809 "\n    "
      LOOP_EXPR@1809..1902
        LOOP_KW@1809..1813 "loop"
        WHITESPACE@1813..1814 " "
        BLOCK_EXPR@1814..1902
          L_CURLY@1814..1815 "{"
          WHITESPACE@1815..1816 " "
          EXPR_STMT@1816..1823
            BIN_EXPR@1816..1822
              PATH_EXPR@1816..1817
                PATH@1816..1817
                  PATH_SEGMENT@1816..1817
                    NAME_REF@1816..1817
                      IDENT@1816..1817 "i"
              WHITESPACE@1817..1818 " "
              PLUSEQ@1818..1820 "+="
              WHITESPACE@1820..1821 " "
              LITERAL@1821..1822
                INT_NUMBER@1821..1822 "1"
            SEMICOLON@1822..1823 ";"
          WHITESPACE@1823..1824 " "
          EXPR_STMT@1824..1887
            IF_EXPR@1824..1887
              IF_KW@1824..1826 "if"
              WHITESPACE@1826..1827 " "
              CONDITION@1827..1833
                BIN_EXPR@1827..1833
                  PATH_EXPR@1827..1828
                    PATH@1827..1828
                      PATH_SEGMENT@1827..1828
                        NAME_REF@1827..1828
                          IDENT@1827..1828 "i"
                  WHITESPACE@1828..1829 " "
                  EQ2@1829..1831 "=="
                  WHITESPACE@1831..1832 " "
                  LITERAL@1832..1833
                    INT_NUMBER@1832..1833 "1"
              WHITESPACE@1833..1834 " "
              BLOCK_EXPR@1834..1887
                L_CURLY@1834..1835 "{"
                WHITESPACE@1835..1836 " "
                MATCH_EXPR@1836..1885
                  MATCH_KW@1836..1841 "match"
                  WHITESPACE@1841..1842 " "
                  PAREN_EXPR@1842..1852
                    L_PAREN@1842..1843 "("
                    CONTINUE_EXPR@1843..1851
                      CONTINUE_KW@1843..1851 "continue"
                    R_PAREN@1851..1852 ")"
                  WHITESPACE@1852..1853 " "
                  MATCH_ARM_LIST@1853..1885
                    L_CURLY@1853..1854 "{"
                    WHITESPACE@1854..1855 " "
                    MATCH_ARM@1855..1863
                      LITERAL_PAT@1855..1856
                        LITERAL@1855..1856
                          INT_NUMBER@1855..1856 "1"
                      WHITESPACE@1856..1857 " "
                      FAT_ARROW@1857..1859 "=>"
                      WHITESPACE@1859..1860 " "
                      BLOCK_EXPR@1860..1863
                        L_CURLY@1860..1861 "{"
                        WHITESPACE@1861..1862 " "
                        R_CURLY@1862..1863 "}"
                    COMMA@1863..1864 ","
                    WHITESPACE@1864..1865 " "
                    MATCH_ARM@1865..1883
                      WILDCARD_PAT@1865..1866
                        UNDERSCORE@1865..1866 "_"
                      WHITESPACE@1866..1867 " "
                      FAT_ARROW@1867..1869 "=>"
                      WHITESPACE@1869..1870 " "
                      MACRO_CALL@1870..1883
                        PATH@1870..1875
                          PATH_SEGMENT@1870..1875
                            NAME_REF@1870..1875
                              IDENT@1870..1875 "panic"
                        BANG@1875..1876 "!"
                        TOKEN_TREE@1876..1883
                          L_PAREN@1876..1877 "("
                          STRING@1877..1882 "\"wat\""
                          R_PAREN@1882..1883 ")"
                    WHITESPACE@1883..1884 " "
                    R_CURLY@1884..1885 "}"
                WHITESPACE@1885..1886 " "
                R_CURLY@1886..1887 "}"
          WHITESPACE@1887..1894 "\n      "
          EXPR_STMT@1894..1900
            BREAK_EXPR@1894..1899
              BREAK_KW@1894..1899 "break"
            SEMICOLON@1899..1900 ";"
          WHITESPACE@1900..1901 " "
          R_CURLY@1901..1902 "}"
      WHITESPACE@1902..1903 "\n"
      R_CURLY@1903..1904 "}"
  WHITESPACE@1904..1906 "\n\n"
  FN@1906..1960
    FN_KW@1906..1908 "fn"
    WHITESPACE@1908..1909 " "
    NAME@1909..1921
      IDENT@1909..1921 "evil_lincoln"
    PARAM_LIST@1921..1923
      L_PAREN@1921..1922 "("
      R_PAREN@1922..1923 ")"
    WHITESPACE@1923..1924 " "
    BLOCK_EXPR@1924..1960
      L_CURLY@1924..1925 "{"
      WHITESPACE@1925..1926 " "
      LET_STMT@1926..1958
        LET_KW@1926..1929 "let"
        WHITESPACE@1929..1930 " "
        IDENT_PAT@1930..1935
          NAME@1930..1935
            IDENT@1930..1935 "_evil"
        WHITESPACE@1935..1936 " "
        EQ@1936..1937 "="
        WHITESPACE@1937..1938 " "
        MACRO_CALL@1938..1957
          PATH@1938..1945
            PATH_SEGMENT@1938..1945
              NAME_REF@1938..1945
                IDENT@1938..1945 "println"
          BANG@1945..1946 "!"
          TOKEN_TREE@1946..1957
            L_PAREN@1946..1947 "("
            STRING@1947..1956 "\"lincoln\""
            R_PAREN@1956..1957 ")"
        SEMICOLON@1957..1958 ";"
      WHITESPACE@1958..1959 " "
      R_CURLY@1959..1960 "}"
  WHITESPACE@1960..1962 "\n\n"
  FN@1962..2198
    FN_KW@1962..1964 "fn"
    WHITESPACE@1964..1965 " "
    NAME@1965..1969
      IDENT@1965..1969 "dots"
    PARAM_LIST@1969..1971
      L_PAREN@1969..1970 "("
      R_PAREN@1970..1971 ")"
    WHITESPACE@1971..1972 " "
    BLOCK_EXPR@1972..2198
      L_CURLY@1972..1973 "{"
      WHITESPACE@1973..1978 "\n    "
      EXPR_STMT@1978..2196
        MACRO_CALL@1978..2195
          PATH@1978..1987
            PATH_SEGMENT@1978..1987
              NAME_REF@1978..1987
                IDENT@1978..1987 "assert_eq"
          BANG@1987..1988 "!"
          TOKEN_TREE@1988..2195
            L_PAREN@1988..1989 "("
            IDENT@1989..1995 "String"
            COLON@1995..1996 ":"
            COLON@1996..1997 ":"
            IDENT@1997..2001 "from"
            TOKEN_TREE@2001..2055
              L_PAREN@2001..2002 "("
              STRING@2002..2054 "\".................... ..."
              R_PAREN@2054..2055 ")"
            COMMA@2055..2056 ","
            WHITESPACE@2056..2072 "\n               "
            IDENT@2072..2078 "format"
            BANG@2078..2079 "!"
            TOKEN_TREE@2079..2194
              L_PAREN@2079..2080 "("
              STRING@2080..2086 "\"{:?}\""
              COMMA@2086..2087 ","
              WHITESPACE@2087..2088 " "
              DOT@2088..2089 "."
              DOT@2089..2090 "."
              WHITESPACE@2090..2091 " "
              DOT@2091..2092 "."
              DOT@2092..2093 "."
              WHITESPACE@2093..2094 " "
              DOT@2094..2095 "."
              DOT@2095..2096 "."
              WHITESPACE@2096..2097 " "
              DOT@2097..2098 "."
              DOT@2098..2099 "."
              WHITESPACE@2099..2100 " "
              DOT@2100..2101 "."
              DOT@2101..2102 "."
              WHITESPACE@2102..2103 " "
              DOT@2103..2104 "."
              DOT@2104..2105 "."
              WHITESPACE@2105..2106 " "
              DOT@2106..2107 "."
              DOT@2107..2108 "."
              WHITESPACE@2108..2109 " "
              DOT@2109..2110 "."
              DOT@2110..2111 "."
              WHITESPACE@2111..2112 " "
              DOT@2112..2113 "."
              DOT@2113..2114 "."
              WHITESPACE@2114..2115 " "
              DOT@2115..2116 "."
              DOT@2116..2117 "."
              WHITESPACE@2117..2118 " "
              DOT@2118..2119 "."
              DOT@2119..2120 "."
              WHITESPACE@2120..2121 " "
              DOT@2121..2122 "."
              DOT@2122..2123 "."
              WHITESPACE@2123..2124 " "
              DOT@2124..2125 "."
              DOT@2125..2126 "."
              WHITESPACE@2126..2158 "\n                     ..."
              DOT@2158..2159 "."
              DOT@2159..2160 "."
              WHITESPACE@2160..2161 " "
              DOT@2161..2162 "."
              DOT@2162..2163 "."
              WHITESPACE@2163..2164 " "
              DOT@2164..2165 "."
              DOT@2165..2166 "."
              WHITESPACE@2166..2167 " "
              DOT@2167..2168 "."
              DOT@2168..2169 "."
              WHITESPACE@2169..2170 " "
              DOT@2170..2171 "."
              DOT@2171..2172 "."
              WHITESPACE@2172..2173 " "
              DOT@2173..2174 "."
              DOT@2174..2175 "."
              WHITESPACE@2175..2176 " "
              DOT@2176..2177 "."
              DOT@2177..2178 "."
              WHITESPACE@2178..2179 " "
              DOT@2179..2180 "."
              DOT@2180..2181 "."
              WHITESPACE@2181..2182 " "
              DOT@2182..2183 "."
              DOT@2183..2184 "."
              WHITESPACE@2184..2185 " "
              DOT@2185..2186 "."
              DOT@2186..2187 "."
              WHITESPACE@2187..2188 " "
              DOT@2188..2189 "."
              DOT@2189..2190 "."
              WHITESPACE@2190..2191 " "
              DOT@2191..2192 "."
              DOT@2192..2193 "."
              R_PAREN@2193..2194 ")"
            R_PAREN@2194..2195 ")"
        SEMICOLON@2195..2196 ";"
      WHITESPACE@2196..2197 "\n"
      R_CURLY@2197..2198 "}"
  WHITESPACE@2198..2200 "\n\n"
  FN@2200..2693
    FN_KW@2200..2202 "fn"
    WHITESPACE@2202..2203 " "
    NAME@2203..2205
      IDENT@2203..2205 "u8"
    PARAM_LIST@2205..2213
      L_PAREN@2205..2206 "("
      PARAM@2206..2212
        IDENT_PAT@2206..2208
          NAME@2206..2208
            IDENT@2206..2208 "u8"
        COLON@2208..2209 ":"
        WHITESPACE@2209..2210 " "
        PATH_TYPE@2210..2212
          PATH@2210..2212
            PATH_SEGMENT@2210..2212
              NAME_REF@2210..2212
                IDENT@2210..2212 "u8"
      R_PAREN@2212..2213 ")"
    WHITESPACE@2213..2214 " "
    BLOCK_EXPR@2214..2693
      L_CURLY@2214..2215 "{"
      WHITESPACE@2215..2220 "\n    "
      IF_EXPR@2220..2691
        IF_KW@2220..2222 "if"
        WHITESPACE@2222..2223 " "
        CONDITION@2223..2232
          BIN_EXPR@2223..2232
            PATH_EXPR@2223..2225
              PATH@2223..2225
                PATH_SEGMENT@2223..2225
                  NAME_REF@2223..2225
                    IDENT@2223..2225 "u8"
            WHITESPACE@2225..2226 " "
            NEQ@2226..2228 "!="
            WHITESPACE@2228..2229 " "
            LITERAL@2229..2232
              INT_NUMBER@2229..2232 "0u8"
        WHITESPACE@2232..2233 " "
        BLOCK_EXPR@2233..2691
          L_CURLY@2233..2234 "{"
          WHITESPACE@2234..2243 "\n        "
          EXPR_STMT@2243..2685
            MACRO_CALL@2243..2684
              PATH@2243..2252
                PATH_SEGMENT@2243..2252
                  NAME_REF@2243..2252
                    IDENT@2243..2252 "assert_eq"
              BANG@2252..2253 "!"
              TOKEN_TREE@2253..2684
                L_PAREN@2253..2254 "("
                INT_NUMBER@2254..2257 "8u8"
                COMMA@2257..2258 ","
                WHITESPACE@2258..2259 " "
                TOKEN_TREE@2259..2683
                  L_CURLY@2259..2260 "{"
                  WHITESPACE@2260..2273 "\n            "
                  IDENT@2273..2284 "macro_rules"
                  BANG@2284..2285 "!"
                  WHITESPACE@2285..2286 " "
                  IDENT@2286..2288 "u8"
                  WHITESPACE@2288..2289 " "
                  TOKEN_TREE@2289..2567
                    L_CURLY@2289..2290 "{"
                    WHITESPACE@2290..2307 "\n                "
                    TOKEN_TREE@2307..2311
                      L_PAREN@2307..2308 "("
                      IDENT@2308..2310 "u8"
                      R_PAREN@2310..2311 ")"
                    WHITESPACE@2311..2312 " "
                    EQ@2312..2313 "="
                    R_ANGLE@2313..2314 ">"
                    WHITESPACE@2314..2315 " "
                    TOKEN_TREE@2315..2552
                      L_CURLY@2315..2316 "{"
                      WHITESPACE@2316..2337 "\n                    "
                      MOD_KW@2337..2340 "mod"
                      WHITESPACE@2340..2341 " "
                      IDENT@2341..2343 "u8"
                      WHITESPACE@2343..2344 " "
                      TOKEN_TREE@2344..2534
                        L_CURLY@2344..2345 "{"
                        WHITESPACE@2345..2370 "\n                     ..."
                        PUB_KW@2370..2373 "pub"
                        WHITESPACE@2373..2374 " "
                        FN_KW@2374..2376 "fn"
                        WHITESPACE@2376..2377 " "
                        IDENT@2377..2379 "u8"
                        L_ANGLE@2379..2380 "<"
                        LIFETIME_IDENT@2380..2383 "\'u8"
                        COLON@2383..2384 ":"
                        WHITESPACE@2384..2385 " "
                        LIFETIME_IDENT@2385..2388 "\'u8"
                        WHITESPACE@2388..2389 " "
                        PLUS@2389..2390 "+"
                        WHITESPACE@2390..2391 " "
                        LIFETIME_IDENT@2391..2394 "\'u8"
                        R_ANGLE@2394..2395 ">"
                        TOKEN_TREE@2395..2408
                          L_PAREN@2395..2396 "("
                          IDENT@2396..2398 "u8"
                          COLON@2398..2399 ":"
                          WHITESPACE@2399..2400 " "
                          AMP@2400..2401 "&"
                          LIFETIME_IDENT@2401..2404 "\'u8"
                          WHITESPACE@2404..2405 " "
                          IDENT@2405..2407 "u8"
                          R_PAREN@2407..2408 ")"
                        WHITESPACE@2408..2409 " "
                        MINUS@2409..2410 "-"
                        R_ANGLE@2410..2411 ">"
                        WHITESPACE@2411..2412 " "
                        AMP@2412..2413 "&"
                        LIFETIME_IDENT@2413..2416 "\'u8"
                        WHITESPACE@2416..2417 " "
                        IDENT@2417..2419 "u8"
                        WHITESPACE@2419..2420 " "
                        TOKEN_TREE@2420..2512
                          L_CURLY@2420..2421 "{"
                          WHITESPACE@2421..2450 "\n                     ..."
                          STRING@2450..2454 "\"u8\""
                          SEMICOLON@2454..2455 ";"
                          WHITESPACE@2455..2484 "\n                     ..."
                          IDENT@2484..2486 "u8"
                          WHITESPACE@2486..2511 "\n                     ..."
                          R_CURLY@2511..2512 "}"
                        WHITESPACE@2512..2533 "\n                    "
                        R_CURLY@2533..2534 "}"
                      WHITESPACE@2534..2551 "\n                "
                      R_CURLY@2551..2552 "}"
                    SEMICOLON@2552..2553 ";"
                    WHITESPACE@2553..2566 "\n            "
                    R_CURLY@2566..2567 "}"
                  WHITESPACE@2567..2581 "\n\n            "
                  IDENT@2581..2583 "u8"
                  BANG@2583..2584 "!"
                  TOKEN_TREE@2584..2588
                    L_PAREN@2584..2585 "("
                    IDENT@2585..2587 "u8"
                    R_PAREN@2587..2588 ")"
                  SEMICOLON@2588..2589 ";"
                  WHITESPACE@2589..2602 "\n            "
                  LET_KW@2602..2605 "let"
                  WHITESPACE@2605..2606 " "
                  AMP@2606..2607 "&"
                  IDENT@2607..2609 "u8"
                  COLON@2609..2610 ":"
                  WHITESPACE@2610..2611 " "
                  AMP@2611..2612 "&"
                  IDENT@2612..2614 "u8"
                  WHITESPACE@2614..2615 " "
                  EQ@2615..2616 "="
                  WHITESPACE@2616..2617 " "
                  IDENT@2617..2619 "u8"
                  COLON@2619..2620 ":"
                  COLON@2620..2621 ":"
                  IDENT@2621..2623 "u8"
                  TOKEN_TREE@2623..2629
                    L_PAREN@2623..2624 "("
                    AMP@2624..2625 "&"
                    INT_NUMBER@2625..2628 "8u8"
                    R_PAREN@2628..2629 ")"
                  SEMICOLON@2629..2630 ";"
                  WHITESPACE@2630..2643 "\n            "
                  CRATE_KW@2643..2648 "crate"
                  COLON@2648..2649 ":"
                  COLON@2649..2650 ":"
                  IDENT@2650..2652 "u8"
                  TOKEN_TREE@2652..2657
                    L_PAREN@2652..2653 "("
                    INT_NUMBER@2653..2656 "0u8"
                    R_PAREN@2656..2657 ")"
                  SEMICOLON@2657..2658 ";"
                  WHITESPACE@2658..2671 "\n            "
                  IDENT@2671..2673 "u8"
                  WHITESPACE@2673..2682 "\n        "
                  R_CURLY@2682..2683 "}"
                R_PAREN@2683..2684 ")"
            SEMICOLON@2684..2685 ";"
          WHITESPACE@2685..2690 "\n    "
          R_CURLY@2690..2691 "}"
      WHITESPACE@2691..2692 "\n"
      R_CURLY@2692..2693 "}"
  WHITESPACE@2693..2695 "\n\n"
  FN@2695..2832
    FN_KW@2695..2697 "fn"
    WHITESPACE@2697..2698 " "
    NAME@2698..2703
      IDENT@2698..2703 "fishy"
    PARAM_LIST@2703..2705
      L_PAREN@2703..2704 "("
      R_PAREN@2704..2705 ")"
    WHITESPACE@2705..2706 " "
    BLOCK_EXPR@2706..2832
      L_CURLY@2706..2707 "{"
      WHITESPACE@2707..2712 "\n    "
      EXPR_STMT@2712..2830
        MACRO_CALL@2712..2829
          PATH@2712..2721
            PATH_SEGMENT@2712..2721
              NAME_REF@2712..2721
                IDENT@2712..2721 "assert_eq"
          BANG@2721..2722 "!"
          TOKEN_TREE@2722..2829
            L_PAREN@2722..2723 "("
            IDENT@2723..2729 "String"
            COLON@2729..2730 ":"
            COLON@2730..2731 ":"
            IDENT@2731..2735 "from"
            TOKEN_TREE@2735..2742
              L_PAREN@2735..2736 "("
              STRING@2736..2741 "\"><>\""
              R_PAREN@2741..2742 ")"
            COMMA@2742..2743 ","
            WHITESPACE@2743..2759 "\n               "
            IDENT@2759..2765 "String"
            COLON@2765..2766 ":"
            COLON@2766..2767 ":"
            L_ANGLE@2767..2768 "<"
            R_ANGLE@2768..2769 ">"
            COLON@2769..2770 ":"
            COLON@2770..2771 ":"
            IDENT@2771..2775 "from"
            COLON@2775..2776 ":"
            COLON@2776..2777 ":"
            L_ANGLE@2777..2778 "<"
            R_ANGLE@2778..2779 ">"
            TOKEN_TREE@2779..2786
              L_PAREN@2779..2780 "("
              STRING@2780..2785 "\"><>\""
              R_PAREN@2785..2786 ")"
            DOT@2786..2787 "."
            IDENT@2787..2792 "chars"
            COLON@2792..2793 ":"
            COLON@2793..2794 ":"
            L_ANGLE@2794..2795 "<"
            R_ANGLE@2795..2796 ">"
            TOKEN_TREE@2796..2798
              L_PAREN@2796..2797 "("
              R_PAREN@2797..2798 ")"
            DOT@2798..2799 "."
            IDENT@2799..2802 "rev"
            COLON@2802..2803 ":"
            COLON@2803..2804 ":"
            L_ANGLE@2804..2805 "<"
            R_ANGLE@2805..2806 ">"
            TOKEN_TREE@2806..2808
              L_PAREN@2806..2807 "("
              R_PAREN@2807..2808 ")"
            DOT@2808..2809 "."
            IDENT@2809..2816 "collect"
            COLON@2816..2817 ":"
            COLON@2817..2818 ":"
            L_ANGLE@2818..2819 "<"
            IDENT@2819..2825 "String"
            R_ANGLE@2825..2826 ">"
            TOKEN_TREE@2826..2828
              L_PAREN@2826..2827 "("
              R_PAREN@2827..2828 ")"
            R_PAREN@2828..2829 ")"
        SEMICOLON@2829..2830 ";"
      WHITESPACE@2830..2831 "\n"
      R_CURLY@2831..2832 "}"
  WHITESPACE@2832..2834 "\n\n"
  FN@2834..2906
    FN_KW@2834..2836 "fn"
    WHITESPACE@2836..2837 " "
    NAME@2837..2842
      IDENT@2837..2842 "union"
    PARAM_LIST@2842..2844
      L_PAREN@2842..2843 "("
      R_PAREN@2843..2844 ")"
    WHITESPACE@2844..2845 " "
    BLOCK_EXPR@2845..2906
      L_CURLY@2845..2846 "{"
      WHITESPACE@2846..2851 "\n    "
      UNION@2851..2904
        UNION_KW@2851..2856 "union"
        WHITESPACE@2856..2857 " "
        NAME@2857..2862
          IDENT@2857..2862 "union"
        GENERIC_PARAM_LIST@2862..2870
          L_ANGLE@2862..2863 "<"
          LIFETIME_PARAM@2863..2869
            LIFETIME@2863..2869
              LIFETIME_IDENT@2863..2869 "\'union"
          R_ANGLE@2869..2870 ">"
        WHITESPACE@2870..2871 " "
        RECORD_FIELD_LIST@2871..2904
          L_CURLY@2871..2872 "{"
          WHITESPACE@2872..2873 " "
          RECORD_FIELD@2873..2901
            NAME@2873..2878
              IDENT@2873..2878 "union"
            COLON@2878..2879 ":"
            WHITESPACE@2879..2880 " "
            REF_TYPE@2880..2901
              AMP@2880..2881 "&"
              LIFETIME@2881..2887
                LIFETIME_IDENT@2881..2887 "\'union"
              WHITESPACE@2887..2888 " "
              PATH_TYPE@2888..2901
                PATH@2888..2901
                  PATH_SEGMENT@2888..2901
                    NAME_REF@2888..2893
                      IDENT@2888..2893 "union"
                    GENERIC_ARG_LIST@2893..2901
                      L_ANGLE@2893..2894 "<"
                      LIFETIME_ARG@2894..2900
                        LIFETIME@2894..2900
                          LIFETIME_IDENT@2894..2900 "\'union"
                      R_ANGLE@2900..2901 ">"
          COMMA@2901..2902 ","
          WHITESPACE@2902..2903 " "
          R_CURLY@2903..2904 "}"
      WHITESPACE@2904..2905 "\n"
      R_CURLY@2905..2906 "}"
  WHITESPACE@2906..2908 "\n\n"
  FN@2908..3042
    FN_KW@2908..2910 "fn"
    WHITESPACE@2910..2911 " "
    NAME@2911..2929
      IDENT@2911..2929 "special_characters"
    PARAM_LIST@2929..2931
      L_PAREN@2929..2930 "("
      R_PAREN@2930..2931 ")"
    WHITESPACE@2931..2932 " "
    BLOCK_EXPR@2932..3042
      L_CURLY@2932..2933 "{"
      WHITESPACE@2933..2938 "\n    "
      LET_STMT@2938..3021
        LET_KW@2938..2941 "let"
        WHITESPACE@2941..2942 " "
        IDENT_PAT@2942..2945
          NAME@2942..2945
            IDENT@2942..2945 "val"
        WHITESPACE@2945..2946 " "
        EQ@2946..2947 "="
        WHITESPACE@2947..2948 " "
        PREFIX_EXPR@2948..3013
          BANG@2948..2949 "!"
          PAREN_EXPR@2949..3013
            L_PAREN@2949..2950 "("
            BIN_EXPR@2950..3012
              CALL_EXPR@2950..2995
                PAREN_EXPR@2950..2971
                  L_PAREN@2950..2951 "("
                  CLOSURE_EXPR@2951..2970
                    PARAM_LIST@2951..2968
                      PIPE@2951..2952 "|"
                      PARAM@2952..2962
                        TUPLE_PAT@2952..2956
                          L_PAREN@2952..2953 "("
                          REST_PAT@2953..2955
                            DOT2@2953..2955 ".."
                          R_PAREN@2955..2956 ")"
                        COLON@2956..2957 ":"
                        TUPLE_TYPE@2957..2962
                          L_PAREN@2957..2958 "("
                          INFER_TYPE@2958..2959
                            UNDERSCORE@2958..2959 "_"
                          COMMA@2959..2960 ","
                          INFER_TYPE@2960..2961
                            UNDERSCORE@2960..2961 "_"
                          R_PAREN@2961..2962 ")"
                      COMMA@2962..2963 ","
                      PARAM@2963..2967
                        IDENT_PAT@2963..2967
                          NAME@2963..2965
                            IDENT@2963..2965 "__"
                          AT@2965..2966 "@"
                          WILDCARD_PAT@2966..2967
                            UNDERSCORE@2966..2967 "_"
                      PIPE@2967..2968 "|"
                    PATH_EXPR@2968..2970
                      PATH@2968..2970
                        PATH_SEGMENT@2968..2970
                          NAME_REF@2968..2970
                            IDENT@2968..2970 "__"
                  R_PAREN@2970..2971 ")"
                ARG_LIST@2971..2995
                  L_PAREN@2971..2972 "("
                  TUPLE_EXPR@2972..2987
                    L_PAREN@2972..2973 "("
                    REF_EXPR@2973..2979
                      AMP@2973..2974 "&"
                      PREFIX_EXPR@2974..2979
                        STAR@2974..2975 "*"
                        LITERAL@2975..2979
                          STRING@2975..2979 "\"\\\\\""
                    COMMA@2979..2980 ","
                    LITERAL@2980..2986
                      CHAR@2980..2986 "\'🤔\'"
                    R_PAREN@2986..2987 ")"
                  COMMENT@2987..2991 "/**/"
                  COMMA@2991..2992 ","
                  BLOCK_EXPR@2992..2994
                    L_CURLY@2992..2993 "{"
                    R_CURLY@2993..2994 "}"
                  R_PAREN@2994..2995 ")"
              EQ2@2995..2997 "=="
              BLOCK_EXPR@2997..3012
                L_CURLY@2997..2998 "{"
                EXPR_STMT@2998..3011
                  REF_EXPR@2998..3010
                    AMP@2998..2999 "&"
                    INDEX_EXPR@2999..3010
                      ARRAY_EXPR@2999..3006
                        L_BRACK@2999..3000 "["
                        RANGE_EXPR@3000..3005
                          DOT2EQ@3000..3003 "..="
                          RANGE_EXPR@3003..3005
                            DOT2@3003..3005 ".."
                        R_BRACK@3005..3006 "]"
                      L_BRACK@3006..3007 "["
                      RANGE_EXPR@3007..3009
                        DOT2@3007..3009 ".."
                      R_BRACK@3009..3010 "]"
                  SEMICOLON@3010..3011 ";"
                R_CURLY@3011..3012 "}"
            R_PAREN@3012..3013 ")"
        COMMENT@3013..3015 "//"
        WHITESPACE@3015..3020 "\n    "
        SEMICOLON@3020..3021 ";"
      WHITESPACE@3021..3026 "\n    "
      EXPR_STMT@3026..3040
        MACRO_CALL@3026..3039
          PATH@3026..3032
            PATH_SEGMENT@3026..3032
              NAME_REF@3026..3032
                IDENT@3026..3032 "assert"
          BANG@3032..3033 "!"
          TOKEN_TREE@3033..3039
            L_PAREN@3033..3034 "("
            BANG@3034..3035 "!"
            IDENT@3035..3038 "val"
            R_PAREN@3038..3039 ")"
        SEMICOLON@3039..3040 ";"
      WHITESPACE@3040..3041 "\n"
      R_CURLY@3041..3042 "}"
  WHITESPACE@3042..3044 "\n\n"
  FN@3044..3514
    FN_KW@3044..3046 "fn"
    WHITESPACE@3046..3047 " "
    NAME@3047..3057
      IDENT@3047..3057 "punch_card"
    PARAM_LIST@3057..3059
      L_PAREN@3057..3058 "("
      R_PAREN@3058..3059 ")"
    WHITESPACE@3059..3060 " "
    RET_TYPE@3060..3083
      THIN_ARROW@3060..3062 "->"
      WHITESPACE@3062..3063 " "
      IMPL_TRAIT_TYPE@3063..3083
        IMPL_KW@3063..3067 "impl"
        WHITESPACE@3067..3068 " "
        TYPE_BOUND_LIST@3068..3083
          TYPE_BOUND@3068..3083
            PATH_TYPE@3068..3083
              PATH@3068..3083
                PATH@3068..3076
                  PATH@3068..3071
                    PATH_SEGMENT@3068..3071
                      NAME_REF@3068..3071
                        IDENT@3068..3071 "std"
                  COLON2@3071..3073 "::"
                  PATH_SEGMENT@3073..3076
                    NAME_REF@3073..3076
                      IDENT@3073..3076 "fmt"
                COLON2@3076..3078 "::"
                PATH_SEGMENT@3078..3083
                  NAME_REF@3078..3083
                    IDENT@3078..3083 "Debug"
    WHITESPACE@3083..3084 " "
    BLOCK_EXPR@3084..3514
      L_CURLY@3084..3085 "{"
      WHITESPACE@3085..3090 "\n    "
      RANGE_EXPR@3090..3512
        DOT2EQ@3090..3093 "..="
        RANGE_EXPR@3093..3512
          DOT2EQ@3093..3096 "..="
          RANGE_EXPR@3096..3512
            DOT2@3096..3098 ".."
            WHITESPACE@3098..3099 " "
            RANGE_EXPR@3099..3512
              DOT2@3099..3101 ".."
              WHITESPACE@3101..3105 "    "
              RANGE_EXPR@3105..3512
                DOT2@3105..3107 ".."
                WHITESPACE@3107..3108 " "
                RANGE_EXPR@3108..3512
                  DOT2@3108..3110 ".."
                  WHITESPACE@3110..3111 " "
                  RANGE_EXPR@3111..3512
                    DOT2@3111..3113 ".."
                    WHITESPACE@3113..3114 " "
                    RANGE_EXPR@3114..3512
                      DOT2@3114..3116 ".."
                      WHITESPACE@3116..3120 "    "
                      RANGE_EXPR@3120..3512
                        DOT2@3120..3122 ".."
                        WHITESPACE@3122..3123 " "
                        RANGE_EXPR@3123..3512
                          DOT2@3123..3125 ".."
                          WHITESPACE@3125..3126 " "
                          RANGE_EXPR@3126..3512
                            DOT2@3126..3128 ".."
                            WHITESPACE@3128..3129 " "
                            RANGE_EXPR@3129..3512
                              DOT2@3129..3131 ".."
                              WHITESPACE@3131..3135 "    "
                              RANGE_EXPR@3135..3512
                                DOT2@3135..3137 ".."
                                WHITESPACE@3137..3138 " "
                                RANGE_EXPR@3138..3512
                                  DOT2EQ@3138..3141 "..="
                                  RANGE_EXPR@3141..3512
                                    DOT2@3141..3143 ".."
                                    WHITESPACE@3143..3144 " "
                                    RANGE_EXPR@3144..3512
                                      DOT2@3144..3146 ".."
                                      WHITESPACE@3146..3151 "\n    "
                                      RANGE_EXPR@3151..3512
                                        DOT2EQ@3151..3154 "..="
                                        RANGE_EXPR@3154..3512
                                          DOT2@3154..3156 ".."
                                          WHITESPACE@3156..3157 " "
                                          RANGE_EXPR@3157..3512
                                            DOT2EQ@3157..3160 "..="
                                            RANGE_EXPR@3160..3512
                                              DOT2@3160..3162 ".."
                                              WHITESPACE@3162..3166 "    "
                                              RANGE_EXPR@3166..3512
                                                DOT2@3166..3168 ".."
                                                WHITESPACE@3168..3169 " "
                                                RANGE_EXPR@3169..3512
                                                  DOT2@3169..3171 ".."
                                                  WHITESPACE@3171..3172 " "
                                                  RANGE_EXPR@3172..3512
                                                    DOT2@3172..3174 ".."
                                                    WHITESPACE@3174..3175 " "
                                                    RANGE_EXPR@3175..3512
                                                      DOT2@3175..3177 ".."
                                                      WHITESPACE@3177..3181 "    "
                                                      RANGE_EXPR@3181..3512
                                                        DOT2@3181..3183 ".."
                                                        WHITESPACE@3183..3184 " "
                                                        RANGE_EXPR@3184..3512
                                                          DOT2@3184..3186 ".."
                                                          WHITESPACE@3186..3187 " "
                                                          RANGE_EXPR@3187..3512
                                                            DOT2@3187..3189 ".."
                                                            WHITESPACE@3189..3190 " "
                                                            RANGE_EXPR@3190..3512
                                                              DOT2@3190..3192 ".."
                                                              WHITESPACE@3192..3196 "    "
                                                              RANGE_EXPR@3196..3512
                                                                DOT2EQ@3196..3199 "..="
                                                                RANGE_EXPR@3199..3512
                                                                  DOT2EQ@3199..3202 "..="
                                                                  RANGE_EXPR@3202..3512
                                                                    DOT2EQ@3202..3205 "..="
                                                                    RANGE_EXPR@3205..3512
                                                                      DOT2@3205..3207 ".."
                                                                      WHITESPACE@3207..3212 "\n    "
                                                                      RANGE_EXPR@3212..3512
                                                                        DOT2EQ@3212..3215 "..="
                                                                        RANGE_EXPR@3215..3512
                                                                          DOT2@3215..3217 ".."
                                                                          WHITESPACE@3217..3218 " "
                                                                          RANGE_EXPR@3218..3512
                                                                            DOT2EQ@3218..3221 "..="
                                                                            RANGE_EXPR@3221..3512
                                                                              DOT2@3221..3223 ".."
                                                                              WHITESPACE@3223..3227 "    "
                                                                              RANGE_EXPR@3227..3512
                                                                                DOT2EQ@3227..3230 "..="
                                                                                RANGE_EXPR@3230..3512
                                                                                  DOT2@3230..3232 ".."
                                                                                  WHITESPACE@3232..3233 " "
                                                                                  RANGE_EXPR@3233..3512
                                                                                    DOT2EQ@3233..3236 "..="
                                                                                    RANGE_EXPR@3236..3512
                                                                                      DOT2@3236..3238 ".."
                                                                                      WHITESPACE@3238..3242 "    "
                                                                                      RANGE_EXPR@3242..3512
                                                                                        DOT2@3242..3244 ".."
                                                                                        WHITESPACE@3244..3245 " "
                                                                                        RANGE_EXPR@3245..3512
                                                                                          DOT2EQ@3245..3248 "..="
                                                                                          RANGE_EXPR@3248..3512
                                                                                            DOT2EQ@3248..3251 "..="
                                                                                            RANGE_EXPR@3251..3512
                                                                                              DOT2@3251..3253 ".."
                                                                                              WHITESPACE@3253..3257 "    "
                                                                                              RANGE_EXPR@3257..3512
                                                                                                DOT2@3257..3259 ".."
                                                                                                WHITESPACE@3259..3260 " "
                                                                                                RANGE_EXPR@3260..3512
                                                                                                  DOT2EQ@3260..3263 "..="
                                                                                                  RANGE_EXPR@3263..3512
                                                                                                    DOT2@3263..3265 ".."
                                                                                                    WHITESPACE@3265..3266 " "
                                                                                                    RANGE_EXPR@3266..3512
                                                                                                      DOT2@3266..3268 ".."
                                                                                                      WHITESPACE@3268..3273 "\n    "
                                                                                                      RANGE_EXPR@3273..3512
                                                                                                        DOT2EQ@3273..3276 "..="
                                                                                                        RANGE_EXPR@3276..3512
                                                                                                          DOT2EQ@3276..3279 "..="
                                                                                                          RANGE_EXPR@3279..3512
                                                                                                            DOT2@3279..3281 ".."
                                                                                                            WHITESPACE@3281..3282 " "
                                                                                                            RANGE_EXPR@3282..3512
                                                                                                              DOT2@3282..3284 ".."
                                                                                                              WHITESPACE@3284..3288 "    "
                                                                                                              RANGE_EXPR@3288..3512
                                                                                                                DOT2EQ@3288..3291 "..="
                                                                                                                RANGE_EXPR@3291..3512
                                                                                                                  DOT2@3291..3293 ".."
                                                                                                                  WHITESPACE@3293..3294 " "
                                                                                                                  RANGE_EXPR@3294..3512
                                                                                                                    DOT2EQ@3294..3297 "..="
                                                                                                                    RANGE_EXPR@3297..3512
                                                                                                                      DOT2@3297..3299 ".."
                                                                                                                      WHITESPACE@3299..3303 "    "
                                                                                                                      RANGE_EXPR@3303..3512
                                                                                                                        DOT2EQ@3303..3306 "..="
                                                                                                                        RANGE_EXPR@3306..3512
                                                                                                                          DOT2@3306..3308 ".."
                                                                                                                          WHITESPACE@3308..3309 " "
                                                                                                                          RANGE_EXPR@3309..3512
                                                                                                                            DOT2@3309..3311 ".."
                                                                                                                            WHITESPACE@3311..3312 " "
                                                                                                                            RANGE_EXPR@3312..3512
                                                                                                                              DOT2@3312..3314 ".."
                                                                                                                              WHITESPACE@3314..3318 "    "
                                                                                                                              RANGE_EXPR@3318..3512
                                                                                                                                DOT2@3318..3320 ".."
                                                                                                                                WHITESPACE@3320..3321 " "
                                                                                                                                RANGE_EXPR@3321..3512
                                                                                                                                  DOT2EQ@3321..3324 "..="
                                                                                                                                  RANGE_EXPR@3324..3512
                                                                                                                                    DOT2@3324..3326 ".."
                                                                                                                                    WHITESPACE@3326..3327 " "
                                                                                                                                    RANGE_EXPR@3327..3512
                                                                                                                                      DOT2@3327..3329 ".."
                                                                                                                                      WHITESPACE@3329..3334 "\n    "
                                                                                                                                      RANGE_EXPR@3334..3512
                                                                                                                                        DOT2EQ@3334..3337 "..="
                                                                                                                                        RANGE_EXPR@3337..3512
                                                                                                                                          DOT2@3337..3339 ".."
                                                                                                                                          WHITESPACE@3339..3340 " "
                                                                                                                                          RANGE_EXPR@3340..3512
                                                                                                                                            DOT2EQ@3340..3343 "..="
                                                                                                                                            RANGE_EXPR@3343..3512
                                                                                                                                              DOT2@3343..3345 ".."
                                                                                                                                              WHITESPACE@3345..3349 "    "
                                                                                                                                              RANGE_EXPR@3349..3512
                                                                                                                                                DOT2EQ@3349..3352 "..="
                                                                                                                                                RANGE_EXPR@3352..3512
                                                                                                                                                  DOT2@3352..3354 ".."
                                                                                                                                                  WHITESPACE@3354..3355 " "
                                                                                                                                                  RANGE_EXPR@3355..3512
                                                                                                                                                    DOT2EQ@3355..3358 "..="
                                                                                                                                                    RANGE_EXPR@3358..3512
                                                                                                                                                      DOT2@3358..3360 ".."
                                                                                                                                                      WHITESPACE@3360..3364 "    "
                                                                                                                                                      RANGE_EXPR@3364..3512
                                                                                                                                                        DOT2@3364..3366 ".."
                                                                                                                                                        WHITESPACE@3366..3367 " "
                                                                                                                                                        RANGE_EXPR@3367..3512
                                                                                                                                                          DOT2EQ@3367..3370 "..="
                                                                                                                                                          RANGE_EXPR@3370..3512
                                                                                                                                                            DOT2@3370..3372 ".."
                                                                                                                                                            WHITESPACE@3372..3373 " "
                                                                                                                                                            RANGE_EXPR@3373..3512
                                                                                                                                                              DOT2@3373..3375 ".."
                                                                                                                                                              WHITESPACE@3375..3379 "    "
                                                                                                                                                              RANGE_EXPR@3379..3512
                                                                                                                                                                DOT2@3379..3381 ".."
                                                                                                                                                                WHITESPACE@3381..3382 " "
                                                                                                                                                                RANGE_EXPR@3382..3512
                                                                                                                                                                  DOT2EQ@3382..3385 "..="
                                                                                                                                                                  RANGE_EXPR@3385..3512
                                                                                                                                                                    DOT2@3385..3387 ".."
                                                                                                                                                                    WHITESPACE@3387..3388 " "
                                                                                                                                                                    RANGE_EXPR@3388..3512
                                                                                                                                                                      DOT2@3388..3390 ".."
                                                                                                                                                                      WHITESPACE@3390..3395 "\n    "
                                                                                                                                                                      RANGE_EXPR@3395..3512
                                                                                                                                                                        DOT2EQ@3395..3398 "..="
                                                                                                                                                                        RANGE_EXPR@3398..3512
                                                                                                                                                                          DOT2@3398..3400 ".."
                                                                                                                                                                          WHITESPACE@3400..3401 " "
                                                                                                                                                                          RANGE_EXPR@3401..3512
                                                                                                                                                                            DOT2EQ@3401..3404 "..="
                                                                                                                                                                            RANGE_EXPR@3404..3512
                                                                                                                                                                              DOT2@3404..3406 ".."
                                                                                                                                                                              WHITESPACE@3406..3410 "    "
                                                                                                                                                                              RANGE_EXPR@3410..3512
                                                                                                                                                                                DOT2EQ@3410..3413 "..="
                                                                                                                                                                                RANGE_EXPR@3413..3512
                                                                                                                                                                                  DOT2@3413..3415 ".."
                                                                                                                                                                                  WHITESPACE@3415..3416 " "
                                                                                                                                                                                  RANGE_EXPR@3416..3512
                                                                                                                                                                                    DOT2EQ@3416..3419 "..="
                                                                                                                                                                                    RANGE_EXPR@3419..3512
                                                                                                                                                                                      DOT2@3419..3421 ".."
                                                                                                                                                                                      WHITESPACE@3421..3425 "    "
                                                                                                                                                                                      RANGE_EXPR@3425..3512
                                                                                                                                                                                        DOT2@3425..3427 ".."
                                                                                                                                                                                        WHITESPACE@3427..3428 " "
                                                                                                                                                                                        RANGE_EXPR@3428..3512
                                                                                                                                                                                          DOT2@3428..3430 ".."
                                                                                                                                                                                          WHITESPACE@3430..3431 " "
                                                                                                                                                                                          RANGE_EXPR@3431..3512
                                                                                                                                                                                            DOT2EQ@3431..3434 "..="
                                                                                                                                                                                            RANGE_EXPR@3434..3512
                                                                                                                                                                                              DOT2@3434..3436 ".."
                                                                                                                                                                                              WHITESPACE@3436..3440 "    "
                                                                                                                                                                                              RANGE_EXPR@3440..3512
                                                                                                                                                                                                DOT2@3440..3442 ".."
                                                                                                                                                                                                WHITESPACE@3442..3443 " "
                                                                                                                                                                                                RANGE_EXPR@3443..3512
                                                                                                                                                                                                  DOT2EQ@3443..3446 "..="
                                                                                                                                                                                                  RANGE_EXPR@3446..3512
                                                                                                                                                                                                    DOT2@3446..3448 ".."
                                                                                                                                                                                                    WHITESPACE@3448..3449 " "
                                                                                                                                                                                                    RANGE_EXPR@3449..3512
                                                                                                                                                                                                      DOT2@3449..3451 ".."
                                                                                                                                                                                                      WHITESPACE@3451..3456 "\n    "
                                                                                                                                                                                                      RANGE_EXPR@3456..3512
                                                                                                                                                                                                        DOT2EQ@3456..3459 "..="
                                                                                                                                                                                                        RANGE_EXPR@3459..3512
                                                                                                                                                                                                          DOT2@3459..3461 ".."
                                                                                                                                                                                                          WHITESPACE@3461..3462 " "
                                                                                                                                                                                                          RANGE_EXPR@3462..3512
                                                                                                                                                                                                            DOT2EQ@3462..3465 "..="
                                                                                                                                                                                                            RANGE_EXPR@3465..3512
                                                                                                                                                                                                              DOT2@3465..3467 ".."
                                                                                                                                                                                                              WHITESPACE@3467..3471 "    "
                                                                                                                                                                                                              RANGE_EXPR@3471..3512
                                                                                                                                                                                                                DOT2@3471..3473 ".."
                                                                                                                                                                                                                WHITESPACE@3473..3474 " "
                                                                                                                                                                                                                RANGE_EXPR@3474..3512
                                                                                                                                                                                                                  DOT2EQ@3474..3477 "..="
                                                                                                                                                                                                                  RANGE_EXPR@3477..3512
                                                                                                                                                                                                                    DOT2EQ@3477..3480 "..="
                                                                                                                                                                                                                    RANGE_EXPR@3480..3512
                                                                                                                                                                                                                      DOT2@3480..3482 ".."
                                                                                                                                                                                                                      WHITESPACE@3482..3486 "    "
                                                                                                                                                                                                                      RANGE_EXPR@3486..3512
                                                                                                                                                                                                                        DOT2EQ@3486..3489 "..="
                                                                                                                                                                                                                        RANGE_EXPR@3489..3512
                                                                                                                                                                                                                          DOT2EQ@3489..3492 "..="
                                                                                                                                                                                                                          RANGE_EXPR@3492..3512
                                                                                                                                                                                                                            DOT2@3492..3494 ".."
                                                                                                                                                                                                                            WHITESPACE@3494..3495 " "
                                                                                                                                                                                                                            RANGE_EXPR@3495..3512
                                                                                                                                                                                                                              DOT2@3495..3497 ".."
                                                                                                                                                                                                                              WHITESPACE@3497..3501 "    "
                                                                                                                                                                                                                              RANGE_EXPR@3501..3512
                                                                                                                                                                                                                                DOT2@3501..3503 ".."
                                                                                                                                                                                                                                WHITESPACE@3503..3504 " "
                                                                                                                                                                                                                                RANGE_EXPR@3504..3512
                                                                                                                                                                                                                                  DOT2EQ@3504..3507 "..="
                                                                                                                                                                                                                                  RANGE_EXPR@3507..3512
                                                                                                                                                                                                                                    DOT2@3507..3509 ".."
                                                                                                                                                                                                                                    WHITESPACE@3509..3510 " "
                                                                                                                                                                                                                                    RANGE_EXPR@3510..3512
                                                                                                                                                                                                                                      DOT2@3510..3512 ".."
      WHITESPACE@3512..3513 "\n"
      R_CURLY@3513..3514 "}"
  WHITESPACE@3514..3516 "\n\n"
  FN@3516..3552
    FN_KW@3516..3518 "fn"
    WHITESPACE@3518..3519 " "
    NAME@3519..3525
      IDENT@3519..3525 "ktulhu"
    PARAM_LIST@3525..3527
      L_PAREN@3525..3526 "("
      R_PAREN@3526..3527 ")"
    WHITESPACE@3527..3528 " "
    BLOCK_EXPR@3528..3552
      L_CURLY@3528..3529 "{"
      WHITESPACE@3529..3534 "\n    "
      SEMICOLON@3534..3535 ";"
      SEMICOLON@3535..3536 ";"
      SEMICOLON@3536..3537 ";"
      EXPR_STMT@3537..3540
        TUPLE_EXPR@3537..3539
          L_PAREN@3537..3538 "("
          R_PAREN@3538..3539 ")"
        SEMICOLON@3539..3540 ";"
      SEMICOLON@3540..3541 ";"
      SEMICOLON@3541..3542 ";"
      SEMICOLON@3542..3543 ";"
      SEMICOLON@3543..3544 ";"
      SEMICOLON@3544..3545 ";"
      SEMICOLON@3545..3546 ";"
      SEMICOLON@3546..3547 ";"
      SEMICOLON@3547..3548 ";"
      TUPLE_EXPR@3548..3550
        L_PAREN@3548..3549 "("
        R_PAREN@3549..3550 ")"
      WHITESPACE@3550..3551 "\n"
      R_CURLY@3551..3552 "}"
  WHITESPACE@3552..3554 "\n\n"
  FN@3554..3812
    VISIBILITY@3554..3557
      PUB_KW@3554..3557 "pub"
    WHITESPACE@3557..3558 " "
    FN_KW@3558..3560 "fn"
    WHITESPACE@3560..3561 " "
    NAME@3561..3565
      IDENT@3561..3565 "main"
    PARAM_LIST@3565..3567
      L_PAREN@3565..3566 "("
      R_PAREN@3566..3567 ")"
    WHITESPACE@3567..3568 " "
    BLOCK_EXPR@3568..3812
      L_CURLY@3568..3569 "{"
      WHITESPACE@3569..3574 "\n    "
      EXPR_STMT@3574..3584
        CALL_EXPR@3574..3583
          PATH_EXPR@3574..3581
            PATH@3574..3581
              PATH_SEGMENT@3574..3581
                NAME_REF@3574..3581
                  IDENT@3574..3581 "strange"
          ARG_LIST@3581..3583
            L_PAREN@3581..3582 "("
            R_PAREN@3582..3583 ")"
        SEMICOLON@3583..3584 ";"
      WHITESPACE@3584..3589 "\n    "
      EXPR_STMT@3589..3597
        CALL_EXPR@3589..3596
          PATH_EXPR@3589..3594
            PATH@3589..3594
              PATH_SEGMENT@3589..3594
                NAME_REF@3589..3594
                  IDENT@3589..3594 "funny"
          ARG_LIST@3594..3596
            L_PAREN@3594..3595 "("
            R_PAREN@3595..3596 ")"
        SEMICOLON@3596..3597 ";"
      WHITESPACE@3597..3602 "\n    "
      EXPR_STMT@3602..3609
        CALL_EXPR@3602..3608
          PATH_EXPR@3602..3606
            PATH@3602..3606
              PATH_SEGMENT@3602..3606
                NAME_REF@3602..3606
                  IDENT@3602..3606 "what"
          ARG_LIST@3606..3608
            L_PAREN@3606..3607 "("
            R_PAREN@3607..3608 ")"
        SEMICOLON@3608..3609 ";"
      WHITESPACE@3609..3614 "\n    "
      EXPR_STMT@3614..3628
        CALL_EXPR@3614..3627
          PATH_EXPR@3614..3625
            PATH@3614..3625
              PATH_SEGMENT@3614..3625
                NAME_REF@3614..3625
                  IDENT@3614..3625 "zombiejesus"
          ARG_LIST@3625..3627
            L_PAREN@3625..3626 "("
            R_PAREN@3626..3627 ")"
        SEMICOLON@3627..3628 ";"
      WHITESPACE@3628..3633 "\n    "
      EXPR_STMT@3633..3643
        CALL_EXPR@3633..3642
          PATH_EXPR@3633..3640
            PATH@3633..3640
              PATH_SEGMENT@3633..3640
                NAME_REF@3633..3640
                  IDENT@3633..3640 "notsure"
          ARG_LIST@3640..3642
            L_PAREN@3640..3641 "("
            R_PAREN@3641..3642 ")"
        SEMICOLON@3642..3643 ";"
      WHITESPACE@3643..3648 "\n    "
      EXPR_STMT@3648..3664
        CALL_EXPR@3648..3663
          PATH_EXPR@3648..3661
            PATH@3648..3661
              PATH_SEGMENT@3648..3661
                NAME_REF@3648..3661
                  IDENT@3648..3661 "canttouchthis"
          ARG_LIST@3661..3663
            L_PAREN@3661..3662 "("
            R_PAREN@3662..3663 ")"
        SEMICOLON@3663..3664 ";"
      WHITESPACE@3664..3669 "\n    "
      EXPR_STMT@3669..3681
        CALL_EXPR@3669..3680
          PATH_EXPR@3669..3678
            PATH@3669..3678
              PATH_SEGMENT@3669..3678
                NAME_REF@3669..3678
                  IDENT@3669..3678 "angrydome"
          ARG_LIST@3678..3680
            L_PAREN@3678..3679 "("
            R_PAREN@3679..3680 ")"
        SEMICOLON@3680..3681 ";"
      WHITESPACE@3681..3686 "\n    "
      EXPR_STMT@3686..3701
        CALL_EXPR@3686..3700
          PATH_EXPR@3686..3698
            PATH@3686..3698
              PATH_SEGMENT@3686..3698
                NAME_REF@3686..3698
                  IDENT@3686..3698 "evil_lincoln"
          ARG_LIST@3698..3700
            L_PAREN@3698..3699 "("
            R_PAREN@3699..3700 ")"
        SEMICOLON@3700..3701 ";"
      WHITESPACE@3701..3706 "\n    "
      EXPR_STMT@3706..3713
        CALL_EXPR@3706..3712
          PATH_EXPR@3706..3710
            PATH@3706..3710
              PATH_SEGMENT@3706..3710
                NAME_REF@3706..3710
                  IDENT@3706..3710 "dots"
          ARG_LIST@3710..3712
            L_PAREN@3710..3711 "("
            R_PAREN@3711..3712 ")"
        SEMICOLON@3712..3713 ";"
      WHITESPACE@3713..3718 "\n    "
      EXPR_STMT@3718..3726
        CALL_EXPR@3718..3725
          PATH_EXPR@3718..3720
            PATH@3718..3720
              PATH_SEGMENT@3718..3720
                NAME_REF@3718..3720
                  IDENT@3718..3720 "u8"
          ARG_LIST@3720..3725
            L_PAREN@3720..3721 "("
            LITERAL@3721..3724
              INT_NUMBER@3721..3724 "8u8"
            R_PAREN@3724..3725 ")"
        SEMICOLON@3725..3726 ";"
      WHITESPACE@3726..3731 "\n    "
      EXPR_STMT@3731..3739
        CALL_EXPR@3731..3738
          PATH_EXPR@3731..3736
            PATH@3731..3736
              PATH_SEGMENT@3731..3736
                NAME_REF@3731..3736
                  IDENT@3731..3736 "fishy"
          ARG_LIST@3736..3738
            L_PAREN@3736..3737 "("
            R_PAREN@3737..3738 ")"
        SEMICOLON@3738..3739 ";"
      WHITESPACE@3739..3744 "\n    "
      EXPR_STMT@3744..3752
        CALL_EXPR@3744..3751
          PATH_EXPR@3744..3749
            PATH@3744..3749
              PATH_SEGMENT@3744..3749
                NAME_REF@3744..3749
                  IDENT@3744..3749 "union"
          ARG_LIST@3749..3751
            L_PAREN@3749..3750 "("
            R_PAREN@3750..3751 ")"
        SEMICOLON@3751..3752 ";"
      WHITESPACE@3752..3757 "\n    "
      EXPR_STMT@3757..3778
        CALL_EXPR@3757..3777
          PATH_EXPR@3757..3775
            PATH@3757..3775
              PATH_SEGMENT@3757..3775
                NAME_REF@3757..3775
                  IDENT@3757..3775 "special_characters"
          ARG_LIST@3775..3777
            L_PAREN@3775..3776 "("
            R_PAREN@3776..3777 ")"
        SEMICOLON@3777..3778 ";"
      WHITESPACE@3778..3783 "\n    "
      EXPR_STMT@3783..3796
        CALL_EXPR@3783..3795
          PATH_EXPR@3783..3793
            PATH@3783..3793
              PATH_SEGMENT@3783..3793
                NAME_REF@3783..3793
                  IDENT@3783..3793 "punch_card"
          ARG_LIST@3793..3795
            L_PAREN@3793..3794 "("
            R_PAREN@3794..3795 ")"
        SEMICOLON@3795..3796 ";"
      WHITESPACE@3796..3801 "\n    "
      EXPR_STMT@3801..3810
        CALL_EXPR@3801..3809
          PATH_EXPR@3801..3807
            PATH@3801..3807
              PATH_SEGMENT@3801..3807
                NAME_REF@3801..3807
                  IDENT@3801..3807 "ktulhu"
          ARG_LIST@3807..3809
            L_PAREN@3807..3808 "("
            R_PAREN@3808..3809 ")"
        SEMICOLON@3809..3810 ";"
      WHITESPACE@3810..3811 "\n"
      R_CURLY@3811..3812 "}"
  WHITESPACE@3812..3813 "\n"