---
source: full-moon/tests/pass_cases.rs
expression: tokens
input_file: full-moon/tests/roblox_cases/pass/type_instantiations
---
- start_position:
    bytes: 0
    line: 1
    character: 1
  end_position:
    bytes: 1277
    line: 28
    character: 3
  token_type:
    type: MultiLineComment
    blocks: 0
    comment: "\n\nTaken from https://github.com/luau-lang/luau/blob/535f92589bdc304c8a2012d6cfad5e7b9faff2f7/tests/conformance/explicit_type_instantiations.luau\n\nMIT License\n\nCopyright (c) 2019-2025 Roblox Corporation\nCopyright (c) 1994–2019 Lua.org, PUC-Rio.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
- start_position:
    bytes: 1277
    line: 28
    character: 3
  end_position:
    bytes: 1278
    line: 28
    character: 3
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1278
    line: 29
    character: 1
  end_position:
    bytes: 1279
    line: 29
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1279
    line: 30
    character: 1
  end_position:
    bytes: 1356
    line: 30
    character: 78
  token_type:
    type: SingleLineComment
    comment: " Tests to ensure explicit type instantiations don't change runtime behavior"
- start_position:
    bytes: 1356
    line: 30
    character: 78
  end_position:
    bytes: 1357
    line: 30
    character: 78
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1357
    line: 31
    character: 1
  end_position:
    bytes: 1362
    line: 31
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1362
    line: 31
    character: 6
  end_position:
    bytes: 1363
    line: 31
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1363
    line: 31
    character: 7
  end_position:
    bytes: 1371
    line: 31
    character: 15
  token_type:
    type: Symbol
    symbol: function
- start_position:
    bytes: 1371
    line: 31
    character: 15
  end_position:
    bytes: 1372
    line: 31
    character: 16
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1372
    line: 31
    character: 16
  end_position:
    bytes: 1380
    line: 31
    character: 24
  token_type:
    type: Identifier
    identifier: identity
- start_position:
    bytes: 1380
    line: 31
    character: 24
  end_position:
    bytes: 1381
    line: 31
    character: 25
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1381
    line: 31
    character: 25
  end_position:
    bytes: 1382
    line: 31
    character: 26
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1382
    line: 31
    character: 26
  end_position:
    bytes: 1383
    line: 31
    character: 27
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1383
    line: 31
    character: 27
  end_position:
    bytes: 1384
    line: 31
    character: 28
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1384
    line: 31
    character: 28
  end_position:
    bytes: 1385
    line: 31
    character: 29
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1385
    line: 31
    character: 29
  end_position:
    bytes: 1386
    line: 31
    character: 30
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1386
    line: 31
    character: 30
  end_position:
    bytes: 1387
    line: 31
    character: 31
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1387
    line: 31
    character: 31
  end_position:
    bytes: 1388
    line: 31
    character: 32
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1388
    line: 31
    character: 32
  end_position:
    bytes: 1389
    line: 31
    character: 33
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1389
    line: 31
    character: 33
  end_position:
    bytes: 1390
    line: 31
    character: 34
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1390
    line: 31
    character: 34
  end_position:
    bytes: 1391
    line: 31
    character: 35
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1391
    line: 31
    character: 35
  end_position:
    bytes: 1392
    line: 31
    character: 36
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1392
    line: 31
    character: 36
  end_position:
    bytes: 1393
    line: 31
    character: 36
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1393
    line: 32
    character: 1
  end_position:
    bytes: 1397
    line: 32
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1397
    line: 32
    character: 5
  end_position:
    bytes: 1403
    line: 32
    character: 11
  token_type:
    type: Symbol
    symbol: return
- start_position:
    bytes: 1403
    line: 32
    character: 11
  end_position:
    bytes: 1404
    line: 32
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1404
    line: 32
    character: 12
  end_position:
    bytes: 1405
    line: 32
    character: 13
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1405
    line: 32
    character: 13
  end_position:
    bytes: 1406
    line: 32
    character: 13
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1406
    line: 33
    character: 1
  end_position:
    bytes: 1409
    line: 33
    character: 4
  token_type:
    type: Symbol
    symbol: end
- start_position:
    bytes: 1409
    line: 33
    character: 4
  end_position:
    bytes: 1410
    line: 33
    character: 4
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1410
    line: 34
    character: 1
  end_position:
    bytes: 1411
    line: 34
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1411
    line: 35
    character: 1
  end_position:
    bytes: 1417
    line: 35
    character: 7
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1417
    line: 35
    character: 7
  end_position:
    bytes: 1418
    line: 35
    character: 8
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1418
    line: 35
    character: 8
  end_position:
    bytes: 1426
    line: 35
    character: 16
  token_type:
    type: Identifier
    identifier: identity
- start_position:
    bytes: 1426
    line: 35
    character: 16
  end_position:
    bytes: 1427
    line: 35
    character: 17
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1427
    line: 35
    character: 17
  end_position:
    bytes: 1428
    line: 35
    character: 18
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1428
    line: 35
    character: 18
  end_position:
    bytes: 1434
    line: 35
    character: 24
  token_type:
    type: Identifier
    identifier: number
- start_position:
    bytes: 1434
    line: 35
    character: 24
  end_position:
    bytes: 1435
    line: 35
    character: 25
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1435
    line: 35
    character: 25
  end_position:
    bytes: 1436
    line: 35
    character: 26
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1436
    line: 35
    character: 26
  end_position:
    bytes: 1437
    line: 35
    character: 27
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1437
    line: 35
    character: 27
  end_position:
    bytes: 1438
    line: 35
    character: 28
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1438
    line: 35
    character: 28
  end_position:
    bytes: 1439
    line: 35
    character: 29
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1439
    line: 35
    character: 29
  end_position:
    bytes: 1440
    line: 35
    character: 30
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1440
    line: 35
    character: 30
  end_position:
    bytes: 1442
    line: 35
    character: 32
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1442
    line: 35
    character: 32
  end_position:
    bytes: 1443
    line: 35
    character: 33
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1443
    line: 35
    character: 33
  end_position:
    bytes: 1444
    line: 35
    character: 34
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1444
    line: 35
    character: 34
  end_position:
    bytes: 1445
    line: 35
    character: 35
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1445
    line: 35
    character: 35
  end_position:
    bytes: 1446
    line: 35
    character: 35
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1446
    line: 36
    character: 1
  end_position:
    bytes: 1447
    line: 36
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1447
    line: 37
    character: 1
  end_position:
    bytes: 1452
    line: 37
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1452
    line: 37
    character: 6
  end_position:
    bytes: 1453
    line: 37
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1453
    line: 37
    character: 7
  end_position:
    bytes: 1461
    line: 37
    character: 15
  token_type:
    type: Symbol
    symbol: function
