{
  "programs": [
    "Program {\n    span: 1..1233,\n    kind: Module,\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        _,\n        _,\n        _,\n        _,\n    ],\n}"
  ],
  "stmts": [
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 61..76,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 152..163,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 206..219,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 263..273,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 354..369,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 435..461,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "Decl(\n    _,\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 567..570,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 569..578,\n        expr: _,\n    },\n)",
    "Decl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 646..658,\n        expr: _,\n    },\n)",
    "ModuleDecl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 751..763,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 812..825,\n        expr: _,\n    },\n)",
    "ModuleDecl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 876..888,\n        expr: _,\n    },\n)",
    "ModuleDecl(\n    _,\n)",
    "ModuleDecl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 988..1003,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "ModuleDecl(\n    _,\n)",
    "ModuleDecl(\n    _,\n)",
    "Return(\n    ReturnStmt {\n        span: 1083..1109,\n        arg: Some(\n            _,\n        ),\n    },\n)",
    "ModuleDecl(\n    _,\n)",
    "ModuleDecl(\n    _,\n)",
    "Expr(\n    ExprStmt {\n        span: 1229..1232,\n        expr: _,\n    },\n)",
    "Expr(\n    ExprStmt {\n        span: 1231..1233,\n        expr: _,\n    },\n)"
  ],
  "decls": [
    "TsModule(\n    TsModuleDecl {\n        span: 1..47,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 8..9,\n                sym: \"A\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [],\n            ),\n        ),\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 67..104,\n        ident: Ident {\n            span: 77..78,\n            sym: \"I\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 81..93,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 81..83,\n                            sym: \"id\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 213..264,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 220..226,\n                sym: \"Module\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [],\n            ),\n        ),\n    },\n)",
    "TsEnum(\n    TsEnumDecl {\n        span: 269..301,\n        ident: Ident {\n            span: 274..279,\n            sym: \"Color\",\n        },\n        declare: false,\n        is_const: false,\n        members: [\n            TsEnumMember {\n                span: 282..287,\n                name: Ident(\n                    Ident {\n                        span: 282..286,\n                        sym: \"Blue\",\n                    },\n                ),\n                init: None,\n            },\n            TsEnumMember {\n                span: 288..293,\n                name: Ident(\n                    Ident {\n                        span: 288..291,\n                        sym: \"Red\",\n                    },\n                ),\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 298..322,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 298..309,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 314..377,\n        ident: Ident {\n            span: 323..324,\n            sym: \"F\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 374..404,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 374..396,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 401..469,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 401..469,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 466..525,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 466..512,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 572..626,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 579..580,\n                sym: \"Y\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [],\n            ),\n        ),\n    },\n)",
    "TsInterface(\n    TsInterfaceDecl {\n        span: 659..697,\n        ident: Ident {\n            span: 669..670,\n            sym: \"I\",\n        },\n        declare: false,\n        type_params: [],\n        extends: [],\n        body: [\n            TsTypeMember {\n                span: 673..685,\n                kind: Property,\n                name: Some(\n                    Ident(\n                        Ident {\n                            span: 673..675,\n                            sym: \"id\",\n                        },\n                    ),\n                ),\n                optional: false,\n                readonly: false,\n                params: [],\n                ty: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "TsModule(\n    TsModuleDecl {\n        span: 826..877,\n        declare: false,\n        global: false,\n        namespace: false,\n        id: Ident(\n            Ident {\n                span: 833..839,\n                sym: \"Module\",\n            },\n        ),\n        body: Some(\n            ModuleBlock(\n                [],\n            ),\n        ),\n    },\n)",
    "TsEnum(\n    TsEnumDecl {\n        span: 889..924,\n        ident: Ident {\n            span: 894..899,\n            sym: \"Color\",\n        },\n        declare: false,\n        is_const: false,\n        members: [\n            TsEnumMember {\n                span: 902..907,\n                name: Ident(\n                    Ident {\n                        span: 902..906,\n                        sym: \"Blue\",\n                    },\n                ),\n                init: None,\n            },\n            TsEnumMember {\n                span: 908..913,\n                name: Ident(\n                    Ident {\n                        span: 908..911,\n                        sym: \"Red\",\n                    },\n                ),\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 925..947,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 925..936,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Fn(\n    FnDecl {\n        span: 948..1014,\n        ident: Ident {\n            span: 957..958,\n            sym: \"F\",\n        },\n        declare: false,\n        params: [\n            _,\n        ],\n        body: [\n            _,\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1015..1048,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1015..1037,\n                name: _,\n                init: Some(\n                    _,\n                ),\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1049..1120,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1049..1120,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)",
    "Var(\n    VarDecl {\n        span: 1121..1179,\n        kind: Var,\n        declare: false,\n        declarators: [\n            VarDeclarator {\n                span: 1121..1167,\n                name: _,\n                init: None,\n            },\n        ],\n    },\n)"
  ],
  "pats": [
    "Ident(\n    Ident {\n        span: 302..303,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 304..309,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 325..326,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 378..383,\n        sym: \"array\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 405..407,\n        sym: \"fn\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 411..412,\n        sym: \"s\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 408..469,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 470..472,\n        sym: \"ol\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 473..512,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 929..930,\n        sym: \"x\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 931..936,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 959..960,\n        sym: \"s\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1019..1024,\n        sym: \"array\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1053..1055,\n        sym: \"fn\",\n    },\n)",
    "Ident(\n    Ident {\n        span: 1059..1060,\n        sym: \"s\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1056..1120,\n        left: _,\n        right: _,\n    },\n)",
    "Ident(\n    Ident {\n        span: 1125..1127,\n        sym: \"ol\",\n    },\n)",
    "Assign(\n    AssignPat {\n        span: 1128..1167,\n        left: _,\n        right: _,\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    Num(\n        NumberLit {\n            span: 306..308,\n            value: 12.0,\n        },\n    ),\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 361..362,\n            value: 2.0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 391..395,\n        },\n    ),\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 442..450,\n            value: \"hello \",\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 453..454,\n        sym: \"s\",\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 451..455,\n        op: Add,\n        left: _,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 410..469,\n        params: [\n            _,\n        ],\n        body: Block(\n            [\n                _,\n            ],\n        ),\n        is_async: false,\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 480..487,\n            value: \"hello\",\n        },\n    ),\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 493..494,\n            value: 2.0,\n        },\n    ),\n)",
    "Lit(\n    Bool(\n        BoolLit {\n            span: 505..509,\n            value: true,\n        },\n    ),\n)",
    "Object(\n    ObjectExpr {\n        span: 475..512,\n        props: [\n            KeyValueProp {\n                span: 477..488,\n                key: Ident(\n                    Ident {\n                        span: 477..478,\n                        sym: \"s\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 489..495,\n                key: Ident(\n                    Ident {\n                        span: 489..491,\n                        sym: \"id\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 496..511,\n                key: Ident(\n                    Ident {\n                        span: 496..503,\n                        sym: \"isvalid\",\n                    },\n                ),\n                value: _,\n            },\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    Num(\n        NumberLit {\n            span: 933..935,\n            value: 12.0,\n        },\n    ),\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 995..996,\n            value: 2.0,\n        },\n    ),\n)",
    "Lit(\n    Null(\n        NullLit {\n            span: 1032..1036,\n        },\n    ),\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 1090..1098,\n            value: \"hello \",\n        },\n    ),\n)",
    "Ident(\n    Ident {\n        span: 1101..1102,\n        sym: \"s\",\n    },\n)",
    "Binary(\n    BinaryExpr {\n        span: 1099..1103,\n        op: Add,\n        left: _,\n        right: _,\n    },\n)",
    "Arrow(\n    ArrowExpr {\n        span: 1058..1120,\n        params: [\n            _,\n        ],\n        body: Block(\n            [\n                _,\n            ],\n        ),\n        is_async: false,\n    },\n)",
    "Lit(\n    Str(\n        StrLit {\n            span: 1135..1142,\n            value: \"hello\",\n        },\n    ),\n)",
    "Lit(\n    Num(\n        NumberLit {\n            span: 1148..1149,\n            value: 2.0,\n        },\n    ),\n)",
    "Lit(\n    Bool(\n        BoolLit {\n            span: 1160..1164,\n            value: true,\n        },\n    ),\n)",
    "Object(\n    ObjectExpr {\n        span: 1130..1167,\n        props: [\n            KeyValueProp {\n                span: 1132..1143,\n                key: Ident(\n                    Ident {\n                        span: 1132..1133,\n                        sym: \"s\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 1144..1150,\n                key: Ident(\n                    Ident {\n                        span: 1144..1146,\n                        sym: \"id\",\n                    },\n                ),\n                value: _,\n            },\n            KeyValueProp {\n                span: 1151..1166,\n                key: Ident(\n                    Ident {\n                        span: 1151..1158,\n                        sym: \"isvalid\",\n                    },\n                ),\n                value: _,\n            },\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": [
    "ExportDecl(\n    ExportDecl {\n        span: 652..697,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 819..877,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 882..924,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 918..947,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 941..1014,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 1008..1048,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 1042..1120,\n        decl: _,\n    },\n)",
    "ExportDecl(\n    ExportDecl {\n        span: 1114..1179,\n        decl: _,\n    },\n)"
  ],
  "functions": [],
  "classes": [],
  "class_members": [],
  "jsx_elements": [],
  "ts_types": [
    "Keyword(\n    Number,\n)",
    "Keyword(\n    Number,\n)"
  ]
}
