{
  "programs": [
    "Program {\n    span: 1..792,\n    kind: Module,\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        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 73..81,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 116..133,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 107..133,\n        label: Ident {\n            span: 107..114,\n            sym: \"recurse\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 135..144,\n        expr: _,\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 126..144,\n        label: Ident {\n            span: 126..133,\n            sym: \"wrapped\",\n        },\n        body: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 143..154,\n        expr: _,\n    },\n)",
    "Return(\n    ReturnStmt {\n        span: 178..190,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 297..319,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "ModuleDecl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 320..326,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 468..485,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1..39,\n        ident: Ident {\n            span: 11..12,\n            sym: \"I\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 19..32,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 19..21,\n                            sym: \"id\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 146..198,\n        ident: Ident {\n            span: 155..156,\n            sym: \"F\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 192..263,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 199..200,\n                sym: \"M\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [],\n            ),\n        ),\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 264..321,\n        ident: Ident {\n            span: 273..275,\n            sym: \"F2\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 323..345,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 323..341,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 342..379,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 342..375,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 376..405,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 376..401,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 402..435,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 402..430,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 432..453,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 432..449,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 450..471,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 450..471,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 482..516,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 482..510,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 513..538,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 513..534,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 535..575,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 535..571,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 572..610,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 572..605,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 607..629,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 607..625,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 626..654,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 626..649,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 651..671,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 651..667,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 668..703,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 668..699,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 700..787,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 700..729,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 784..792,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 784..790,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 157..158,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 276..277,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 327..334,\n        sym: \"aNumber\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 335..341,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 346..353,\n        sym: \"aString\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 354..375,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 380..385,\n        sym: \"aDate\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 386..401,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 406..414,\n        sym: \"anObject\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 415..430,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 436..441,\n        sym: \"anAny\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 442..449,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 454..464,\n        sym: \"anOtherAny\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 465..471,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 486..497,\n        sym: \"anUndefined\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 498..510,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 517..523,\n        sym: \"aClass\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 524..534,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 539..552,\n        sym: \"aGenericClass\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 553..571,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 576..591,\n        sym: \"anObjectLiteral\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 592..605,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 611..620,\n        sym: \"aFunction\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 621..625,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 630..637,\n        sym: \"aLambda\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 641..642,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 638..649,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 655..662,\n        sym: \"aModule\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 663..667,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 672..686,\n        sym: \"aClassInModule\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 687..699,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 704..721,\n        sym: \"aFunctionInModule\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 722..729,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 788..789,\n        sym: \"x\",\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 116..117,\n        sym: \"D\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 135..136,\n        sym: \"D\",\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 185..187,\n            value: 42.0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 304..305,\n        sym: \"x\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 305..315,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 306..314,\n                sym: \"toString\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 314..317,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 337..340,\n            value: 9.9,\n        },\n    ),\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 356..374,\n            value: \"this is a string\",\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 392..396,\n        sym: \"Date\",\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 397..399,\n            value: 12.0,\n        },\n    ),\n)",
    "Call(\n    CallExpr {\n        span: 396..401,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "New(\n    NewExpr {\n        span: 388..401,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 421..427,\n        sym: \"Object\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 427..430,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 417..430,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 444..448,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 468..471,\n        sym: \"any\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 477..478,\n        sym: \"C\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 478..481,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 473..481,\n        callee: _,\n        args: [],\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 471..481,\n        op: Gt,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 500..509,\n        sym: \"undefined\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 530..531,\n        sym: \"C\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 531..534,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 526..534,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 559..560,\n        sym: \"D\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 568..571,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 555..571,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 600..602,\n            value: 12.0,\n        },\n    ),\n)",
    "Object(\n    ObjectExpr {\n        span: 594..605,\n        props: [\n            KeyValueProp {\n                span: 596..604,\n                key: Ident(\n                    Ident {\n                        span: 596..598,\n                        sym: \"id\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 623..624,\n        sym: \"F\",\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 647..648,\n            value: 2.0,\n        },\n    ),\n)",
    "Arrow(\n    ArrowExpr {\n        span: 640..649,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 665..666,\n        sym: \"M\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 693..694,\n        sym: \"M\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 694..697,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 695..696,\n                sym: \"A\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 696..699,\n        callee: _,\n        args: [],\n    },\n)",
    "New(\n    NewExpr {\n        span: 689..699,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 724..725,\n        sym: \"M\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 725..729,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 726..728,\n                sym: \"F2\",\n            },\n        ),\n    },\n)"
  ],
  "module_decls": [
    "ExportDecl(\n    ExportDecl {\n        span: 257..321,\n        decl: _,\n    },\n)"
  ],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    Number,\n)"
  ]
}