- start_position:
    bytes: 1461
    line: 37
    character: 15
  end_position:
    bytes: 1462
    line: 37
    character: 16
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1462
    line: 37
    character: 16
  end_position:
    bytes: 1477
    line: 37
    character: 31
  token_type:
    type: Identifier
    identifier: multipleReturns
- start_position:
    bytes: 1477
    line: 37
    character: 31
  end_position:
    bytes: 1478
    line: 37
    character: 32
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1478
    line: 37
    character: 32
  end_position:
    bytes: 1479
    line: 37
    character: 33
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1479
    line: 37
    character: 33
  end_position:
    bytes: 1480
    line: 37
    character: 34
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1480
    line: 37
    character: 34
  end_position:
    bytes: 1481
    line: 37
    character: 35
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1481
    line: 37
    character: 35
  end_position:
    bytes: 1482
    line: 37
    character: 36
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1482
    line: 37
    character: 36
  end_position:
    bytes: 1483
    line: 37
    character: 37
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1483
    line: 37
    character: 37
  end_position:
    bytes: 1484
    line: 37
    character: 38
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1484
    line: 37
    character: 38
  end_position:
    bytes: 1485
    line: 37
    character: 39
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1485
    line: 37
    character: 39
  end_position:
    bytes: 1486
    line: 37
    character: 40
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1486
    line: 37
    character: 40
  end_position:
    bytes: 1487
    line: 37
    character: 41
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1487
    line: 37
    character: 41
  end_position:
    bytes: 1488
    line: 37
    character: 42
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1488
    line: 37
    character: 42
  end_position:
    bytes: 1489
    line: 37
    character: 43
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1489
    line: 37
    character: 43
  end_position:
    bytes: 1490
    line: 37
    character: 44
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1490
    line: 37
    character: 44
  end_position:
    bytes: 1491
    line: 37
    character: 45
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1491
    line: 37
    character: 45
  end_position:
    bytes: 1492
    line: 37
    character: 46
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1492
    line: 37
    character: 46
  end_position:
    bytes: 1493
    line: 37
    character: 47
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1493
    line: 37
    character: 47
  end_position:
    bytes: 1494
    line: 37
    character: 48
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1494
    line: 37
    character: 48
  end_position:
    bytes: 1495
    line: 37
    character: 48
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1495
    line: 38
    character: 1
  end_position:
    bytes: 1499
    line: 38
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1499
    line: 38
    character: 5
  end_position:
    bytes: 1505
    line: 38
    character: 11
  token_type:
    type: Symbol
    symbol: return
- start_position:
    bytes: 1505
    line: 38
    character: 11
  end_position:
    bytes: 1506
    line: 38
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1506
    line: 38
    character: 12
  end_position:
    bytes: 1507
    line: 38
    character: 13
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1507
    line: 38
    character: 13
  end_position:
    bytes: 1508
    line: 38
    character: 14
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1508
    line: 38
    character: 14
  end_position:
    bytes: 1509
    line: 38
    character: 15
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1509
    line: 38
    character: 15
  end_position:
    bytes: 1510
    line: 38
    character: 16
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1510
    line: 38
    character: 16
  end_position:
    bytes: 1511
    line: 38
    character: 16
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1511
    line: 39
    character: 1
  end_position:
    bytes: 1514
    line: 39
    character: 4
  token_type:
    type: Symbol
    symbol: end
- start_position:
    bytes: 1514
    line: 39
    character: 4
  end_position:
    bytes: 1515
    line: 39
    character: 4
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1515
    line: 40
    character: 1
  end_position:
    bytes: 1516
    line: 40
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1516
    line: 41
    character: 1
  end_position:
    bytes: 1521
    line: 41
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1521
    line: 41
    character: 6
  end_position:
    bytes: 1522
    line: 41
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1522
    line: 41
    character: 7
  end_position:
    bytes: 1523
    line: 41
    character: 8
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 1523
    line: 41
    character: 8
  end_position:
    bytes: 1524
    line: 41
    character: 9
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1524
    line: 41
    character: 9
  end_position:
    bytes: 1525
    line: 41
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1525
    line: 41
    character: 10
  end_position:
    bytes: 1526
    line: 41
    character: 11
  token_type:
    type: Identifier
    identifier: b
- start_position:
    bytes: 1526
    line: 41
    character: 11
  end_position:
    bytes: 1527
    line: 41
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1527
    line: 41
    character: 12
  end_position:
    bytes: 1528
    line: 41
    character: 13
  token_type:
    type: Symbol
    symbol: "="
- start_position:
    bytes: 1528
    line: 41
    character: 13
  end_position:
    bytes: 1529
    line: 41
    character: 14
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1529
    line: 41
    character: 14
  end_position:
    bytes: 1544
    line: 41
    character: 29
  token_type:
    type: Identifier
    identifier: multipleReturns
- start_position:
    bytes: 1544
    line: 41
    character: 29
  end_position:
    bytes: 1545
    line: 41
    character: 30
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1545
    line: 41
    character: 30
  end_position:
    bytes: 1546
    line: 41
    character: 31
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1546
    line: 41
    character: 31
  end_position:
    bytes: 1552
    line: 41
    character: 37
  token_type:
    type: Identifier
    identifier: number
