aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.txt
blob: c18e3c329d4e8e963d3db3bbd7ac23b40fc2f6f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
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) "#"
    EXCL@[272; 273) "!"
    TOKEN_TREE@[273; 302)
      L_BRACK@[273; 274) "["
      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) "#"
    EXCL@[304; 305) "!"
    TOKEN_TREE@[305; 323)
      L_BRACK@[305; 306) "["
      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) "#"
    EXCL@[325; 326) "!"
    TOKEN_TREE@[326; 351)
      L_BRACK@[326; 327) "["
      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) "#"
    EXCL@[353; 354) "!"
    TOKEN_TREE@[354; 376)
      L_BRACK@[354; 355) "["
      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) "#"
    EXCL@[379; 380) "!"
    TOKEN_TREE@[380; 405)
      L_BRACK@[380; 381) "["
      IDENT@[381; 396) "recursion_limit"
      WHITESPACE@[396; 397) " "
      EQ@[397; 398) "="
      WHITESPACE@[398; 399) " "
      STRING@[399; 404) "\"128\""
      R_BRACK@[404; 405) "]"
  WHITESPACE@[405; 407) "\n\n"
  USE_ITEM@[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"
          COLONCOLON@[414; 416) "::"
          PATH_SEGMENT@[416; 420)
            NAME_REF@[416; 420)
              IDENT@[416; 420) "cell"
        COLONCOLON@[420; 422) "::"
        PATH_SEGMENT@[422; 426)
          NAME_REF@[422; 426)
            IDENT@[422; 426) "Cell"
    SEMI@[426; 427) ";"
  WHITESPACE@[427; 428) "\n"
  USE_ITEM@[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"
          COLONCOLON@[435; 437) "::"
          PATH_SEGMENT@[437; 440)
            NAME_REF@[437; 440)
              IDENT@[437; 440) "mem"
        COLONCOLON@[440; 442) "::"
        PATH_SEGMENT@[442; 446)
          NAME_REF@[442; 446)
            IDENT@[442; 446) "swap"
    SEMI@[446; 447) ";"
  WHITESPACE@[447; 449) "\n\n"
  COMMENT@[449; 518) "// Just a grab bag of ..."
  WHITESPACE@[518; 520) "\n\n"
  FN_DEF@[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)
      BLOCK@[541; 572)
        L_CURLY@[541; 542) "{"
        WHITESPACE@[542; 543) " "
        LET_STMT@[543; 570)
          LET_KW@[543; 546) "let"
          WHITESPACE@[546; 547) " "
          BIND_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"
          SEMI@[569; 570) ";"
        WHITESPACE@[570; 571) " "
        R_CURLY@[571; 572) "}"
  WHITESPACE@[572; 574) "\n\n"
  FN_DEF@[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)
      BLOCK@[585; 624)
        L_CURLY@[585; 586) "{"
        WHITESPACE@[586; 591) "\n    "
        FN_DEF@[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)
              BIND_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)
            BLOCK@[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) ")"
          SEMI@[621; 622) ";"
        WHITESPACE@[622; 623) "\n"
        R_CURLY@[623; 624) "}"
  WHITESPACE@[624; 626) "\n\n"
  FN_DEF@[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)
      BLOCK@[636; 816)
        L_CURLY@[636; 637) "{"
        WHITESPACE@[637; 642) "\n    "
        FN_DEF@[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)
              BIND_PAT@[649; 650)
                NAME@[649; 650)
                  IDENT@[649; 650) "x"
              COLON@[650; 651) ":"
              WHITESPACE@[651; 652) " "
              REFERENCE_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"
                      TYPE_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)
            BLOCK@[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)
                        EXCL@[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)
                      BLOCK@[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) ")"
                          SEMI@[710; 711) ";"
                        WHITESPACE@[711; 712) " "
                        R_CURLY@[712; 713) "}"
                SEMI@[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) " "
          BIND_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"
                  COLONCOLON@[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) ")"
          SEMI@[750; 751) ";"
        WHITESPACE@[751; 756) "\n    "
        LET_STMT@[756; 778)
          LET_KW@[756; 759) "let"
          WHITESPACE@[759; 760) " "
          BIND_PAT@[760; 764)
            NAME@[760; 764)
              IDENT@[760; 764) "dont"
          WHITESPACE@[764; 765) " "
          EQ@[765; 766) "="
          WHITESPACE@[766; 767) " "
          BLOCK_EXPR@[767; 777)
            BLOCK@[767; 777)
              L_CURLY@[767; 768) "{"
              LAMBDA_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) "}"
          SEMI@[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) ")"
          SEMI@[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"
            EXCL@[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) ")"
          SEMI@[813; 814) ";"
        WHITESPACE@[814; 815) "\n"
        R_CURLY@[815; 816) "}"
  WHITESPACE@[816; 818) "\n\n"
  FN_DEF@[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)
      BLOCK@[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)
            BLOCK@[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)
                    BLOCK@[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)
                          BLOCK@[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)
                                      BLOCK@[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)
                                            BLOCK@[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)
                                            BLOCK@[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)
                                    PLACEHOLDER_PAT@[1168; 1169)
                                      UNDERSCORE@[1168; 1169) "_"
                                    WHITESPACE@[1169; 1170) " "
                                    FAT_ARROW@[1170; 1172) "=>"
                                    WHITESPACE@[1172; 1173) " "
                                    BLOCK_EXPR@[1173; 1183)
                                      BLOCK@[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) "}"
                              SEMI@[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)
                            BLOCK@[1234; 1273)
                              L_CURLY@[1234; 1235) "{"
                              WHITESPACE@[1235; 1252) "\n                "
                              EXPR_STMT@[1252; 1259)
                                RETURN_EXPR@[1252; 1258)
                                  RETURN_KW@[1252; 1258) "return"
                                SEMI@[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)
                  BLOCK@[1304; 1314)
                    L_CURLY@[1304; 1305) "{"
                    WHITESPACE@[1305; 1306) " "
                    EXPR_STMT@[1306; 1312)
                      BREAK_EXPR@[1306; 1311)
                        BREAK_KW@[1306; 1311) "break"
                      SEMI@[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_DEF@[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)
      BLOCK@[1337; 1539)
        L_CURLY@[1337; 1338) "{"
        WHITESPACE@[1338; 1343) "\n    "
        LET_STMT@[1343; 1361)
          LET_KW@[1343; 1346) "let"
          WHITESPACE@[1346; 1347) " "
          BIND_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"
          SEMI@[1360; 1361) ";"
        WHITESPACE@[1361; 1366) "\n    "
        LET_STMT@[1366; 1400)
          LET_KW@[1366; 1369) "let"
          WHITESPACE@[1369; 1370) " "
          BIND_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) " "
            EQEQ@[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) ")"
          SEMI@[1399; 1400) ";"
        WHITESPACE@[1400; 1405) "\n    "
        LET_STMT@[1405; 1438)
          LET_KW@[1405; 1408) "let"
          WHITESPACE@[1408; 1409) " "
          BIND_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) ")"
          SEMI@[1437; 1438) ";"
        WHITESPACE@[1438; 1443) "\n    "
        LET_STMT@[1443; 1474)
          LET_KW@[1443; 1446) "let"
          WHITESPACE@[1446; 1447) " "
          BIND_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) " "
            EQEQ@[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) ")"
          SEMI@[1473; 1474) ";"
        WHITESPACE@[1474; 1479) "\n    "
        LET_STMT@[1479; 1537)
          LET_KW@[1479; 1482) "let"
          WHITESPACE@[1482; 1483) " "
          BIND_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) " "
            EQEQ@[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) ")"
          SEMI@[1536; 1537) ";"
        WHITESPACE@[1537; 1538) "\n"
        R_CURLY@[1538; 1539) "}"
  WHITESPACE@[1539; 1541) "\n\n"
  FN_DEF@[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)
      BLOCK@[1569; 1741)
        L_CURLY@[1569; 1570) "{"
        WHITESPACE@[1570; 1575) "\n    "
        FN_DEF@[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)
            BLOCK@[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) " "
          BIND_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"
                EXCL@[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) " "
              EQEQ@[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"
                  EXCL@[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) ")"
          SEMI@[1647; 1648) ";"
        WHITESPACE@[1648; 1653) "\n    "
        LET_STMT@[1653; 1685)
          LET_KW@[1653; 1656) "let"
          WHITESPACE@[1656; 1657) " "
          BIND_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"
                EXCL@[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) " "
              EQEQ@[1678; 1680) "=="
              WHITESPACE@[1680; 1681) " "
              TUPLE_EXPR@[1681; 1683)
                L_PAREN@[1681; 1682) "("
                R_PAREN@[1682; 1683) ")"
            R_PAREN@[1683; 1684) ")"
          SEMI@[1684; 1685) ";"
        WHITESPACE@[1685; 1690) "\n    "
        LET_STMT@[1690; 1739)
          LET_KW@[1690; 1693) "let"
          WHITESPACE@[1693; 1694) " "
          BIND_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"
                EXCL@[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) " "
              EQEQ@[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) ")"
          SEMI@[1738; 1739) ";"
        WHITESPACE@[1739; 1740) "\n"
        R_CURLY@[1740; 1741) "}"
  WHITESPACE@[1741; 1743) "\n\n"
  FN_DEF@[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)
      BLOCK@[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)
              BLOCK@[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)
                    BLOCK@[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) " "
          BIND_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"
          SEMI@[1803; 1804) ";"
        WHITESPACE@[1804; 1809) "\n    "
        LOOP_EXPR@[1809; 1902)
          LOOP_KW@[1809; 1813) "loop"
          WHITESPACE@[1813; 1814) " "
          BLOCK_EXPR@[1814; 1902)
            BLOCK@[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"
                SEMI@[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) " "
                      EQEQ@[1829; 1831) "=="
                      WHITESPACE@[1831; 1832) " "
                      LITERAL@[1832; 1833)
                        INT_NUMBER@[1832; 1833) "1"
                  WHITESPACE@[1833; 1834) " "
                  BLOCK_EXPR@[1834; 1887)
                    BLOCK@[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)
                              BLOCK@[1860; 1863)
                                L_CURLY@[1860; 1861) "{"
                                WHITESPACE@[1861; 1862) " "
                                R_CURLY@[1862; 1863) "}"
                          COMMA@[1863; 1864) ","
                          WHITESPACE@[1864; 1865) " "
                          MATCH_ARM@[1865; 1883)
                            PLACEHOLDER_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"
                              EXCL@[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"
                SEMI@[1899; 1900) ";"
              WHITESPACE@[1900; 1901) " "
              R_CURLY@[1901; 1902) "}"
        WHITESPACE@[1902; 1903) "\n"
        R_CURLY@[1903; 1904) "}"
  WHITESPACE@[1904; 1906) "\n\n"
  FN_DEF@[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)
      BLOCK@[1924; 1960)
        L_CURLY@[1924; 1925) "{"
        WHITESPACE@[1925; 1926) " "
        LET_STMT@[1926; 1958)
          LET_KW@[1926; 1929) "let"
          WHITESPACE@[1929; 1930) " "
          BIND_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"
            EXCL@[1945; 1946) "!"
            TOKEN_TREE@[1946; 1957)
              L_PAREN@[1946; 1947) "("
              STRING@[1947; 1956) "\"lincoln\""
              R_PAREN@[1956; 1957) ")"
          SEMI@[1957; 1958) ";"
        WHITESPACE@[1958; 1959) " "
        R_CURLY@[1959; 1960) "}"
  WHITESPACE@[1960; 1962) "\n\n"
  FN_DEF@[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)
      BLOCK@[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"
            EXCL@[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"
              EXCL@[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) ")"
          SEMI@[2195; 2196) ";"
        WHITESPACE@[2196; 2197) "\n"
        R_CURLY@[2197; 2198) "}"
  WHITESPACE@[2198; 2200) "\n\n"
  FN_DEF@[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)
        BIND_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)
      BLOCK@[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)
            BLOCK@[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"
                  EXCL@[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"
                      EXCL@[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@[2380; 2383) "\'u8"
                            COLON@[2383; 2384) ":"
                            WHITESPACE@[2384; 2385) " "
                            LIFETIME@[2385; 2388) "\'u8"
                            WHITESPACE@[2388; 2389) " "
                            PLUS@[2389; 2390) "+"
                            WHITESPACE@[2390; 2391) " "
                            LIFETIME@[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@[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@[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\""
                              SEMI@[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) "}"
                        SEMI@[2552; 2553) ";"
                        WHITESPACE@[2553; 2566) "\n            "
                        R_CURLY@[2566; 2567) "}"
                      WHITESPACE@[2567; 2581) "\n\n            "
                      IDENT@[2581; 2583) "u8"
                      EXCL@[2583; 2584) "!"
                      TOKEN_TREE@[2584; 2588)
                        L_PAREN@[2584; 2585) "("
                        IDENT@[2585; 2587) "u8"
                        R_PAREN@[2587; 2588) ")"
                      SEMI@[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) ")"
                      SEMI@[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) ")"
                      SEMI@[2657; 2658) ";"
                      WHITESPACE@[2658; 2671) "\n            "
                      IDENT@[2671; 2673) "u8"
                      WHITESPACE@[2673; 2682) "\n        "
                      R_CURLY@[2682; 2683) "}"
                    R_PAREN@[2683; 2684) ")"
                SEMI@[2684; 2685) ";"
              WHITESPACE@[2685; 2690) "\n    "
              R_CURLY@[2690; 2691) "}"
        WHITESPACE@[2691; 2692) "\n"
        R_CURLY@[2692; 2693) "}"
  WHITESPACE@[2693; 2695) "\n\n"
  FN_DEF@[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)
      BLOCK@[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"
            EXCL@[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) ")"
          SEMI@[2829; 2830) ";"
        WHITESPACE@[2830; 2831) "\n"
        R_CURLY@[2831; 2832) "}"
  WHITESPACE@[2832; 2834) "\n\n"
  FN_DEF@[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)
      BLOCK@[2845; 2906)
        L_CURLY@[2845; 2846) "{"
        WHITESPACE@[2846; 2851) "\n    "
        STRUCT_DEF@[2851; 2904)
          UNION_KW@[2851; 2856) "union"
          WHITESPACE@[2856; 2857) " "
          NAME@[2857; 2862)
            IDENT@[2857; 2862) "union"
          TYPE_PARAM_LIST@[2862; 2870)
            L_ANGLE@[2862; 2863) "<"
            LIFETIME_PARAM@[2863; 2869)
              LIFETIME@[2863; 2869) "\'union"
            R_ANGLE@[2869; 2870) ">"
          WHITESPACE@[2870; 2871) " "
          RECORD_FIELD_DEF_LIST@[2871; 2904)
            L_CURLY@[2871; 2872) "{"
            WHITESPACE@[2872; 2873) " "
            RECORD_FIELD_DEF@[2873; 2901)
              NAME@[2873; 2878)
                IDENT@[2873; 2878) "union"
              COLON@[2878; 2879) ":"
              WHITESPACE@[2879; 2880) " "
              REFERENCE_TYPE@[2880; 2901)
                AMP@[2880; 2881) "&"
                LIFETIME@[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"
                      TYPE_ARG_LIST@[2893; 2901)
                        L_ANGLE@[2893; 2894) "<"
                        LIFETIME_ARG@[2894; 2900)
                          LIFETIME@[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_DEF@[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)
      BLOCK@[2932; 3042)
        L_CURLY@[2932; 2933) "{"
        WHITESPACE@[2933; 2938) "\n    "
        LET_STMT@[2938; 3021)
          LET_KW@[2938; 2941) "let"
          WHITESPACE@[2941; 2942) " "
          BIND_PAT@[2942; 2945)
            NAME@[2942; 2945)
              IDENT@[2942; 2945) "val"
          WHITESPACE@[2945; 2946) " "
          EQ@[2946; 2947) "="
          WHITESPACE@[2947; 2948) " "
          PREFIX_EXPR@[2948; 3013)
            EXCL@[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) "("
                    LAMBDA_EXPR@[2951; 2970)
                      PARAM_LIST@[2951; 2968)
                        PIPE@[2951; 2952) "|"
                        PARAM@[2952; 2962)
                          TUPLE_PAT@[2952; 2956)
                            L_PAREN@[2952; 2953) "("
                            DOTDOT@[2953; 2955) ".."
                            R_PAREN@[2955; 2956) ")"
                          COLON@[2956; 2957) ":"
                          TUPLE_TYPE@[2957; 2962)
                            L_PAREN@[2957; 2958) "("
                            PLACEHOLDER_TYPE@[2958; 2959)
                              UNDERSCORE@[2958; 2959) "_"
                            COMMA@[2959; 2960) ","
                            PLACEHOLDER_TYPE@[2960; 2961)
                              UNDERSCORE@[2960; 2961) "_"
                            R_PAREN@[2961; 2962) ")"
                        COMMA@[2962; 2963) ","
                        PARAM@[2963; 2967)
                          BIND_PAT@[2963; 2967)
                            NAME@[2963; 2965)
                              IDENT@[2963; 2965) "__"
                            AT@[2965; 2966) "@"
                            PLACEHOLDER_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)
                      BLOCK@[2992; 2994)
                        L_CURLY@[2992; 2993) "{"
                        R_CURLY@[2993; 2994) "}"
                    R_PAREN@[2994; 2995) ")"
                EQEQ@[2995; 2997) "=="
                BLOCK_EXPR@[2997; 3012)
                  BLOCK@[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)
                              DOTDOTEQ@[3000; 3003) "..="
                              RANGE_EXPR@[3003; 3005)
                                DOTDOT@[3003; 3005) ".."
                            R_BRACK@[3005; 3006) "]"
                          L_BRACK@[3006; 3007) "["
                          RANGE_EXPR@[3007; 3009)
                            DOTDOT@[3007; 3009) ".."
                          R_BRACK@[3009; 3010) "]"
                      SEMI@[3010; 3011) ";"
                    R_CURLY@[3011; 3012) "}"
              R_PAREN@[3012; 3013) ")"
          COMMENT@[3013; 3015) "//"
          WHITESPACE@[3015; 3020) "\n    "
          SEMI@[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"
            EXCL@[3032; 3033) "!"
            TOKEN_TREE@[3033; 3039)
              L_PAREN@[3033; 3034) "("
              EXCL@[3034; 3035) "!"
              IDENT@[3035; 3038) "val"
              R_PAREN@[3038; 3039) ")"
          SEMI@[3039; 3040) ";"
        WHITESPACE@[3040; 3041) "\n"
        R_CURLY@[3041; 3042) "}"
  WHITESPACE@[3042; 3044) "\n\n"
  FN_DEF@[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"
                  COLONCOLON@[3071; 3073) "::"
                  PATH_SEGMENT@[3073; 3076)
                    NAME_REF@[3073; 3076)
                      IDENT@[3073; 3076) "fmt"
                COLONCOLON@[3076; 3078) "::"
                PATH_SEGMENT@[3078; 3083)
                  NAME_REF@[3078; 3083)
                    IDENT@[3078; 3083) "Debug"
    WHITESPACE@[3083; 3084) " "
    BLOCK_EXPR@[3084; 3514)
      BLOCK@[3084; 3514)
        L_CURLY@[3084; 3085) "{"
        WHITESPACE@[3085; 3090) "\n    "
        RANGE_EXPR@[3090; 3512)
          DOTDOTEQ@[3090; 3093) "..="
          RANGE_EXPR@[3093; 3512)
            DOTDOTEQ@[3093; 3096) "..="
            RANGE_EXPR@[3096; 3512)
              DOTDOT@[3096; 3098) ".."
              WHITESPACE@[3098; 3099) " "
              RANGE_EXPR@[3099; 3512)
                DOTDOT@[3099; 3101) ".."
                WHITESPACE@[3101; 3105) "    "
                RANGE_EXPR@[3105; 3512)
                  DOTDOT@[3105; 3107) ".."
                  WHITESPACE@[3107; 3108) " "
                  RANGE_EXPR@[3108; 3512)
                    DOTDOT@[3108; 3110) ".."
                    WHITESPACE@[3110; 3111) " "
                    RANGE_EXPR@[3111; 3512)
                      DOTDOT@[3111; 3113) ".."
                      WHITESPACE@[3113; 3114) " "
                      RANGE_EXPR@[3114; 3512)
                        DOTDOT@[3114; 3116) ".."
                        WHITESPACE@[3116; 3120) "    "
                        RANGE_EXPR@[3120; 3512)
                          DOTDOT@[3120; 3122) ".."
                          WHITESPACE@[3122; 3123) " "
                          RANGE_EXPR@[3123; 3512)
                            DOTDOT@[3123; 3125) ".."
                            WHITESPACE@[3125; 3126) " "
                            RANGE_EXPR@[3126; 3512)
                              DOTDOT@[3126; 3128) ".."
                              WHITESPACE@[3128; 3129) " "
                              RANGE_EXPR@[3129; 3512)
                                DOTDOT@[3129; 3131) ".."
                                WHITESPACE@[3131; 3135) "    "
                                RANGE_EXPR@[3135; 3512)
                                  DOTDOT@[3135; 3137) ".."
                                  WHITESPACE@[3137; 3138) " "
                                  RANGE_EXPR@[3138; 3512)
                                    DOTDOTEQ@[3138; 3141) "..="
                                    RANGE_EXPR@[3141; 3512)
                                      DOTDOT@[3141; 3143) ".."
                                      WHITESPACE@[3143; 3144) " "
                                      RANGE_EXPR@[3144; 3512)
                                        DOTDOT@[3144; 3146) ".."
                                        WHITESPACE@[3146; 3151) "\n    "
                                        RANGE_EXPR@[3151; 3512)
                                          DOTDOTEQ@[3151; 3154) "..="
                                          RANGE_EXPR@[3154; 3512)
                                            DOTDOT@[3154; 3156) ".."
                                            WHITESPACE@[3156; 3157) " "
                                            RANGE_EXPR@[3157; 3512)
                                              DOTDOTEQ@[3157; 3160) "..="
                                              RANGE_EXPR@[3160; 3512)
                                                DOTDOT@[3160; 3162) ".."
                                                WHITESPACE@[3162; 3166) "    "
                                                RANGE_EXPR@[3166; 3512)
                                                  DOTDOT@[3166; 3168) ".."
                                                  WHITESPACE@[3168; 3169) " "
                                                  RANGE_EXPR@[3169; 3512)
                                                    DOTDOT@[3169; 3171) ".."
                                                    WHITESPACE@[3171; 3172) " "
                                                    RANGE_EXPR@[3172; 3512)
                                                      DOTDOT@[3172; 3174) ".."
                                                      WHITESPACE@[3174; 3175) " "
                                                      RANGE_EXPR@[3175; 3512)
                                                        DOTDOT@[3175; 3177) ".."
                                                        WHITESPACE@[3177; 3181) "    "
                                                        RANGE_EXPR@[3181; 3512)
                                                          DOTDOT@[3181; 3183) ".."
                                                          WHITESPACE@[3183; 3184) " "
                                                          RANGE_EXPR@[3184; 3512)
                                                            DOTDOT@[3184; 3186) ".."
                                                            WHITESPACE@[3186; 3187) " "
                                                            RANGE_EXPR@[3187; 3512)
                                                              DOTDOT@[3187; 3189) ".."
                                                              WHITESPACE@[3189; 3190) " "
                                                              RANGE_EXPR@[3190; 3512)
                                                                DOTDOT@[3190; 3192) ".."
                                                                WHITESPACE@[3192; 3196) "    "
                                                                RANGE_EXPR@[3196; 3512)
                                                                  DOTDOTEQ@[3196; 3199) "..="
                                                                  RANGE_EXPR@[3199; 3512)
                                                                    DOTDOTEQ@[3199; 3202) "..="
                                                                    RANGE_EXPR@[3202; 3512)
                                                                      DOTDOTEQ@[3202; 3205) "..="
                                                                      RANGE_EXPR@[3205; 3512)
                                                                        DOTDOT@[3205; 3207) ".."
                                                                        WHITESPACE@[3207; 3212) "\n    "
                                                                        RANGE_EXPR@[3212; 3512)
                                                                          DOTDOTEQ@[3212; 3215) "..="
                                                                          RANGE_EXPR@[3215; 3512)
                                                                            DOTDOT@[3215; 3217) ".."
                                                                            WHITESPACE@[3217; 3218) " "
                                                                            RANGE_EXPR@[3218; 3512)
                                                                              DOTDOTEQ@[3218; 3221) "..="
                                                                              RANGE_EXPR@[3221; 3512)
                                                                                DOTDOT@[3221; 3223) ".."
                                                                                WHITESPACE@[3223; 3227) "    "
                                                                                RANGE_EXPR@[3227; 3512)
                                                                                  DOTDOTEQ@[3227; 3230) "..="
                                                                                  RANGE_EXPR@[3230; 3512)
                                                                                    DOTDOT@[3230; 3232) ".."
                                                                                    WHITESPACE@[3232; 3233) " "
                                                                                    RANGE_EXPR@[3233; 3512)
                                                                                      DOTDOTEQ@[3233; 3236) "..="
                                                                                      RANGE_EXPR@[3236; 3512)
                                                                                        DOTDOT@[3236; 3238) ".."
                                                                                        WHITESPACE@[3238; 3242) "    "
                                                                                        RANGE_EXPR@[3242; 3512)
                                                                                          DOTDOT@[3242; 3244) ".."
                                                                                          WHITESPACE@[3244; 3245) " "
                                                                                          RANGE_EXPR@[3245; 3512)
                                                                                            DOTDOTEQ@[3245; 3248) "..="
                                                                                            RANGE_EXPR@[3248; 3512)
                                                                                              DOTDOTEQ@[3248; 3251) "..="
                                                                                              RANGE_EXPR@[3251; 3512)
                                                                                                DOTDOT@[3251; 3253) ".."
                                                                                                WHITESPACE@[3253; 3257) "    "
                                                                                                RANGE_EXPR@[3257; 3512)
                                                                                                  DOTDOT@[3257; 3259) ".."
                                                                                                  WHITESPACE@[3259; 3260) " "
                                                                                                  RANGE_EXPR@[3260; 3512)
                                                                                                    DOTDOTEQ@[3260; 3263) "..="
                                                                                                    RANGE_EXPR@[3263; 3512)
                                                                                                      DOTDOT@[3263; 3265) ".."
                                                                                                      WHITESPACE@[3265; 3266) " "
                                                                                                      RANGE_EXPR@[3266; 3512)
                                                                                                        DOTDOT@[3266; 3268) ".."
                                                                                                        WHITESPACE@[3268; 3273) "\n    "
                                                                                                        RANGE_EXPR@[3273; 3512)
                                                                                                          DOTDOTEQ@[3273; 3276) "..="
                                                                                                          RANGE_EXPR@[3276; 3512)
                                                                                                            DOTDOTEQ@[3276; 3279) "..="
                                                                                                            RANGE_EXPR@[3279; 3512)
                                                                                                              DOTDOT@[3279; 3281) ".."
                                                                                                              WHITESPACE@[3281; 3282) " "
                                                                                                              RANGE_EXPR@[3282; 3512)
                                                                                                                DOTDOT@[3282; 3284) ".."
                                                                                                                WHITESPACE@[3284; 3288) "    "
                                                                                                                RANGE_EXPR@[3288; 3512)
                                                                                                                  DOTDOTEQ@[3288; 3291) "..="
                                                                                                                  RANGE_EXPR@[3291; 3512)
                                                                                                                    DOTDOT@[3291; 3293) ".."
                                                                                                                    WHITESPACE@[3293; 3294) " "
                                                                                                                    RANGE_EXPR@[3294; 3512)
                                                                                                                      DOTDOTEQ@[3294; 3297) "..="
                                                                                                                      RANGE_EXPR@[3297; 3512)
                                                                                                                        DOTDOT@[3297; 3299) ".."
                                                                                                                        WHITESPACE@[3299; 3303) "    "
                                                                                                                        RANGE_EXPR@[3303; 3512)
                                                                                                                          DOTDOTEQ@[3303; 3306) "..="
                                                                                                                          RANGE_EXPR@[3306; 3512)
                                                                                                                            DOTDOT@[3306; 3308) ".."
                                                                                                                            WHITESPACE@[3308; 3309) " "
                                                                                                                            RANGE_EXPR@[3309; 3512)
                                                                                                                              DOTDOT@[3309; 3311) ".."
                                                                                                                              WHITESPACE@[3311; 3312) " "
                                                                                                                              RANGE_EXPR@[3312; 3512)
                                                                                                                                DOTDOT@[3312; 3314) ".."
                                                                                                                                WHITESPACE@[3314; 3318) "    "
                                                                                                                                RANGE_EXPR@[3318; 3512)
                                                                                                                                  DOTDOT@[3318; 3320) ".."
                                                                                                                                  WHITESPACE@[3320; 3321) " "
                                                                                                                                  RANGE_EXPR@[3321; 3512)
                                                                                                                                    DOTDOTEQ@[3321; 3324) "..="
                                                                                                                                    RANGE_EXPR@[3324; 3512)
                                                                                                                                      DOTDOT@[3324; 3326) ".."
                                                                                                                                      WHITESPACE@[3326; 3327) " "
                                                                                                                                      RANGE_EXPR@[3327; 3512)
                                                                                                                                        DOTDOT@[3327; 3329) ".."
                                                                                                                                        WHITESPACE@[3329; 3334) "\n    "
                                                                                                                                        RANGE_EXPR@[3334; 3512)
                                                                                                                                          DOTDOTEQ@[3334; 3337) "..="
                                                                                                                                          RANGE_EXPR@[3337; 3512)
                                                                                                                                            DOTDOT@[3337; 3339) ".."
                                                                                                                                            WHITESPACE@[3339; 3340) " "
                                                                                                                                            RANGE_EXPR@[3340; 3512)
                                                                                                                                              DOTDOTEQ@[3340; 3343) "..="
                                                                                                                                              RANGE_EXPR@[3343; 3512)
                                                                                                                                                DOTDOT@[3343; 3345) ".."
                                                                                                                                                WHITESPACE@[3345; 3349) "    "
                                                                                                                                                RANGE_EXPR@[3349; 3512)
                                                                                                                                                  DOTDOTEQ@[3349; 3352) "..="
                                                                                                                                                  RANGE_EXPR@[3352; 3512)
                                                                                                                                                    DOTDOT@[3352; 3354) ".."
                                                                                                                                                    WHITESPACE@[3354; 3355) " "
                                                                                                                                                    RANGE_EXPR@[3355; 3512)
                                                                                                                                                      DOTDOTEQ@[3355; 3358) "..="
                                                                                                                                                      RANGE_EXPR@[3358; 3512)
                                                                                                                                                        DOTDOT@[3358; 3360) ".."
                                                                                                                                                        WHITESPACE@[3360; 3364) "    "
                                                                                                                                                        RANGE_EXPR@[3364; 3512)
                                                                                                                                                          DOTDOT@[3364; 3366) ".."
                                                                                                                                                          WHITESPACE@[3366; 3367) " "
                                                                                                                                                          RANGE_EXPR@[3367; 3512)
                                                                                                                                                            DOTDOTEQ@[3367; 3370) "..="
                                                                                                                                                            RANGE_EXPR@[3370; 3512)
                                                                                                                                                              DOTDOT@[3370; 3372) ".."
                                                                                                                                                              WHITESPACE@[3372; 3373) " "
                                                                                                                                                              RANGE_EXPR@[3373; 3512)
                                                                                                                                                                DOTDOT@[3373; 3375) ".."
                                                                                                                                                                WHITESPACE@[3375; 3379) "    "
                                                                                                                                                                RANGE_EXPR@[3379; 3512)
                                                                                                                                                                  DOTDOT@[3379; 3381) ".."
                                                                                                                                                                  WHITESPACE@[3381; 3382) " "
                                                                                                                                                                  RANGE_EXPR@[3382; 3512)
                                                                                                                                                                    DOTDOTEQ@[3382; 3385) "..="
                                                                                                                                                                    RANGE_EXPR@[3385; 3512)
                                                                                                                                                                      DOTDOT@[3385; 3387) ".."
                                                                                                                                                                      WHITESPACE@[3387; 3388) " "
                                                                                                                                                                      RANGE_EXPR@[3388; 3512)
                                                                                                                                                                        DOTDOT@[3388; 3390) ".."
                                                                                                                                                                        WHITESPACE@[3390; 3395) "\n    "
                                                                                                                                                                        RANGE_EXPR@[3395; 3512)
                                                                                                                                                                          DOTDOTEQ@[3395; 3398) "..="
                                                                                                                                                                          RANGE_EXPR@[3398; 3512)
                                                                                                                                                                            DOTDOT@[3398; 3400) ".."
                                                                                                                                                                            WHITESPACE@[3400; 3401) " "
                                                                                                                                                                            RANGE_EXPR@[3401; 3512)
                                                                                                                                                                              DOTDOTEQ@[3401; 3404) "..="
                                                                                                                                                                              RANGE_EXPR@[3404; 3512)
                                                                                                                                                                                DOTDOT@[3404; 3406) ".."
                                                                                                                                                                                WHITESPACE@[3406; 3410) "    "
                                                                                                                                                                                RANGE_EXPR@[3410; 3512)
                                                                                                                                                                                  DOTDOTEQ@[3410; 3413) "..="
                                                                                                                                                                                  RANGE_EXPR@[3413; 3512)
                                                                                                                                                                                    DOTDOT@[3413; 3415) ".."
                                                                                                                                                                                    WHITESPACE@[3415; 3416) " "
                                                                                                                                                                                    RANGE_EXPR@[3416; 3512)
                                                                                                                                                                                      DOTDOTEQ@[3416; 3419) "..="
                                                                                                                                                                                      RANGE_EXPR@[3419; 3512)
                                                                                                                                                                                        DOTDOT@[3419; 3421) ".."
                                                                                                                                                                                        WHITESPACE@[3421; 3425) "    "
                                                                                                                                                                                        RANGE_EXPR@[3425; 3512)
                                                                                                                                                                                          DOTDOT@[3425; 3427) ".."
                                                                                                                                                                                          WHITESPACE@[3427; 3428) " "
                                                                                                                                                                                          RANGE_EXPR@[3428; 3512)
                                                                                                                                                                                            DOTDOT@[3428; 3430) ".."
                                                                                                                                                                                            WHITESPACE@[3430; 3431) " "
                                                                                                                                                                                            RANGE_EXPR@[3431; 3512)
                                                                                                                                                                                              DOTDOTEQ@[3431; 3434) "..="
                                                                                                                                                                                              RANGE_EXPR@[3434; 3512)
                                                                                                                                                                                                DOTDOT@[3434; 3436) ".."
                                                                                                                                                                                                WHITESPACE@[3436; 3440) "    "
                                                                                                                                                                                                RANGE_EXPR@[3440; 3512)
                                                                                                                                                                                                  DOTDOT@[3440; 3442) ".."
                                                                                                                                                                                                  WHITESPACE@[3442; 3443) " "
                                                                                                                                                                                                  RANGE_EXPR@[3443; 3512)
                                                                                                                                                                                                    DOTDOTEQ@[3443; 3446) "..="
                                                                                                                                                                                                    RANGE_EXPR@[3446; 3512)
                                                                                                                                                                                                      DOTDOT@[3446; 3448) ".."
                                                                                                                                                                                                      WHITESPACE@[3448; 3449) " "
                                                                                                                                                                                                      RANGE_EXPR@[3449; 3512)
                                                                                                                                                                                                        DOTDOT@[3449; 3451) ".."
                                                                                                                                                                                                        WHITESPACE@[3451; 3456) "\n    "
                                                                                                                                                                                                        RANGE_EXPR@[3456; 3512)
                                                                                                                                                                                                          DOTDOTEQ@[3456; 3459) "..="
                                                                                                                                                                                                          RANGE_EXPR@[3459; 3512)
                                                                                                                                                                                                            DOTDOT@[3459; 3461) ".."
                                                                                                                                                                                                            WHITESPACE@[3461; 3462) " "
                                                                                                                                                                                                            RANGE_EXPR@[3462; 3512)
                                                                                                                                                                                                              DOTDOTEQ@[3462; 3465) "..="
                                                                                                                                                                                                              RANGE_EXPR@[3465; 3512)
                                                                                                                                                                                                                DOTDOT@[3465; 3467) ".."
                                                                                                                                                                                                                WHITESPACE@[3467; 3471) "    "
                                                                                                                                                                                                                RANGE_EXPR@[3471; 3512)
                                                                                                                                                                                                                  DOTDOT@[3471; 3473) ".."
                                                                                                                                                                                                                  WHITESPACE@[3473; 3474) " "
                                                                                                                                                                                                                  RANGE_EXPR@[3474; 3512)
                                                                                                                                                                                                                    DOTDOTEQ@[3474; 3477) "..="
                                                                                                                                                                                                                    RANGE_EXPR@[3477; 3512)
                                                                                                                                                                                                                      DOTDOTEQ@[3477; 3480) "..="
                                                                                                                                                                                                                      RANGE_EXPR@[3480; 3512)
                                                                                                                                                                                                                        DOTDOT@[3480; 3482) ".."
                                                                                                                                                                                                                        WHITESPACE@[3482; 3486) "    "
                                                                                                                                                                                                                        RANGE_EXPR@[3486; 3512)
                                                                                                                                                                                                                          DOTDOTEQ@[3486; 3489) "..="
                                                                                                                                                                                                                          RANGE_EXPR@[3489; 3512)
                                                                                                                                                                                                                            DOTDOTEQ@[3489; 3492) "..="
                                                                                                                                                                                                                            RANGE_EXPR@[3492; 3512)
                                                                                                                                                                                                                              DOTDOT@[3492; 3494) ".."
                                                                                                                                                                                                                              WHITESPACE@[3494; 3495) " "
                                                                                                                                                                                                                              RANGE_EXPR@[3495; 3512)
                                                                                                                                                                                                                                DOTDOT@[3495; 3497) ".."
                                                                                                                                                                                                                                WHITESPACE@[3497; 3501) "    "
                                                                                                                                                                                                                                RANGE_EXPR@[3501; 3512)
                                                                                                                                                                                                                                  DOTDOT@[3501; 3503) ".."
                                                                                                                                                                                                                                  WHITESPACE@[3503; 3504) " "
                                                                                                                                                                                                                                  RANGE_EXPR@[3504; 3512)
                                                                                                                                                                                                                                    DOTDOTEQ@[3504; 3507) "..="
                                                                                                                                                                                                                                    RANGE_EXPR@[3507; 3512)
                                                                                                                                                                                                                                      DOTDOT@[3507; 3509) ".."
                                                                                                                                                                                                                                      WHITESPACE@[3509; 3510) " "
                                                                                                                                                                                                                                      RANGE_EXPR@[3510; 3512)
                                                                                                                                                                                                                                        DOTDOT@[3510; 3512) ".."
        WHITESPACE@[3512; 3513) "\n"
        R_CURLY@[3513; 3514) "}"
  WHITESPACE@[3514; 3516) "\n\n"
  FN_DEF@[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)
      BLOCK@[3528; 3552)
        L_CURLY@[3528; 3529) "{"
        WHITESPACE@[3529; 3534) "\n    "
        SEMI@[3534; 3535) ";"
        SEMI@[3535; 3536) ";"
        SEMI@[3536; 3537) ";"
        EXPR_STMT@[3537; 3540)
          TUPLE_EXPR@[3537; 3539)
            L_PAREN@[3537; 3538) "("
            R_PAREN@[3538; 3539) ")"
          SEMI@[3539; 3540) ";"
        SEMI@[3540; 3541) ";"
        SEMI@[3541; 3542) ";"
        SEMI@[3542; 3543) ";"
        SEMI@[3543; 3544) ";"
        SEMI@[3544; 3545) ";"
        SEMI@[3545; 3546) ";"
        SEMI@[3546; 3547) ";"
        SEMI@[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_DEF@[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)
      BLOCK@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[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) ")"
          SEMI@[3809; 3810) ";"
        WHITESPACE@[3810; 3811) "\n"
        R_CURLY@[3811; 3812) "}"
  WHITESPACE@[3812; 3813) "\n"