{
  "programs": [
    "Program {\n    span: 1..768,\n    kind: Script,\n    body: [\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)",
    "Expr(\n    ExprStmt {\n        span: 207..269,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 266..330,\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..72,\n        ident: Ident {\n            span: 11..19,\n            sym: \"Computed\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 20..21,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 29..49,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 29..33,\n                            sym: \"read\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 44..62,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 44..49,\n                            sym: \"write\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 50..59,\n                        name: Some(\n                            Ident {\n                                span: 50..55,\n                                sym: \"value\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 64..104,\n        ident: Ident {\n            span: 73..76,\n            sym: \"foo\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 101..210,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 101..115,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsEnum(\n    TsEnumDecl {\n        span: 326..344,\n        ident: Ident {\n            span: 331..333,\n            sym: \"E1\",\n        },\n        declare: false,\n        is_const: false,\n        members: [\n            TsEnumMember {\n                span: 336..339,\n                name: Ident(\n                    Ident {\n                        span: 336..337,\n                        sym: \"X\",\n                    },\n                ),\n                init: None,\n            },\n        ],\n    },\n)",
    "TsEnum(\n    TsEnumDecl {\n        span: 340..429,\n        ident: Ident {\n            span: 345..347,\n            sym: \"E2\",\n        },\n        declare: false,\n        is_const: false,\n        members: [\n            TsEnumMember {\n                span: 350..353,\n                name: Ident(\n                    Ident {\n                        span: 350..351,\n                        sym: \"X\",\n                    },\n                ),\n                init: None,\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 430..498,\n        ident: Ident {\n            span: 439..441,\n            sym: \"f1\",\n        },\n        declare: true,\n        params: [\n            _,\n            _,\n        ],\n        body: [],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 495..514,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 495..510,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 511..557,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 511..553,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 554..603,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 554..599,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 600..650,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 600..645,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 647..662,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 647..658,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 659..712,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 659..707,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 709..768,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 709..757,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 80..81,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 105..106,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 243..248,\n        sym: \"value\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 252..253,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 283..288,\n        sym: \"value\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 292..293,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 448..449,\n        sym: \"a\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 484..485,\n        sym: \"b\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 499..501,\n        sym: \"v1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 515..517,\n        sym: \"v1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 528..529,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 518..553,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 558..560,\n        sym: \"v1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 571..572,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 561..599,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 604..606,\n        sym: \"v1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 617..618,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 607..645,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 651..653,\n        sym: \"v2\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 663..665,\n        sym: \"v2\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 676..677,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 666..707,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 713..715,\n        sym: \"v3\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 726..727,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 716..757,\n        left: _,\n        right: _,\n    },\n)"
  ],
  "exprs": [
    "Ident(\n    Ident {\n        span: 207..210,\n        sym: \"foo\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 229..230,\n        sym: \"s\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 223..231,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 256..261,\n        sym: \"value\",\n    },\n)",
    "Assign(\n    AssignExpr {\n        span: 254..263,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 243..263,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 211..264,\n        props: [\n            KeyValueProp {\n                span: 217..231,\n                key: Ident(\n                    Ident {\n                        span: 217..221,\n                        sym: \"read\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 236..263,\n                key: Ident(\n                    Ident {\n                        span: 236..241,\n                        sym: \"write\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Call(\n    CallExpr {\n        span: 210..265,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 266..269,\n        sym: \"foo\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 296..301,\n        sym: \"value\",\n    },\n)",
    "Assign(\n    AssignExpr {\n        span: 294..302,\n        left: _,\n        op: Assign,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 283..302,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 319..320,\n        sym: \"s\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 313..322,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 270..323,\n        props: [\n            KeyValueProp {\n                span: 276..302,\n                key: Ident(\n                    Ident {\n                        span: 276..281,\n                        sym: \"write\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 307..322,\n                key: Ident(\n                    Ident {\n                        span: 307..311,\n                        sym: \"read\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Call(\n    CallExpr {\n        span: 269..324,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 520..522,\n        sym: \"f1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 533..534,\n        sym: \"x\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 528..535,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 545..546,\n            value: 0.0,\n        },\n    ),\n)",
    "Arrow(\n    ArrowExpr {\n        span: 539..548,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 523..549,\n        props: [\n            KeyValueProp {\n                span: 525..535,\n                key: Ident(\n                    Ident {\n                        span: 525..526,\n                        sym: \"w\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 536..548,\n                key: Ident(\n                    Ident {\n                        span: 536..537,\n                        sym: \"r\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 550..551,\n            value: 0.0,\n        },\n    ),\n)",
    "Call(\n    CallExpr {\n        span: 522..553,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 563..565,\n        sym: \"f1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 576..577,\n        sym: \"x\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 571..578,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 588..589,\n            value: 0.0,\n        },\n    ),\n)",
    "Arrow(\n    ArrowExpr {\n        span: 582..591,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 566..592,\n        props: [\n            KeyValueProp {\n                span: 568..578,\n                key: Ident(\n                    Ident {\n                        span: 568..569,\n                        sym: \"w\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 579..591,\n                key: Ident(\n                    Ident {\n                        span: 579..580,\n                        sym: \"r\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 593..595,\n        sym: \"E1\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 595..598,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 596..597,\n                sym: \"X\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 565..599,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 609..611,\n        sym: \"f1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 622..623,\n        sym: \"x\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 617..624,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 634..636,\n        sym: \"E1\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 636..640,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 637..638,\n                sym: \"X\",\n            },\n        ),\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 628..640,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 612..641,\n        props: [\n            KeyValueProp {\n                span: 614..624,\n                key: Ident(\n                    Ident {\n                        span: 614..615,\n                        sym: \"w\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 625..640,\n                key: Ident(\n                    Ident {\n                        span: 625..626,\n                        sym: \"r\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 642..643,\n            value: 0.0,\n        },\n    ),\n)",
    "Call(\n    CallExpr {\n        span: 611..645,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 668..670,\n        sym: \"f1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 681..682,\n        sym: \"x\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 676..683,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 693..695,\n        sym: \"E1\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 695..699,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 696..697,\n                sym: \"X\",\n            },\n        ),\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 687..699,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 671..700,\n        props: [\n            KeyValueProp {\n                span: 673..683,\n                key: Ident(\n                    Ident {\n                        span: 673..674,\n                        sym: \"w\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 684..699,\n                key: Ident(\n                    Ident {\n                        span: 684..685,\n                        sym: \"r\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 701..703,\n        sym: \"E1\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 703..706,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 704..705,\n                sym: \"X\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 670..707,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 718..720,\n        sym: \"f1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 731..732,\n        sym: \"x\",\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 726..733,\n        params: [\n            _,\n        ],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Ident(\n    Ident {\n        span: 743..745,\n        sym: \"E1\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 745..749,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 746..747,\n                sym: \"X\",\n            },\n        ),\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 737..749,\n        params: [],\n        body: Expr(\n            _,\n        ),\n        is_async: false,\n    },\n)",
    "Object(\n    ObjectExpr {\n        span: 721..750,\n        props: [\n            KeyValueProp {\n                span: 723..733,\n                key: Ident(\n                    Ident {\n                        span: 723..724,\n                        sym: \"w\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 734..749,\n                key: Ident(\n                    Ident {\n                        span: 734..735,\n                        sym: \"r\",\n                    },\n                ),\n                value: _,\n            },\n        ],\n    },\n)",
    "Ident(\n    Ident {\n        span: 751..753,\n        sym: \"E2\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 753..756,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 754..755,\n                sym: \"X\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 720..757,\n        callee: _,\n        args: [\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n            ExprOrSpread {\n                spread: false,\n                expr: _,\n            },\n        ],\n    },\n)"
  ],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "TypeRef(\n    TsTypeRef {\n        span: 37..39,\n        name: Ident {\n            span: 37..39,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 57..59,\n        name: Ident {\n            span: 57..59,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