- start_position:
    bytes: 1552
    line: 41
    character: 37
  end_position:
    bytes: 1553
    line: 41
    character: 38
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1553
    line: 41
    character: 38
  end_position:
    bytes: 1554
    line: 41
    character: 39
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1554
    line: 41
    character: 39
  end_position:
    bytes: 1555
    line: 41
    character: 40
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1555
    line: 41
    character: 40
  end_position:
    bytes: 1556
    line: 41
    character: 41
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1556
    line: 41
    character: 41
  end_position:
    bytes: 1557
    line: 41
    character: 42
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1557
    line: 41
    character: 42
  end_position:
    bytes: 1558
    line: 41
    character: 42
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1558
    line: 42
    character: 1
  end_position:
    bytes: 1564
    line: 42
    character: 7
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1564
    line: 42
    character: 7
  end_position:
    bytes: 1565
    line: 42
    character: 8
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1565
    line: 42
    character: 8
  end_position:
    bytes: 1566
    line: 42
    character: 9
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 1566
    line: 42
    character: 9
  end_position:
    bytes: 1567
    line: 42
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1567
    line: 42
    character: 10
  end_position:
    bytes: 1569
    line: 42
    character: 12
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1569
    line: 42
    character: 12
  end_position:
    bytes: 1570
    line: 42
    character: 13
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1570
    line: 42
    character: 13
  end_position:
    bytes: 1571
    line: 42
    character: 14
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1571
    line: 42
    character: 14
  end_position:
    bytes: 1572
    line: 42
    character: 15
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1572
    line: 42
    character: 15
  end_position:
    bytes: 1575
    line: 42
    character: 18
  token_type:
    type: Symbol
    symbol: and
- start_position:
    bytes: 1575
    line: 42
    character: 18
  end_position:
    bytes: 1576
    line: 42
    character: 19
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1576
    line: 42
    character: 19
  end_position:
    bytes: 1577
    line: 42
    character: 20
  token_type:
    type: Identifier
    identifier: b
- start_position:
    bytes: 1577
    line: 42
    character: 20
  end_position:
    bytes: 1578
    line: 42
    character: 21
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1578
    line: 42
    character: 21
  end_position:
    bytes: 1580
    line: 42
    character: 23
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1580
    line: 42
    character: 23
  end_position:
    bytes: 1581
    line: 42
    character: 24
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1581
    line: 42
    character: 24
  end_position:
    bytes: 1582
    line: 42
    character: 25
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1582
    line: 42
    character: 25
  end_position:
    bytes: 1583
    line: 42
    character: 26
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1583
    line: 42
    character: 26
  end_position:
    bytes: 1584
    line: 42
    character: 26
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1584
    line: 43
    character: 1
  end_position:
    bytes: 1585
    line: 43
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1585
    line: 44
    character: 1
  end_position:
    bytes: 1590
    line: 44
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1590
    line: 44
    character: 6
  end_position:
    bytes: 1591
    line: 44
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1591
    line: 44
    character: 7
  end_position:
    bytes: 1599
    line: 44
    character: 15
  token_type:
    type: Symbol
    symbol: function
- start_position:
    bytes: 1599
    line: 44
    character: 15
  end_position:
    bytes: 1600
    line: 44
    character: 16
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1600
    line: 44
    character: 16
  end_position:
    bytes: 1609
    line: 44
    character: 25
  token_type:
    type: Identifier
    identifier: typePacks
- start_position:
    bytes: 1609
    line: 44
    character: 25
  end_position:
    bytes: 1610
    line: 44
    character: 26
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1610
    line: 44
    character: 26
  end_position:
    bytes: 1611
    line: 44
    character: 27
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1611
    line: 44
    character: 27
  end_position:
    bytes: 1614
    line: 44
    character: 30
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1614
    line: 44
    character: 30
  end_position:
    bytes: 1615
    line: 44
    character: 31
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1615
    line: 44
    character: 31
  end_position:
    bytes: 1616
    line: 44
    character: 32
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1616
    line: 44
    character: 32
  end_position:
    bytes: 1619
    line: 44
    character: 35
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1619
    line: 44
    character: 35
  end_position:
    bytes: 1620
    line: 44
    character: 36
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1620
    line: 44
    character: 36
  end_position:
    bytes: 1621
    line: 44
    character: 37
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1621
    line: 44
    character: 37
  end_position:
    bytes: 1622
    line: 44
    character: 38
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1622
    line: 44
    character: 38
  end_position:
    bytes: 1625
    line: 44
    character: 41
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1625
    line: 44
    character: 41
  end_position:
    bytes: 1626
    line: 44
    character: 42
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1626
    line: 44
    character: 42
  end_position:
    bytes: 1627
    line: 44
    character: 43
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1627
    line: 44
    character: 43
  end_position:
    bytes: 1628
    line: 44
    character: 44
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1628
    line: 44
    character: 44
  end_position:
    bytes: 1629
    line: 44
    character: 45
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1629
    line: 44
    character: 45
  end_position:
    bytes: 1632
    line: 44
    character: 48
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1632
    line: 44
    character: 48
  end_position:
    bytes: 1633
    line: 44
    character: 48
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1633
    line: 45
    character: 1
  end_position:
    bytes: 1637
    line: 45
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1637
    line: 45
    character: 5
  end_position:
    bytes: 1643
    line: 45
    character: 11
  token_type:
    type: Symbol
    symbol: return
- start_position:
    bytes: 1643
    line: 45
    character: 11
  end_position:
    bytes: 1644
    line: 45
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1644
    line: 45
    character: 12
  end_position:
    bytes: 1647
    line: 45
    character: 15
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1647
    line: 45
    character: 15
  end_position:
    bytes: 1648
    line: 45
    character: 15
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1648
    line: 46
    character: 1
  end_position:
    bytes: 1651
    line: 46
    character: 4
  token_type:
    type: Symbol
    symbol: end
- start_position:
    bytes: 1651
    line: 46
    character: 4
  end_position:
    bytes: 1652
    line: 46
    character: 4
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1652
    line: 47
    character: 1
  end_position:
    bytes: 1653
    line: 47
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1653
    line: 48
    character: 1
  end_position:
    bytes: 1658
    line: 48
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1658
    line: 48
    character: 6
  end_position:
    bytes: 1659
    line: 48
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1659
    line: 48
    character: 7
  end_position:
    bytes: 1660
    line: 48
    character: 8
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 1660
    line: 48
    character: 8
  end_position:
    bytes: 1661
    line: 48
    character: 9
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1661
    line: 48
    character: 9
  end_position:
    bytes: 1662
    line: 48
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1662
    line: 48
    character: 10
  end_position:
    bytes: 1663
    line: 48
    character: 11
  token_type:
    type: Identifier
    identifier: b
