{
  "programs": [
    "Program {\n    span: 24..804,\n    kind: Script,\n    body: [\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 140..143,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 142..150,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 209..212,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 211..219,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 293..296,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 295..307,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 710..716,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 802..804,\n        expr: _,\n    },\n)"
  ],
  "decls": [
    "Fn(\n    FnDecl {\n        span: 24..54,\n        ident: Ident {\n            span: 33..36,\n            sym: \"foo\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 46..80,\n        ident: Ident {\n            span: 55..58,\n            sym: \"foo\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 298..392,\n        ident: Ident {\n            span: 308..309,\n            sym: \"I\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 316..331,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 317..324,\n                        name: Some(\n                            Ident {\n                                span: 317..318,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 330..350,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 331..341,\n                        name: Some(\n                            Ident {\n                                span: 331..332,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 347..367,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 347..350,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 351..358,\n                        name: Some(\n                            Ident {\n                                span: 351..352,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 364..381,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 364..367,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 368..378,\n                        name: Some(\n                            Ident {\n                                span: 368..369,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 383..471,\n        ident: Ident {\n            span: 393..395,\n            sym: \"I2\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 396..397,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 405..420,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 406..413,\n                        name: Some(\n                            Ident {\n                                span: 406..407,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 419..434,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 420..425,\n                        name: Some(\n                            Ident {\n                                span: 420..421,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 431..451,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 431..434,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 435..442,\n                        name: Some(\n                            Ident {\n                                span: 435..436,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 448..460,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 448..451,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 452..457,\n                        name: Some(\n                            Ident {\n                                span: 452..453,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 462..559,\n        ident: Ident {\n            span: 472..474,\n            sym: \"I3\",\n        },\n        declare: false,\n        type_params: [\n            Ident {\n                span: 475..476,\n                sym: \"T\",\n            },\n        ],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 499..514,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 500..507,\n                        name: Some(\n                            Ident {\n                                span: 500..501,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 513..528,\n                kind: Call,\n                name: None,\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 514..519,\n                        name: Some(\n                            Ident {\n                                span: 514..515,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 525..545,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 525..528,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 529..536,\n                        name: Some(\n                            Ident {\n                                span: 529..530,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n            TsTypeMember {\n                span: 542..554,\n                kind: Method,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 542..545,\n                            sym: \"foo\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [\n                    TsFnParam {\n                        span: 546..551,\n                        name: Some(\n                            Ident {\n                                span: 546..547,\n                                sym: \"x\",\n                            },\n                        ),\n                        ty: Some(\n                            _,\n                        ),\n                        is_rest: false,\n                        optional: false,\n                    },\n                ],\n                ty: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 556..639,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 556..639,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 37..38,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 59..60,\n        sym: \"x\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 560..561,\n        sym: \"a\",\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)"
  ],
  "module_decls": [],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Lit(\n    Str(\n        StrLit {\n            span: 320..323,\n            value: \"a\",\n        },\n    ),\n)",
    "Keyword(\n    Number,\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 354..357,\n            value: \"a\",\n        },\n    ),\n)",
    "Keyword(\n    Number,\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 409..412,\n            value: \"a\",\n        },\n    ),\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 423..425,\n        name: Ident {\n            span: 423..425,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 438..441,\n            value: \"a\",\n        },\n    ),\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 455..457,\n        name: Ident {\n            span: 455..457,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 503..506,\n            value: \"a\",\n        },\n    ),\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 517..519,\n        name: Ident {\n            span: 517..519,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 532..535,\n            value: \"a\",\n        },\n    ),\n)",
    "TypeRef(\n    TsTypeRef {\n        span: 549..551,\n        name: Ident {\n            span: 549..551,\n            sym: \"T\",\n        },\n        type_args: [],\n    },\n)"
  ]
}
