{
  "programs": [
    "Program {\n    span: 20..1053,\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}"
  ],
  "stmts": [
    "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)",
    "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)",
    "ModuleDecl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1016..1038,\n        expr: _,\n    },\n)",
    "Break(\n    BreakStmt {\n        span: 1033..1051,\n        label: Some(\n            Ident {\n                span: 1039..1044,\n                sym: \"block\",\n            },\n        ),\n    },\n)",
    "Block(\n    BlockStmt {\n        span: 1006..1053,\n        stmts: [\n            _,\n            _,\n        ],\n    },\n)",
    "Labeled(\n    LabeledStmt {\n        span: 999..1053,\n        label: Ident {\n            span: 999..1004,\n            sym: \"block\",\n        },\n        body: _,\n    },\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "TsTypeAlias(\n    TsTypeAliasDecl {\n        span: 20..59,\n        ident: Ident {\n            span: 25..34,\n            sym: \"MyPromise\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 35..36,\n                sym: \"T\",\n            },\n        ],\n        ty: _,\n    },\n)",
    "Var(\n    VarDecl {\n        span: 60..98,\n        kind: Var,\n        declare: true,\n        declarators: [\n            VarDeclarator {\n                span: 60..90,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 99..130,\n        kind: Var,\n        declare: true,\n        declarators: [\n            VarDeclarator {\n                span: 99..122,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 131..164,\n        kind: Var,\n        declare: true,\n        declarators: [\n            VarDeclarator {\n                span: 131..157,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 159..188,\n        ident: Ident {\n            span: 174..176,\n            sym: \"f0\",\n        },\n        declare: false,\n        params: [],\n        body: [],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 183..227,\n        ident: Ident {\n            span: 198..200,\n            sym: \"f1\",\n        },\n        declare: false,\n        params: [],\n        body: [],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 222..267,\n        ident: Ident {\n            span: 237..239,\n            sym: \"f3\",\n        },\n        declare: false,\n        params: [],\n        body: [],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 264..297,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 264..297,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 294..342,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 294..342,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 339..390,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 339..390,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 387..416,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 387..412,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 413..457,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 413..453,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 454..500,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 454..496,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 497..525,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 497..521,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 522..551,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 522..547,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 548..594,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 548..590,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 591..639,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 591..634,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 636..737,\n        kind: Let,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 636..730,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Class(\n    ClassDecl {\n        span: 732..932,\n        ident: Ident {\n            span: 738..739,\n            sym: \"C\",\n        },\n        declare: false,\n        class: _,\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 945..970,\n        ident: Ident {\n            span: 960..962,\n            sym: \"f1\",\n        },\n        declare: false,\n        params: [],\n        body: [],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 926..977,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 933..934,\n                sym: \"M\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [\n                    _,\n                ],\n            ),\n        ),\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 972..1053,\n        ident: Ident {\n            span: 987..990,\n            sym: \"f14\",\n        },\n        declare: false,\n        params: [],\n        body: [\n            _,\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 64..73,\n        sym: \"MyPromise\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 103..104,\n        sym: \"p\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 135..137,\n        sym: \"mp\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 268..270,\n        sym: \"f4\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 271..297,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 298..300,\n        sym: \"f5\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 301..342,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 343..345,\n        sym: \"f6\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 346..390,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 391..393,\n        sym: \"f7\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 394..412,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 417..419,\n        sym: \"f8\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 420..453,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 458..460,\n        sym: \"f9\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 461..496,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 501..504,\n        sym: \"f10\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 505..521,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 526..529,\n        sym: \"f11\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 530..547,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 552..555,\n        sym: \"f12\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 556..590,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 595..598,\n        sym: \"f13\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 599..634,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 640..641,\n        sym: \"o\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 642..730,\n        left: _,\n        right: _,\n    },\n)"
  ],
  "exprs": [
    "Function(\n    _,\n)",
    "Function(\n    _,\n)",
    "Function(\n    _,\n)",
    "Arrow(\n    ArrowExpr {\n        span: 402..412,\n        params: [],\n        body: Block(\n            [],\n        ),\n        is_async: true,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 428..453,\n        params: [],\n        body: Block(\n            [],\n        ),\n        is_async: true,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 469..496,\n        params: [],\n        body: Block(\n            [],\n        ),\n        is_async: true,\n    },\n)",
    "Ident(\n    Ident {\n        span: 519..520,\n        sym: \"p\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 513..521,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: true,\n    },\n)",
    "Ident(\n    Ident {\n        span: 544..546,\n        sym: \"mp\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 538..547,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: true,\n    },\n)",
    "Ident(\n    Ident {\n        span: 587..589,\n        sym: \"mp\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 564..590,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: true,\n    },\n)",
    "Ident(\n    Ident {\n        span: 632..633,\n        sym: \"p\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 607..634,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: true,\n    },\n)",
    "Function(\n    _,\n)",
    "Function(\n    _,\n)",
    "Function(\n    _,\n)",
    "Object(\n    ObjectExpr {\n        span: 644..730,\n        props: [\n            KeyValueProp {\n                span: 647..662,\n                key: Ident(\n                    Ident {\n                        span: 653..655,\n                        sym: \"m1\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 664..694,\n                key: Ident(\n                    Ident {\n                        span: 670..672,\n                        sym: \"m2\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 696..729,\n                key: Ident(\n                    Ident {\n                        span: 702..704,\n                        sym: \"m3\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 1022..1023,\n            value: 1.0,\n        },\n    ),\n)",
    "Await(\n    AwaitExpr {\n        span: 1016..1024,\n        arg: _,\n    },\n)"
  ],
  "module_decls": [
    "ExportDecl(\n    ExportDecl {\n        span: 938..970,\n        decl: _,\n    },\n)"
  ],
  "functions": [
    "Function {\n    span: 273..297,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 303..342,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 348..390,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 647..662,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 664..694,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 696..729,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 743..764,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 759..795,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 790..829,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 823..852,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 846..890,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}",
    "Function {\n    span: 884..924,\n    params: [],\n    body: [],\n    is_async: true,\n    is_generator: false,\n}"
  ],
  "classes": [
    "Class {\n    span: 732..932,\n    decorators: [],\n    ident: Some(\n        Ident {\n            span: 738..739,\n            sym: \"C\",\n        },\n    ),\n    super_class: None,\n    body: [\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "class_members": [
    "Method(\n    ClassMethod {\n        span: 743..764,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 749..751,\n                sym: \"m1\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 759..795,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 765..767,\n                sym: \"m2\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 790..829,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 796..798,\n                sym: \"m3\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 823..852,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 836..838,\n                sym: \"m4\",\n            },\n        ),\n        function: _,\n        is_static: true,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 846..890,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 859..861,\n                sym: \"m5\",\n            },\n        ),\n        function: _,\n        is_static: true,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 884..924,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 897..899,\n                sym: \"m6\",\n            },\n        ),\n        function: _,\n        is_static: true,\n        kind: Method,\n    },\n)"
  ],
  "jsx_elements": [],
  "ts_types": [
    "TypeRef(\n    TsTypeRef {\n        span: 48..50,\n        name: Ident {\n            span: 48..50,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 40..51,\n        name: Ident {\n            span: 40..48,\n            sym: \"Promise\",\n        },\n        type_args: [\n            _,\n        ],\n    },\n)"
  ]
}