- start_position:
    bytes: 1663
    line: 48
    character: 11
  end_position:
    bytes: 1664
    line: 48
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1664
    line: 48
    character: 12
  end_position:
    bytes: 1665
    line: 48
    character: 13
  token_type:
    type: Symbol
    symbol: "="
- start_position:
    bytes: 1665
    line: 48
    character: 13
  end_position:
    bytes: 1666
    line: 48
    character: 14
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1666
    line: 48
    character: 14
  end_position:
    bytes: 1675
    line: 48
    character: 23
  token_type:
    type: Identifier
    identifier: typePacks
- start_position:
    bytes: 1675
    line: 48
    character: 23
  end_position:
    bytes: 1676
    line: 48
    character: 24
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1676
    line: 48
    character: 24
  end_position:
    bytes: 1677
    line: 48
    character: 25
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1677
    line: 48
    character: 25
  end_position:
    bytes: 1678
    line: 48
    character: 26
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1678
    line: 48
    character: 26
  end_position:
    bytes: 1684
    line: 48
    character: 32
  token_type:
    type: Identifier
    identifier: string
- start_position:
    bytes: 1684
    line: 48
    character: 32
  end_position:
    bytes: 1685
    line: 48
    character: 33
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1685
    line: 48
    character: 33
  end_position:
    bytes: 1686
    line: 48
    character: 34
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1686
    line: 48
    character: 34
  end_position:
    bytes: 1692
    line: 48
    character: 40
  token_type:
    type: Identifier
    identifier: number
- start_position:
    bytes: 1692
    line: 48
    character: 40
  end_position:
    bytes: 1693
    line: 48
    character: 41
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1693
    line: 48
    character: 41
  end_position:
    bytes: 1694
    line: 48
    character: 42
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1694
    line: 48
    character: 42
  end_position:
    bytes: 1695
    line: 48
    character: 43
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1695
    line: 48
    character: 43
  end_position:
    bytes: 1696
    line: 48
    character: 44
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1696
    line: 48
    character: 44
  end_position:
    bytes: 1697
    line: 48
    character: 45
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1697
    line: 48
    character: 45
  end_position:
    bytes: 1698
    line: 48
    character: 46
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1698
    line: 48
    character: 46
  end_position:
    bytes: 1699
    line: 48
    character: 47
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1699
    line: 48
    character: 47
  end_position:
    bytes: 1702
    line: 48
    character: 50
  token_type:
    type: StringLiteral
    literal: a
    quote_type: Double
- start_position:
    bytes: 1702
    line: 48
    character: 50
  end_position:
    bytes: 1703
    line: 48
    character: 51
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1703
    line: 48
    character: 51
  end_position:
    bytes: 1704
    line: 48
    character: 51
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1704
    line: 49
    character: 1
  end_position:
    bytes: 1710
    line: 49
    character: 7
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1710
    line: 49
    character: 7
  end_position:
    bytes: 1711
    line: 49
    character: 8
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1711
    line: 49
    character: 8
  end_position:
    bytes: 1712
    line: 49
    character: 9
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 1712
    line: 49
    character: 9
  end_position:
    bytes: 1713
    line: 49
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1713
    line: 49
    character: 10
  end_position:
    bytes: 1715
    line: 49
    character: 12
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1715
    line: 49
    character: 12
  end_position:
    bytes: 1716
    line: 49
    character: 13
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1716
    line: 49
    character: 13
  end_position:
    bytes: 1717
    line: 49
    character: 14
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1717
    line: 49
    character: 14
  end_position:
    bytes: 1718
    line: 49
    character: 15
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1718
    line: 49
    character: 15
  end_position:
    bytes: 1721
    line: 49
    character: 18
  token_type:
    type: Symbol
    symbol: and
- start_position:
    bytes: 1721
    line: 49
    character: 18
  end_position:
    bytes: 1722
    line: 49
    character: 19
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1722
    line: 49
    character: 19
  end_position:
    bytes: 1723
    line: 49
    character: 20
  token_type:
    type: Identifier
    identifier: b
- start_position:
    bytes: 1723
    line: 49
    character: 20
  end_position:
    bytes: 1724
    line: 49
    character: 21
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1724
    line: 49
    character: 21
  end_position:
    bytes: 1726
    line: 49
    character: 23
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1726
    line: 49
    character: 23
  end_position:
    bytes: 1727
    line: 49
    character: 24
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1727
    line: 49
    character: 24
  end_position:
    bytes: 1730
    line: 49
    character: 27
  token_type:
    type: StringLiteral
    literal: a
    quote_type: Double
- start_position:
    bytes: 1730
    line: 49
    character: 27
  end_position:
    bytes: 1731
    line: 49
    character: 28
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1731
    line: 49
    character: 28
  end_position:
    bytes: 1732
    line: 49
    character: 28
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1732
    line: 50
    character: 1
  end_position:
    bytes: 1733
    line: 50
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1733
    line: 51
    character: 1
  end_position:
    bytes: 1738
    line: 51
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1738
    line: 51
    character: 6
  end_position:
    bytes: 1739
    line: 51
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1739
    line: 51
    character: 7
  end_position:
    bytes: 1740
    line: 51
    character: 8
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1740
    line: 51
    character: 8
  end_position:
    bytes: 1741
    line: 51
    character: 9
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1741
    line: 51
    character: 9
  end_position:
    bytes: 1742
    line: 51
    character: 10
  token_type:
    type: Symbol
    symbol: "="
- start_position:
    bytes: 1742
    line: 51
    character: 10
  end_position:
    bytes: 1743
    line: 51
    character: 11
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1743
    line: 51
    character: 11
  end_position:
    bytes: 1744
    line: 51
    character: 12
  token_type:
    type: Symbol
    symbol: "{"
- start_position:
    bytes: 1744
    line: 51
    character: 12
  end_position:
    bytes: 1745
    line: 51
    character: 13
  token_type:
    type: Symbol
    symbol: "}"
