{
  "programs": [
    "Program {\n    span: 60..2314,\n    kind: Script,\n    body: [\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Expr(\n    ExprStmt {\n        span: 112..115,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 114..126,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 277..280,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 279..291,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 463..466,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 465..477,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 640..652,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 847..859,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1067..1079,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1296..1305,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1613..1624,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 1927..1950,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "If(\n    IfStmt {\n        span: 1899..1950,\n        test: _,\n        cons: _,\n        alt: None,\n    },\n)",
    "Block(\n    BlockStmt {\n        span: 1838..1956,\n        stmts: [\n            _,\n            _,\n        ],\n    },\n)",
    "If(\n    IfStmt {\n        span: 1820..1956,\n        test: _,\n        cons: _,\n        alt: None,\n    },\n)",
    "Block(\n    BlockStmt {\n        span: 1740..1967,\n        stmts: [\n            _,\n            _,\n        ],\n    },\n)",
    "For(\n    ForStmt {\n        span: 1694..1967,\n        head: Of(\n            ForOfHead {\n                is_await: false,\n                left: Decl(\n                    _,\n                ),\n                right: _,\n            },\n        ),\n        body: _,\n    },\n)",
    "Return(\n    ReturnStmt {\n        span: 1961..1975,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 2083..2095,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "Var(\n    VarDecl {\n        span: 179..210,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 179..208,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 118..216,\n        ident: Ident {\n            span: 127..129,\n            sym: \"f1\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 352..393,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 352..381,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 283..399,\n        ident: Ident {\n            span: 292..294,\n            sym: \"f2\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 541..582,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 541..570,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 469..588,\n        ident: Ident {\n            span: 478..480,\n            sym: \"f3\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 724..757,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 724..755,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 644..763,\n        ident: Ident {\n            span: 653..655,\n            sym: \"f4\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 925..958,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 925..956,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 851..1010,\n        ident: Ident {\n            span: 860..862,\n            sym: \"f5\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1145..1187,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1145..1176,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 1071..1215,\n        ident: Ident {\n            span: 1080..1082,\n            sym: \"f6\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1300..1463,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1300..1371,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1454..1514,\n        ident: Ident {\n            span: 1464..1470,\n            sym: \"Bounds\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 1477..1497,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1477..1480,\n                            sym: \"min\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 1494..1508,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 1494..1497,\n                            sym: \"max\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1699..1718,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1699..1718,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1750..1822,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1750..1811,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1852..1901,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1852..1886,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 1616..2003,\n        ident: Ident {\n            span: 1625..1633,\n            sym: \"validate\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 2195..2313,\n        kind: Const,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 2195..2259,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 2087..2314,\n        ident: Ident {\n            span: 2096..2107,\n            sym: \"genericTest\",\n        },\n        declare: false,\n        params: [\n            _,\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 148..151,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 165..168,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 185..186,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 313..316,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 330..333,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 358..359,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 499..502,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 516..519,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 547..548,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 680..683,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 697..700,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 728..729,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 881..884,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 898..901,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 929..930,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1101..1104,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1118..1121,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1149..1150,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1306..1309,\n        sym: \"get\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1331..1332,\n        sym: \"t\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1337..1340,\n        sym: \"foo\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1310..1371,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1652..1655,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1660..1666,\n        sym: \"bounds\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1706..1709,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1711..1714,\n        sym: \"val\",\n    },\n)",
    "Array(\n    ArrayPat {\n        span: 1705..1718,\n        elems: [\n            Some(\n                _,\n            ),\n            Some(\n                _,\n            ),\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 1756..1768,\n        sym: \"boundsForKey\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1769..1811,\n        left: _,\n        right: _,\n    },\n)",
    "Object(\n    ObjectPat {\n        span: 1858..1872,\n        props: [\n            Assign(\n                ObjectPatAssign {\n                    span: 1860..1864,\n                    key: Ident {\n                        span: 1860..1863,\n                        sym: \"min\",\n                    },\n                    value: None,\n                },\n            ),\n            Assign(\n                ObjectPatAssign {\n                    span: 1865..1870,\n                    key: Ident {\n                        span: 1865..1868,\n                        sym: \"max\",\n                    },\n                    value: None,\n                },\n            ),\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 2126..2151,\n        sym: \"objectWithUnderscoredKeys\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2183..2186,\n        sym: \"key\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 2201..2213,\n        sym: \"shouldBeTrue\",\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 199..202,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 203..206,\n        sym: \"key\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 202..208,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 372..375,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 376..379,\n        sym: \"key\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 375..381,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 561..564,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 565..568,\n        sym: \"key\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 564..570,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 746..749,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 750..753,\n        sym: \"key\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 749..755,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 947..950,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 951..954,\n        sym: \"key\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 950..956,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1167..1170,\n        sym: \"obj\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1171..1174,\n        sym: \"key\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1170..1176,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1356..1359,\n        sym: \"foo\",\n    },\n)",
    "Template(\n    TemplateExpr {\n        span: 1360..1369,\n        quasis: [\n            StrLit {\n                span: 1360..1369,\n                value: \"get${t}\",\n            },\n        ],\n        exprs: [],\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1359..1371,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1330..1371,\n        params: [\n            _,\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1719..1725,\n        sym: \"Object\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1725..1734,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 1726..1733,\n                sym: \"entries\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 1734..1737,\n        sym: \"obj\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 1733..1739,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 1771..1777,\n        sym: \"bounds\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1778..1781,\n        sym: \"key\",\n    },\n)",
    "TsAs(\n    TsAsExpr {\n        span: 1782..1810,\n        expr: _,\n        ty: _,\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 1777..1811,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 1824..1836,\n        sym: \"boundsForKey\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1873..1885,\n        sym: \"boundsForKey\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1903..1906,\n        sym: \"min\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1909..1912,\n        sym: \"val\",\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 1907..1915,\n        op: Gt,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1916..1919,\n        sym: \"max\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1922..1925,\n        sym: \"val\",\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 1920..1926,\n        op: Lt,\n        left: _,\n        right: _,\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 1913..1926,\n        op: LogicalOr,\n        left: _,\n        right: _,\n    },\n)",
    "Lit(\n    Bool(\n        BoolLit {\n            span: 1934..1939,\n            value: false,\n        },\n    ),\n)",
    "Lit(\n    Bool(\n        BoolLit {\n            span: 1968..1972,\n            value: true,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 2222..2247,\n        sym: \"objectWithUnderscoredKeys\",\n    },\n)",
    "Template(\n    TemplateExpr {\n        span: 2248..2257,\n        quasis: [\n            StrLit {\n                span: 2248..2257,\n                value: \"_${key}\",\n            },\n        ],\n        exprs: [],\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 2247..2259,\n        obj: _,\n        prop: Computed(\n            _,\n        ),\n    },\n)"
  ],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Number,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1807..1809,\n        name: Ident {\n            span: 1807..1809,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 1791..1810,\n        name: Ident {\n            span: 1791..1807,\n            sym: \"NumericBoundsOf\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)",
    "TypeOperator(\n    TsTypeOperatorType {\n        span: 1785..1810,\n        op: KeyOf,\n        ty: _,\n    },\n)"
  ]
}
