{
  "programs": [
    "Program {\n    span: 26..801,\n    kind: Script,\n    body: [\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 292..319,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 355..387,\n        expr: _,\n    },\n)",
    "Return(\n    ReturnStmt {\n        span: 242..395,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 483..510,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 552..584,\n        expr: _,\n    },\n)",
    "Return(\n    ReturnStmt {\n        span: 427..592,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 686..713,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 761..793,\n        expr: _,\n    },\n)",
    "Return(\n    ReturnStmt {\n        span: 624..801,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 26..73,\n        ident: Ident {\n            span: 36..37,\n            sym: \"A\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 44..62,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 44..51,\n                            sym: \"numProp\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 64..112,\n        ident: Ident {\n            span: 74..75,\n            sym: \"B\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 83..101,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 83..90,\n                            sym: \"strProp\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 103..148,\n        ident: Ident {\n            span: 113..116,\n            sym: \"Foo\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 123..137,\n                kind: Construct,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 139..220,\n        ident: Ident {\n            span: 149..152,\n            sym: \"Bar\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 159..193,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 159..166,\n                            sym: \"method1\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 167..174,\n                        name: Some(\n                            Ident {\n                                span: 167..170,\n                                sym: \"arg\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 186..210,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 186..193,\n                            sym: \"method2\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 194..201,\n                        name: Some(\n                            Ident {\n                                span: 194..197,\n                                sym: \"arg\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 212..405,\n        ident: Ident {\n            span: 221..228,\n            sym: \"getFoo1\",\n        },\n        declare: false,\n        params: [],\n        body: [\n            _,\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 397..602,\n        ident: Ident {\n            span: 406..413,\n            sym: \"getFoo2\",\n        },\n        declare: false,\n        params: [],\n        body: [\n            _,\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 594..801,\n        ident: Ident {\n            span: 603..610,\n            sym: \"getFoo3\",\n        },\n        declare: false,\n        params: [],\n        body: [\n            _,\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 273..276,\n        sym: \"arg\",\n    },\n)",
    "Expr(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 336..339,\n        sym: \"arg\",\n    },\n)",
    "Expr(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 461..464,\n        sym: \"arg\",\n    },\n)",
    "Expr(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 530..533,\n        sym: \"arg\",\n    },\n)",
    "Expr(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 667..670,\n        sym: \"arg\",\n    },\n)",
    "Expr(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 742..745,\n        sym: \"arg\",\n    },\n)",
    "Expr(\n    _,\n)"
  ],
  "exprs": [
    "Ident(\n    Ident {\n        span: 292..295,\n        sym: \"arg\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 295..305,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 296..303,\n                sym: \"numProp\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 306..308,\n            value: 10.0,\n        },\n    ),\n)",
    "Assign(\n    AssignExpr {\n        span: 304..309,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 355..358,\n        sym: \"arg\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 358..368,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 359..366,\n                sym: \"strProp\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 369..376,\n            value: \"hello\",\n        },\n    ),\n)",
    "Assign(\n    AssignExpr {\n        span: 367..377,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Class(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 483..486,\n        sym: \"arg\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 486..496,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 487..494,\n                sym: \"numProp\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 497..499,\n            value: 10.0,\n        },\n    ),\n)",
    "Assign(\n    AssignExpr {\n        span: 495..500,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 460..526,\n        params: [\n            _,\n        ],\n        body: Block(\n            [\n                _,\n            ],\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 552..555,\n        sym: \"arg\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 555..565,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 556..563,\n                sym: \"strProp\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 566..573,\n            value: \"hello\",\n        },\n    ),\n)",
    "Assign(\n    AssignExpr {\n        span: 564..574,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 529..590,\n        params: [\n            _,\n        ],\n        body: Block(\n            [\n                _,\n            ],\n        ),\n        is_async: false,\n    },\n)",
    "Class(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 686..689,\n        sym: \"arg\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 689..699,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 690..697,\n                sym: \"numProp\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 700..702,\n            value: 10.0,\n        },\n    ),\n)",
    "Assign(\n    AssignExpr {\n        span: 698..703,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Function(\n    _,\n)",
    "Ident(\n    Ident {\n        span: 761..764,\n        sym: \"arg\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 764..774,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 765..772,\n                sym: \"strProp\",\n            },\n        ),\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 775..782,\n            value: \"hello\",\n        },\n    ),\n)",
    "Assign(\n    AssignExpr {\n        span: 773..783,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Function(\n    _,\n)",
    "Class(\n    _,\n)"
  ],
  "module_decls": [],
  "functions": [
    "Function {\n    span: 265..335,\n    params: [\n        Param {\n            span: 273..277,\n            decorators: [],\n            pat: _,\n        },\n    ],\n    body: [\n        _,\n    ],\n    is_async: false,\n    is_generator: false,\n}",
    "Function {\n    span: 328..393,\n    params: [\n        Param {\n            span: 336..340,\n            decorators: [],\n            pat: _,\n        },\n    ],\n    body: [\n        _,\n    ],\n    is_async: false,\n    is_generator: false,\n}",
    "Function {\n    span: 657..729,\n    params: [\n        Param {\n            span: 657..657,\n            decorators: [],\n            pat: _,\n        },\n    ],\n    body: [\n        _,\n    ],\n    is_async: false,\n    is_generator: false,\n}",
    "Function {\n    span: 732..799,\n    params: [\n        Param {\n            span: 732..732,\n            decorators: [],\n            pat: _,\n        },\n    ],\n    body: [\n        _,\n    ],\n    is_async: false,\n    is_generator: false,\n}"
  ],
  "classes": [
    "Class {\n    span: 249..395,\n    decorators: [],\n    ident: None,\n    super_class: None,\n    body: [\n        _,\n        _,\n    ],\n}",
    "Class {\n    span: 434..592,\n    decorators: [],\n    ident: None,\n    super_class: None,\n    body: [\n        _,\n        _,\n    ],\n}",
    "Class {\n    span: 631..801,\n    decorators: [],\n    ident: None,\n    super_class: None,\n    body: [\n        _,\n        _,\n    ],\n}"
  ],
  "class_members": [
    "Method(\n    ClassMethod {\n        span: 265..335,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 265..272,\n                sym: \"method1\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)",
    "Method(\n    ClassMethod {\n        span: 328..393,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 328..335,\n                sym: \"method2\",\n            },\n        ),\n        function: _,\n        is_static: false,\n        kind: Method,\n    },\n)",
    "Prop(\n    ClassProp {\n        span: 450..526,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 450..457,\n                sym: \"method1\",\n            },\n        ),\n        value: Some(\n            _,\n        ),\n        is_static: false,\n    },\n)",
    "Prop(\n    ClassProp {\n        span: 519..590,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 519..526,\n                sym: \"method2\",\n            },\n        ),\n        value: Some(\n            _,\n        ),\n        is_static: false,\n    },\n)",
    "Prop(\n    ClassProp {\n        span: 647..729,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 647..654,\n                sym: \"method1\",\n            },\n        ),\n        value: Some(\n            _,\n        ),\n        is_static: false,\n    },\n)",
    "Prop(\n    ClassProp {\n        span: 722..799,\n        decorators: [],\n        key: Ident(\n            Ident {\n                span: 722..729,\n                sym: \"method2\",\n            },\n        ),\n        value: Some(\n            _,\n        ),\n        is_static: false,\n    },\n)"
  ],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    Number,\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 131..135,\n        name: Ident {\n            span: 131..135,\n            sym: \"Bar\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 172..174,\n        name: Ident {\n            span: 172..174,\n            sym: \"A\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    Void,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 199..201,\n        name: Ident {\n            span: 199..201,\n            sym: \"B\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    Void,\n)"
  ]
}