- start_position:
    bytes: 1745
    line: 51
    character: 13
  end_position:
    bytes: 1746
    line: 51
    character: 13
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1746
    line: 52
    character: 1
  end_position:
    bytes: 1754
    line: 52
    character: 9
  token_type:
    type: Symbol
    symbol: function
- start_position:
    bytes: 1754
    line: 52
    character: 9
  end_position:
    bytes: 1755
    line: 52
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1755
    line: 52
    character: 10
  end_position:
    bytes: 1756
    line: 52
    character: 11
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1756
    line: 52
    character: 11
  end_position:
    bytes: 1757
    line: 52
    character: 12
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1757
    line: 52
    character: 12
  end_position:
    bytes: 1763
    line: 52
    character: 18
  token_type:
    type: Identifier
    identifier: method
- start_position:
    bytes: 1763
    line: 52
    character: 18
  end_position:
    bytes: 1764
    line: 52
    character: 19
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1764
    line: 52
    character: 19
  end_position:
    bytes: 1765
    line: 52
    character: 20
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1765
    line: 52
    character: 20
  end_position:
    bytes: 1766
    line: 52
    character: 21
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1766
    line: 52
    character: 21
  end_position:
    bytes: 1767
    line: 52
    character: 22
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1767
    line: 52
    character: 22
  end_position:
    bytes: 1768
    line: 52
    character: 23
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1768
    line: 52
    character: 23
  end_position:
    bytes: 1769
    line: 52
    character: 24
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1769
    line: 52
    character: 24
  end_position:
    bytes: 1770
    line: 52
    character: 25
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1770
    line: 52
    character: 25
  end_position:
    bytes: 1771
    line: 52
    character: 26
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1771
    line: 52
    character: 26
  end_position:
    bytes: 1772
    line: 52
    character: 27
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1772
    line: 52
    character: 27
  end_position:
    bytes: 1773
    line: 52
    character: 28
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1773
    line: 52
    character: 28
  end_position:
    bytes: 1774
    line: 52
    character: 29
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1774
    line: 52
    character: 29
  end_position:
    bytes: 1775
    line: 52
    character: 30
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1775
    line: 52
    character: 30
  end_position:
    bytes: 1776
    line: 52
    character: 30
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1776
    line: 53
    character: 1
  end_position:
    bytes: 1780
    line: 53
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1780
    line: 53
    character: 5
  end_position:
    bytes: 1786
    line: 53
    character: 11
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1786
    line: 53
    character: 11
  end_position:
    bytes: 1787
    line: 53
    character: 12
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1787
    line: 53
    character: 12
  end_position:
    bytes: 1791
    line: 53
    character: 16
  token_type:
    type: Identifier
    identifier: self
- start_position:
    bytes: 1791
    line: 53
    character: 16
  end_position:
    bytes: 1792
    line: 53
    character: 17
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1792
    line: 53
    character: 17
  end_position:
    bytes: 1794
    line: 53
    character: 19
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1794
    line: 53
    character: 19
  end_position:
    bytes: 1795
    line: 53
    character: 20
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1795
    line: 53
    character: 20
  end_position:
    bytes: 1796
    line: 53
    character: 21
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1796
    line: 53
    character: 21
  end_position:
    bytes: 1797
    line: 53
    character: 22
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1797
    line: 53
    character: 22
  end_position:
    bytes: 1798
    line: 53
    character: 22
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1798
    line: 54
    character: 1
  end_position:
    bytes: 1802
    line: 54
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1802
    line: 54
    character: 5
  end_position:
    bytes: 1808
    line: 54
    character: 11
  token_type:
    type: Symbol
    symbol: return
- start_position:
    bytes: 1808
    line: 54
    character: 11
  end_position:
    bytes: 1809
    line: 54
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1809
    line: 54
    character: 12
  end_position:
    bytes: 1810
    line: 54
    character: 13
  token_type:
    type: Identifier
    identifier: x
- start_position:
    bytes: 1810
    line: 54
    character: 13
  end_position:
    bytes: 1811
    line: 54
    character: 13
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1811
    line: 55
    character: 1
  end_position:
    bytes: 1814
    line: 55
    character: 4
  token_type:
    type: Symbol
    symbol: end
- start_position:
    bytes: 1814
    line: 55
    character: 4
  end_position:
    bytes: 1815
    line: 55
    character: 4
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1815
    line: 56
    character: 1
  end_position:
    bytes: 1816
    line: 56
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1816
    line: 57
    character: 1
  end_position:
    bytes: 1822
    line: 57
    character: 7
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1822
    line: 57
    character: 7
  end_position:
    bytes: 1823
    line: 57
    character: 8
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1823
    line: 57
    character: 8
  end_position:
    bytes: 1824
    line: 57
    character: 9
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1824
    line: 57
    character: 9
  end_position:
    bytes: 1825
    line: 57
    character: 10
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1825
    line: 57
    character: 10
  end_position:
    bytes: 1831
    line: 57
    character: 16
  token_type:
    type: Identifier
    identifier: method
- start_position:
    bytes: 1831
    line: 57
    character: 16
  end_position:
    bytes: 1832
    line: 57
    character: 17
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1832
    line: 57
    character: 17
  end_position:
    bytes: 1833
    line: 57
    character: 18
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1833
    line: 57
    character: 18
  end_position:
    bytes: 1834
    line: 57
    character: 19
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1834
    line: 57
    character: 19
  end_position:
    bytes: 1835
    line: 57
    character: 20
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1835
    line: 57
    character: 20
  end_position:
    bytes: 1837
    line: 57
    character: 22
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1837
    line: 57
    character: 22
  end_position:
    bytes: 1838
    line: 57
    character: 23
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1838
    line: 57
    character: 23
  end_position:
    bytes: 1839
    line: 57
    character: 24
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1839
    line: 57
    character: 24
  end_position:
    bytes: 1840
    line: 57
    character: 25
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1840
    line: 57
    character: 25
  end_position:
    bytes: 1841
    line: 57
    character: 25
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1841
    line: 58
    character: 1
  end_position:
    bytes: 1842
    line: 58
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1842
    line: 59
    character: 1
  end_position:
    bytes: 1850
    line: 59
    character: 9
  token_type:
    type: Symbol
    symbol: function
