{
  "programs": [
    "Program {\n    span: 1..808,\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        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 138..150,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 269..279,\n        expr: _,\n    },\n)",
    "Block(\n    BlockStmt {\n        span: 278..283,\n        stmts: [],\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 282..294,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 417..428,\n        expr: _,\n    },\n)",
    "Block(\n    BlockStmt {\n        span: 427..432,\n        stmts: [],\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 431..438,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 544..565,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 560..581,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 576..599,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 594..617,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 612..636,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 631..656,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 651..671,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 696..727,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 717..748,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 738..772,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 762..796,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 786..808,\n        expr: _,\n    },\n)"
  ],
  "decls": [
    "TsInterface(\n    TsInterfaceDecl {\n        span: 1..80,\n        ident: Ident {\n            span: 11..24,\n            sym: \"BaseInterface\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 31..61,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 31..39,\n                            sym: \"required\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n            TsTypeMember {\n                span: 53..73,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 53..61,\n                            sym: \"optional\",\n                        },\n                    ),\n                ),\n                optional: true,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 141..213,\n        ident: Ident {\n            span: 151..156,\n            sym: \"Child\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 165..180,\n                sym: \"BaseInterface\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 185..206,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 185..195,\n                            sym: \"additional\",\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: 285..368,\n        ident: Ident {\n            span: 295..311,\n            sym: \"ChildNoBaseClass\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [\n            Ident {\n                span: 320..335,\n                sym: \"BaseInterface\",\n            },\n        ],\n        body: [\n            TsTypeMember {\n                span: 340..362,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 340..351,\n                            sym: \"additional2\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Class(\n    ClassDecl {\n        span: 433..528,\n        ident: Ident {\n            span: 439..449,\n            sym: \"Grandchild\",\n        },\n        declare: false,\n        class: _,\n    },\n)",
    "Var(\n    VarDecl {\n        span: 525..549,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 525..543,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 668..706,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 668..695,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 529..534,\n        sym: \"child\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 672..682,\n        sym: \"grandchild\",\n    },\n)"
  ],
  "exprs": [
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 269..275,\n        sym: \"method\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 275..279,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 417..424,\n        sym: \"method2\",\n    },\n)",
    "Call(\n    CallExpr {\n        span: 424..428,\n        callee: _,\n        args: [],\n    },\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 0..0,\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 458..474,\n        sym: \"ChildNoBaseClass\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 544..549,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 549..559,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 550..558,\n                sym: \"required\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 560..565,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 565..575,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 566..574,\n                sym: \"optional\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 576..581,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 581..593,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 582..592,\n                sym: \"additional\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 594..599,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 599..611,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 600..610,\n                sym: \"baseNumber\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 612..617,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 617..630,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 618..629,\n                sym: \"classNumber\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 631..636,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 636..648,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 637..647,\n                sym: \"baseMethod\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 647..650,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 651..656,\n        sym: \"child\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 656..664,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 657..663,\n                sym: \"method\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 663..666,\n        callee: _,\n        args: [],\n    },\n)",
    "Ident(\n    Ident {\n        span: 696..706,\n        sym: \"grandchild\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 706..716,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 707..715,\n                sym: \"required\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 717..727,\n        sym: \"grandchild\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 727..737,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 728..736,\n                sym: \"optional\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 738..748,\n        sym: \"grandchild\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 748..761,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 749..760,\n                sym: \"additional2\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 762..772,\n        sym: \"grandchild\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 772..785,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 773..784,\n                sym: \"classString\",\n            },\n        ),\n    },\n)",
    "Ident(\n    Ident {\n        span: 786..796,\n        sym: \"grandchild\",\n    },\n)",
    "Member(\n    MemberExpr {\n        span: 796..805,\n        obj: _,\n        prop: Ident(\n            Ident {\n                span: 797..804,\n                sym: \"method2\",\n            },\n        ),\n    },\n)",
    "Call(\n    CallExpr {\n        span: 804..807,\n        callee: _,\n        args: [],\n    },\n)"
  ],
  "module_decls": [],
  "functions": [],
  "classes": [
    "Class {\n    span: 433..528,\n    decorators: [],\n    ident: Some(\n        Ident {\n            span: 439..449,\n            sym: \"Grandchild\",\n        },\n    ),\n    super_class: Some(\n        _,\n    ),\n    body: [],\n}"
  ],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Number,\n)",
    "Keyword(\n    String,\n)"
  ]
}
