{
  "programs": [
    "Program {\n    span: 1..346,\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)",
    "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)"
  ],
  "decls": [
    "Var(\n    VarDecl {\n        span: 1..17,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1..12,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsTypeAlias(\n    TsTypeAliasDecl {\n        span: 13..45,\n        ident: Ident {\n            span: 18..20,\n            sym: \"T0\",\n        },\n        declare: false,\n        type_params: [],\n        ty: _,\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 36..68,\n        ident: Ident {\n            span: 46..48,\n            sym: \"I0\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 55..63,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 55..56,\n                            sym: \"x\",\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: 65..81,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 65..76,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsTypeAlias(\n    TsTypeAliasDecl {\n        span: 77..109,\n        ident: Ident {\n            span: 82..84,\n            sym: \"T1\",\n        },\n        declare: false,\n        type_params: [],\n        ty: _,\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 100..133,\n        ident: Ident {\n            span: 110..112,\n            sym: \"I1\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 119..128,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 130..146,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 130..141,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsTypeAlias(\n    TsTypeAliasDecl {\n        span: 142..174,\n        ident: Ident {\n            span: 147..149,\n            sym: \"T2\",\n        },\n        declare: false,\n        type_params: [],\n        ty: _,\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 165..202,\n        ident: Ident {\n            span: 175..177,\n            sym: \"I2\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 184..197,\n                kind: Construct,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 199..215,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 199..210,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsTypeAlias(\n    TsTypeAliasDecl {\n        span: 211..243,\n        ident: Ident {\n            span: 216..218,\n            sym: \"T3\",\n        },\n        declare: false,\n        type_params: [],\n        ty: _,\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 234..276,\n        ident: Ident {\n            span: 244..246,\n            sym: \"I3\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 253..271,\n                kind: Index,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 254..255,\n                        name: Some(\n                            Ident {\n                                span: 254..255,\n                                sym: \"x\",\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)",
    "Var(\n    VarDecl {\n        span: 273..289,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 273..284,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsTypeAlias(\n    TsTypeAliasDecl {\n        span: 285..317,\n        ident: Ident {\n            span: 290..292,\n            sym: \"T4\",\n        },\n        declare: false,\n        type_params: [],\n        ty: _,\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 308..346,\n        ident: Ident {\n            span: 318..320,\n            sym: \"I4\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 327..345,\n                kind: Index,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 328..329,\n                        name: Some(\n                            Ident {\n                                span: 328..329,\n                                sym: \"x\",\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)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 5..7,\n        sym: \"v0\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 69..71,\n        sym: \"v1\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 134..136,\n        sym: \"v2\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 203..205,\n        sym: \"v3\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 277..279,\n        sym: \"v4\",\n    },\n)"
  ],
  "exprs": [],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 32..35,\n        name: Ident {\n            span: 32..35,\n            sym: \"I0\",\n        },\n        type_args: [],\n    },\n)",
    "Union(\n    TsUnionType {\n        span: 23..35,\n        types: [\n            _,\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 58..61,\n        name: Ident {\n            span: 58..61,\n            sym: \"T0\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 96..99,\n        name: Ident {\n            span: 96..99,\n            sym: \"I1\",\n        },\n        type_args: [],\n    },\n)",
    "Union(\n    TsUnionType {\n        span: 87..99,\n        types: [\n            _,\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 123..126,\n        name: Ident {\n            span: 123..126,\n            sym: \"T1\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 161..164,\n        name: Ident {\n            span: 161..164,\n            sym: \"I2\",\n        },\n        type_args: [],\n    },\n)",
    "Union(\n    TsUnionType {\n        span: 152..164,\n        types: [\n            _,\n            _,\n        ],\n    },\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 192..195,\n        name: Ident {\n            span: 192..195,\n            sym: \"T2\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 230..233,\n        name: Ident {\n            span: 230..233,\n            sym: \"I3\",\n        },\n        type_args: [],\n    },\n)",
    "Union(\n    TsUnionType {\n        span: 221..233,\n        types: [\n            _,\n            _,\n        ],\n    },\n)",
    "Keyword(\n    Number,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 266..269,\n        name: Ident {\n            span: 266..269,\n            sym: \"T3\",\n        },\n        type_args: [],\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 304..307,\n        name: Ident {\n            span: 304..307,\n            sym: \"I4\",\n        },\n        type_args: [],\n    },\n)",
    "Union(\n    TsUnionType {\n        span: 295..307,\n        types: [\n            _,\n            _,\n        ],\n    },\n)",
    "Keyword(\n    String,\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 340..343,\n        name: Ident {\n            span: 340..343,\n            sym: \"T4\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