- start_position:
    bytes: 1850
    line: 59
    character: 9
  end_position:
    bytes: 1851
    line: 59
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1851
    line: 59
    character: 10
  end_position:
    bytes: 1852
    line: 59
    character: 11
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1852
    line: 59
    character: 11
  end_position:
    bytes: 1853
    line: 59
    character: 12
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1853
    line: 59
    character: 12
  end_position:
    bytes: 1868
    line: 59
    character: 27
  token_type:
    type: Identifier
    identifier: methodTypePacks
- start_position:
    bytes: 1868
    line: 59
    character: 27
  end_position:
    bytes: 1869
    line: 59
    character: 28
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1869
    line: 59
    character: 28
  end_position:
    bytes: 1870
    line: 59
    character: 29
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1870
    line: 59
    character: 29
  end_position:
    bytes: 1873
    line: 59
    character: 32
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1873
    line: 59
    character: 32
  end_position:
    bytes: 1874
    line: 59
    character: 33
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1874
    line: 59
    character: 33
  end_position:
    bytes: 1875
    line: 59
    character: 34
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1875
    line: 59
    character: 34
  end_position:
    bytes: 1878
    line: 59
    character: 37
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1878
    line: 59
    character: 37
  end_position:
    bytes: 1879
    line: 59
    character: 38
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1879
    line: 59
    character: 38
  end_position:
    bytes: 1880
    line: 59
    character: 39
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1880
    line: 59
    character: 39
  end_position:
    bytes: 1881
    line: 59
    character: 40
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1881
    line: 59
    character: 40
  end_position:
    bytes: 1884
    line: 59
    character: 43
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1884
    line: 59
    character: 43
  end_position:
    bytes: 1885
    line: 59
    character: 44
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1885
    line: 59
    character: 44
  end_position:
    bytes: 1886
    line: 59
    character: 45
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1886
    line: 59
    character: 45
  end_position:
    bytes: 1887
    line: 59
    character: 46
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1887
    line: 59
    character: 46
  end_position:
    bytes: 1888
    line: 59
    character: 47
  token_type:
    type: Identifier
    identifier: T
- start_position:
    bytes: 1888
    line: 59
    character: 47
  end_position:
    bytes: 1891
    line: 59
    character: 50
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1891
    line: 59
    character: 50
  end_position:
    bytes: 1892
    line: 59
    character: 50
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1892
    line: 60
    character: 1
  end_position:
    bytes: 1896
    line: 60
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1896
    line: 60
    character: 5
  end_position:
    bytes: 1902
    line: 60
    character: 11
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1902
    line: 60
    character: 11
  end_position:
    bytes: 1903
    line: 60
    character: 12
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1903
    line: 60
    character: 12
  end_position:
    bytes: 1907
    line: 60
    character: 16
  token_type:
    type: Identifier
    identifier: self
- start_position:
    bytes: 1907
    line: 60
    character: 16
  end_position:
    bytes: 1908
    line: 60
    character: 17
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1908
    line: 60
    character: 17
  end_position:
    bytes: 1910
    line: 60
    character: 19
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 1910
    line: 60
    character: 19
  end_position:
    bytes: 1911
    line: 60
    character: 20
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1911
    line: 60
    character: 20
  end_position:
    bytes: 1912
    line: 60
    character: 21
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1912
    line: 60
    character: 21
  end_position:
    bytes: 1913
    line: 60
    character: 22
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1913
    line: 60
    character: 22
  end_position:
    bytes: 1914
    line: 60
    character: 22
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1914
    line: 61
    character: 1
  end_position:
    bytes: 1918
    line: 61
    character: 5
  token_type:
    type: Whitespace
    characters: "    "
- start_position:
    bytes: 1918
    line: 61
    character: 5
  end_position:
    bytes: 1924
    line: 61
    character: 11
  token_type:
    type: Symbol
    symbol: return
- start_position:
    bytes: 1924
    line: 61
    character: 11
  end_position:
    bytes: 1925
    line: 61
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1925
    line: 61
    character: 12
  end_position:
    bytes: 1928
    line: 61
    character: 15
  token_type:
    type: Symbol
    symbol: "..."
- start_position:
    bytes: 1928
    line: 61
    character: 15
  end_position:
    bytes: 1929
    line: 61
    character: 15
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1929
    line: 62
    character: 1
  end_position:
    bytes: 1932
    line: 62
    character: 4
  token_type:
    type: Symbol
    symbol: end
- start_position:
    bytes: 1932
    line: 62
    character: 4
  end_position:
    bytes: 1933
    line: 62
    character: 4
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1933
    line: 63
    character: 1
  end_position:
    bytes: 1934
    line: 63
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1934
    line: 64
    character: 1
  end_position:
    bytes: 1939
    line: 64
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 1939
    line: 64
    character: 6
  end_position:
    bytes: 1940
    line: 64
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1940
    line: 64
    character: 7
  end_position:
    bytes: 1941
    line: 64
    character: 8
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 1941
    line: 64
    character: 8
  end_position:
    bytes: 1942
    line: 64
    character: 9
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1942
    line: 64
    character: 9
  end_position:
    bytes: 1943
    line: 64
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1943
    line: 64
    character: 10
  end_position:
    bytes: 1944
    line: 64
    character: 11
  token_type:
    type: Identifier
    identifier: b
- start_position:
    bytes: 1944
    line: 64
    character: 11
  end_position:
    bytes: 1945
    line: 64
    character: 12
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1945
    line: 64
    character: 12
  end_position:
    bytes: 1946
    line: 64
    character: 13
  token_type:
    type: Symbol
    symbol: "="
- start_position:
    bytes: 1946
    line: 64
    character: 13
  end_position:
    bytes: 1947
    line: 64
    character: 14
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1947
    line: 64
    character: 14
  end_position:
    bytes: 1948
    line: 64
    character: 15
  token_type:
    type: Identifier
    identifier: t
- start_position:
    bytes: 1948
    line: 64
    character: 15
  end_position:
    bytes: 1949
    line: 64
    character: 16
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 1949
    line: 64
    character: 16
  end_position:
    bytes: 1964
    line: 64
    character: 31
  token_type:
    type: Identifier
    identifier: methodTypePacks
- start_position:
    bytes: 1964
    line: 64
    character: 31
  end_position:
    bytes: 1965
    line: 64
    character: 32
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1965
    line: 64
    character: 32
  end_position:
    bytes: 1966
    line: 64
    character: 33
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 1966
    line: 64
    character: 33
  end_position:
    bytes: 1967
    line: 64
    character: 34
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1967
    line: 64
    character: 34
  end_position:
    bytes: 1973
    line: 64
    character: 40
  token_type:
    type: Identifier
    identifier: string
- start_position:
    bytes: 1973
    line: 64
    character: 40
  end_position:
    bytes: 1974
    line: 64
    character: 41
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1974
    line: 64
    character: 41
  end_position:
    bytes: 1975
    line: 64
    character: 42
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1975
    line: 64
    character: 42
  end_position:
    bytes: 1981
    line: 64
    character: 48
  token_type:
    type: Identifier
    identifier: number
- start_position:
    bytes: 1981
    line: 64
    character: 48
  end_position:
    bytes: 1982
    line: 64
    character: 49
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1982
    line: 64
    character: 49
  end_position:
    bytes: 1983
    line: 64
    character: 50
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1983
    line: 64
    character: 50
  end_position:
    bytes: 1984
    line: 64
    character: 51
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 1984
    line: 64
    character: 51
  end_position:
    bytes: 1985
    line: 64
    character: 52
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 1985
    line: 64
    character: 52
  end_position:
    bytes: 1986
    line: 64
    character: 53
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 1986
    line: 64
    character: 53
  end_position:
    bytes: 1987
    line: 64
    character: 54
  token_type:
    type: Symbol
    symbol: ","
- start_position:
    bytes: 1987
    line: 64
    character: 54
  end_position:
    bytes: 1988
    line: 64
    character: 55
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 1988
    line: 64
    character: 55
  end_position:
    bytes: 1991
    line: 64
    character: 58
  token_type:
    type: StringLiteral
    literal: a
    quote_type: Double
- start_position:
    bytes: 1991
    line: 64
    character: 58
  end_position:
    bytes: 1992
    line: 64
    character: 59
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 1992
    line: 64
    character: 59
  end_position:
    bytes: 1993
    line: 64
    character: 59
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 1993
    line: 65
    character: 1
  end_position:
    bytes: 1999
    line: 65
    character: 7
  token_type:
    type: Identifier
    identifier: assert
- start_position:
    bytes: 1999
    line: 65
    character: 7
  end_position:
    bytes: 2000
    line: 65
    character: 8
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 2000
    line: 65
    character: 8
  end_position:
    bytes: 2001
    line: 65
    character: 9
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 2001
    line: 65
    character: 9
  end_position:
    bytes: 2002
    line: 65
    character: 10
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2002
    line: 65
    character: 10
  end_position:
    bytes: 2004
    line: 65
    character: 12
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 2004
    line: 65
    character: 12
  end_position:
    bytes: 2005
    line: 65
    character: 13
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2005
    line: 65
    character: 13
  end_position:
    bytes: 2006
    line: 65
    character: 14
  token_type:
    type: Number
    text: "1"
- start_position:
    bytes: 2006
    line: 65
    character: 14
  end_position:
    bytes: 2007
    line: 65
    character: 15
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2007
    line: 65
    character: 15
  end_position:
    bytes: 2010
    line: 65
    character: 18
  token_type:
    type: Symbol
    symbol: and
- start_position:
    bytes: 2010
    line: 65
    character: 18
  end_position:
    bytes: 2011
    line: 65
    character: 19
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2011
    line: 65
    character: 19
  end_position:
    bytes: 2012
    line: 65
    character: 20
  token_type:
    type: Identifier
    identifier: b
- start_position:
    bytes: 2012
    line: 65
    character: 20
  end_position:
    bytes: 2013
    line: 65
    character: 21
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2013
    line: 65
    character: 21
  end_position:
    bytes: 2015
    line: 65
    character: 23
  token_type:
    type: Symbol
    symbol: "=="
- start_position:
    bytes: 2015
    line: 65
    character: 23
  end_position:
    bytes: 2016
    line: 65
    character: 24
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2016
    line: 65
    character: 24
  end_position:
    bytes: 2019
    line: 65
    character: 27
  token_type:
    type: StringLiteral
    literal: a
    quote_type: Double
- start_position:
    bytes: 2019
    line: 65
    character: 27
  end_position:
    bytes: 2020
    line: 65
    character: 28
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 2020
    line: 65
    character: 28
  end_position:
    bytes: 2021
    line: 65
    character: 28
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 2021
    line: 66
    character: 1
  end_position:
    bytes: 2022
    line: 66
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 2022
    line: 67
    character: 1
  end_position:
    bytes: 2040
    line: 67
    character: 19
  token_type:
    type: SingleLineComment
    comment: " full-moon tests"
- start_position:
    bytes: 2040
    line: 67
    character: 19
  end_position:
    bytes: 2041
    line: 67
    character: 19
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 2041
    line: 68
    character: 1
  end_position:
    bytes: 2046
    line: 68
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 2046
    line: 68
    character: 6
  end_position:
    bytes: 2047
    line: 68
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2047
    line: 68
    character: 7
  end_position:
    bytes: 2062
    line: 68
    character: 22
  token_type:
    type: Identifier
    identifier: complicatedExpr
- start_position:
    bytes: 2062
    line: 68
    character: 22
  end_position:
    bytes: 2063
    line: 68
    character: 23
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2063
    line: 68
    character: 23
  end_position:
    bytes: 2064
    line: 68
    character: 24
  token_type:
    type: Symbol
    symbol: "="
- start_position:
    bytes: 2064
    line: 68
    character: 24
  end_position:
    bytes: 2065
    line: 68
    character: 25
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2065
    line: 68
    character: 25
  end_position:
    bytes: 2069
    line: 68
    character: 29
  token_type:
    type: Identifier
    identifier: expr
- start_position:
    bytes: 2069
    line: 68
    character: 29
  end_position:
    bytes: 2070
    line: 68
    character: 30
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2070
    line: 68
    character: 30
  end_position:
    bytes: 2071
    line: 68
    character: 31
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2071
    line: 68
    character: 31
  end_position:
    bytes: 2072
    line: 68
    character: 32
  token_type:
    type: Identifier
    identifier: A
- start_position:
    bytes: 2072
    line: 68
    character: 32
  end_position:
    bytes: 2073
    line: 68
    character: 33
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2073
    line: 68
    character: 33
  end_position:
    bytes: 2074
    line: 68
    character: 34
  token_type:
    type: Identifier
    identifier: B
- start_position:
    bytes: 2074
    line: 68
    character: 34
  end_position:
    bytes: 2075
    line: 68
    character: 35
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2075
    line: 68
    character: 35
  end_position:
    bytes: 2076
    line: 68
    character: 36
  token_type:
    type: Identifier
    identifier: C
- start_position:
    bytes: 2076
    line: 68
    character: 36
  end_position:
    bytes: 2077
    line: 68
    character: 37
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2077
    line: 68
    character: 37
  end_position:
    bytes: 2078
    line: 68
    character: 38
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2078
    line: 68
    character: 38
  end_position:
    bytes: 2079
    line: 68
    character: 39
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2079
    line: 68
    character: 39
  end_position:
    bytes: 2080
    line: 68
    character: 40
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2080
    line: 68
    character: 40
  end_position:
    bytes: 2081
    line: 68
    character: 41
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 2081
    line: 68
    character: 41
  end_position:
    bytes: 2082
    line: 68
    character: 42
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 2082
    line: 68
    character: 42
  end_position:
    bytes: 2083
    line: 68
    character: 42
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 2083
    line: 69
    character: 1
  end_position:
    bytes: 2088
    line: 69
    character: 6
  token_type:
    type: Symbol
    symbol: local
- start_position:
    bytes: 2088
    line: 69
    character: 6
  end_position:
    bytes: 2089
    line: 69
    character: 7
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2089
    line: 69
    character: 7
  end_position:
    bytes: 2106
    line: 69
    character: 24
  token_type:
    type: Identifier
    identifier: complicatedMethod
- start_position:
    bytes: 2106
    line: 69
    character: 24
  end_position:
    bytes: 2107
    line: 69
    character: 25
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2107
    line: 69
    character: 25
  end_position:
    bytes: 2108
    line: 69
    character: 26
  token_type:
    type: Symbol
    symbol: "="
- start_position:
    bytes: 2108
    line: 69
    character: 26
  end_position:
    bytes: 2109
    line: 69
    character: 27
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2109
    line: 69
    character: 27
  end_position:
    bytes: 2110
    line: 69
    character: 28
  token_type:
    type: Identifier
    identifier: a
- start_position:
    bytes: 2110
    line: 69
    character: 28
  end_position:
    bytes: 2111
    line: 69
    character: 29
  token_type:
    type: Symbol
    symbol: ":"
- start_position:
    bytes: 2111
    line: 69
    character: 29
  end_position:
    bytes: 2117
    line: 69
    character: 35
  token_type:
    type: Identifier
    identifier: method
- start_position:
    bytes: 2117
    line: 69
    character: 35
  end_position:
    bytes: 2118
    line: 69
    character: 36
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2118
    line: 69
    character: 36
  end_position:
    bytes: 2119
    line: 69
    character: 37
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2119
    line: 69
    character: 37
  end_position:
    bytes: 2120
    line: 69
    character: 38
  token_type:
    type: Identifier
    identifier: A
- start_position:
    bytes: 2120
    line: 69
    character: 38
  end_position:
    bytes: 2121
    line: 69
    character: 39
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2121
    line: 69
    character: 39
  end_position:
    bytes: 2122
    line: 69
    character: 40
  token_type:
    type: Identifier
    identifier: B
- start_position:
    bytes: 2122
    line: 69
    character: 40
  end_position:
    bytes: 2123
    line: 69
    character: 41
  token_type:
    type: Symbol
    symbol: "<"
- start_position:
    bytes: 2123
    line: 69
    character: 41
  end_position:
    bytes: 2124
    line: 69
    character: 42
  token_type:
    type: Identifier
    identifier: C
- start_position:
    bytes: 2124
    line: 69
    character: 42
  end_position:
    bytes: 2125
    line: 69
    character: 43
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2125
    line: 69
    character: 43
  end_position:
    bytes: 2126
    line: 69
    character: 44
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2126
    line: 69
    character: 44
  end_position:
    bytes: 2127
    line: 69
    character: 45
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2127
    line: 69
    character: 45
  end_position:
    bytes: 2128
    line: 69
    character: 46
  token_type:
    type: Symbol
    symbol: ">"
- start_position:
    bytes: 2128
    line: 69
    character: 46
  end_position:
    bytes: 2129
    line: 69
    character: 47
  token_type:
    type: Symbol
    symbol: (
- start_position:
    bytes: 2129
    line: 69
    character: 47
  end_position:
    bytes: 2130
    line: 69
    character: 48
  token_type:
    type: Symbol
    symbol: )
- start_position:
    bytes: 2130
    line: 69
    character: 48
  end_position:
    bytes: 2131
    line: 69
    character: 48
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 2131
    line: 70
    character: 1
  end_position:
    bytes: 2132
    line: 70
    character: 1
  token_type:
    type: Whitespace
    characters: "\n"
- start_position:
    bytes: 2132
    line: 71
    character: 1
  end_position:
    bytes: 2138
    line: 71
    character: 7
  token_type:
    type: Symbol
    symbol: return
- start_position:
    bytes: 2138
    line: 71
    character: 7
  end_position:
    bytes: 2139
    line: 71
    character: 8
  token_type:
    type: Whitespace
    characters: " "
- start_position:
    bytes: 2139
    line: 71
    character: 8
  end_position:
    bytes: 2143
    line: 71
    character: 12
  token_type:
    type: StringLiteral
    literal: OK
    quote_type: Double
- start_position:
    bytes: 2143
    line: 71
    character: 12
  end_position:
    bytes: 2143
    line: 71
    character: 12
  token_type:
    type: Eof
