{ "type": "Script", "span": { "start": 80, "end": 1134, "ctxt": 0 }, "body": [ { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 86, "end": 90, "ctxt": 0 }, "value": "Base", "optional": false }, "declare": false, "span": { "start": 80, "end": 107, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 93, "end": 105, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 93, "end": 96, "ctxt": 0 }, "value": "foo", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 96, "end": 104, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 98, "end": 104, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": null, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 114, "end": 121, "ctxt": 0 }, "value": "Derived", "optional": false }, "declare": false, "span": { "start": 108, "end": 151, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 137, "end": 149, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 137, "end": 140, "ctxt": 0 }, "value": "bar", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 140, "end": 148, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 142, "end": 148, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 130, "end": 134, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 158, "end": 166, "ctxt": 0 }, "value": "Derived2", "optional": false }, "declare": false, "span": { "start": 152, "end": 199, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 185, "end": 197, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 185, "end": 188, "ctxt": 0 }, "value": "baz", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 188, "end": 196, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 190, "end": 196, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 175, "end": 182, "ctxt": 0 }, "value": "Derived", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "ClassDeclaration", "identifier": { "type": "Identifier", "span": { "start": 206, "end": 218, "ctxt": 0 }, "value": "OtherDerived", "optional": false }, "declare": false, "span": { "start": 200, "end": 249, "ctxt": 0 }, "decorators": [], "body": [ { "type": "ClassProperty", "span": { "start": 234, "end": 247, "ctxt": 0 }, "key": { "type": "Identifier", "span": { "start": 234, "end": 238, "ctxt": 0 }, "value": "bing", "optional": false }, "value": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 238, "end": 246, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 240, "end": 246, "ctxt": 0 }, "kind": "string" } }, "isStatic": false, "decorators": [], "accessibility": null, "isAbstract": false, "isOptional": false, "isOverride": false, "readonly": false, "declare": false, "definite": false } ], "superClass": { "type": "Identifier", "span": { "start": 227, "end": 231, "ctxt": 0 }, "value": "Base", "optional": false }, "isAbstract": false, "typeParams": null, "superTypeParams": null, "implements": [] }, { "type": "TsInterfaceDeclaration", "span": { "start": 251, "end": 670, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 261, "end": 262, "ctxt": 0 }, "value": "A", "optional": false }, "declare": false, "typeParams": null, "extends": [], "body": { "type": "TsInterfaceBody", "span": { "start": 263, "end": 670, "ctxt": 0 }, "body": [ { "type": "TsPropertySignature", "span": { "start": 269, "end": 293, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 269, "end": 270, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 270, "end": 292, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 272, "end": 292, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 280, "end": 284, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 281, "end": 284, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 283, "end": 284, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 283, "end": 284, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 276, "end": 279, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 277, "end": 278, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 277, "end": 278, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 286, "end": 292, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 289, "end": 292, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 289, "end": 290, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 289, "end": 290, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 298, "end": 328, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 298, "end": 300, "ctxt": 0 }, "value": "a2", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 300, "end": 327, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 302, "end": 327, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 310, "end": 314, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 311, "end": 314, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 313, "end": 314, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 313, "end": 314, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 306, "end": 309, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 307, "end": 308, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 307, "end": 308, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 316, "end": 327, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 319, "end": 327, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 319, "end": 325, "ctxt": 0 }, "kind": "string" } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 333, "end": 359, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 333, "end": 335, "ctxt": 0 }, "value": "a3", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 335, "end": 358, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 337, "end": 358, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 345, "end": 349, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 346, "end": 349, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 348, "end": 349, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 348, "end": 349, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 341, "end": 344, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 342, "end": 343, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 342, "end": 343, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 351, "end": 358, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 354, "end": 358, "ctxt": 0 }, "kind": "void" } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 364, "end": 401, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 364, "end": 366, "ctxt": 0 }, "value": "a4", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 366, "end": 400, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 368, "end": 400, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 379, "end": 383, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 380, "end": 383, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 382, "end": 383, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 382, "end": 383, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 385, "end": 389, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 386, "end": 389, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 388, "end": 389, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 388, "end": 389, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 372, "end": 378, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 373, "end": 374, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 373, "end": 374, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 376, "end": 377, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 376, "end": 377, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 391, "end": 400, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 394, "end": 400, "ctxt": 0 }, "kind": "string" } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 406, "end": 444, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 406, "end": 408, "ctxt": 0 }, "value": "a5", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 408, "end": 443, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 410, "end": 443, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 421, "end": 437, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 422, "end": 437, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 424, "end": 437, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 425, "end": 431, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 428, "end": 431, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 430, "end": 431, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 430, "end": 431, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 433, "end": 437, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 436, "end": 437, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 436, "end": 437, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 414, "end": 420, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 415, "end": 416, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 415, "end": 416, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 418, "end": 419, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 418, "end": 419, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 439, "end": 443, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 442, "end": 443, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 442, "end": 443, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 449, "end": 503, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 449, "end": 451, "ctxt": 0 }, "value": "a6", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 451, "end": 502, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 453, "end": 502, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 474, "end": 496, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 475, "end": 496, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 477, "end": 496, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 478, "end": 484, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 481, "end": 484, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 483, "end": 484, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 483, "end": 484, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 486, "end": 496, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 489, "end": 496, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 489, "end": 496, "ctxt": 0 }, "value": "Derived", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 457, "end": 473, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 458, "end": 472, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 458, "end": 459, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 468, "end": 472, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 468, "end": 472, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 498, "end": 502, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 501, "end": 502, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 501, "end": 502, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 508, "end": 567, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 508, "end": 511, "ctxt": 0 }, "value": "a11", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 511, "end": 566, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 513, "end": 566, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 521, "end": 534, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 522, "end": 534, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 524, "end": 534, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 526, "end": 532, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 526, "end": 529, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 529, "end": 532, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 531, "end": 532, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 531, "end": 532, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 536, "end": 557, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 537, "end": 557, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 539, "end": 557, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 541, "end": 548, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 541, "end": 544, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 544, "end": 547, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 546, "end": 547, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 546, "end": 547, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 549, "end": 555, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 549, "end": 552, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 552, "end": 555, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 554, "end": 555, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 554, "end": 555, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 517, "end": 520, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 518, "end": 519, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 518, "end": 519, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 559, "end": 566, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 562, "end": 566, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 562, "end": 566, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 572, "end": 611, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 572, "end": 575, "ctxt": 0 }, "value": "a15", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 575, "end": 610, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 577, "end": 610, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 585, "end": 602, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 586, "end": 602, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 588, "end": 602, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 590, "end": 595, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 590, "end": 591, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 591, "end": 594, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 593, "end": 594, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 593, "end": 594, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 596, "end": 600, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 596, "end": 597, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 597, "end": 600, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 599, "end": 600, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 599, "end": 600, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 581, "end": 584, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 582, "end": 583, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 582, "end": 583, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 604, "end": 610, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 607, "end": 610, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 607, "end": 608, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 607, "end": 608, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 616, "end": 668, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 616, "end": 619, "ctxt": 0 }, "value": "a16", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 619, "end": 667, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 621, "end": 667, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 642, "end": 659, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 643, "end": 659, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 645, "end": 659, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 647, "end": 652, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 647, "end": 648, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 648, "end": 651, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 650, "end": 651, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 650, "end": 651, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 653, "end": 657, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 653, "end": 654, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 654, "end": 657, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 656, "end": 657, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 656, "end": 657, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 625, "end": 641, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 626, "end": 640, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 626, "end": 627, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": { "type": "TsTypeReference", "span": { "start": 636, "end": 640, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 636, "end": 640, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null }, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 661, "end": 667, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 664, "end": 667, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 664, "end": 665, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 664, "end": 665, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } }, "typeParams": null } ] } }, { "type": "VariableDeclaration", "span": { "start": 672, "end": 681, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 676, "end": 680, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 676, "end": 677, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 677, "end": 680, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 679, "end": 680, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 679, "end": 680, "ctxt": 0 }, "value": "A", "optional": false }, "typeParams": null } } }, "init": null, "definite": false } ] }, { "type": "VariableDeclaration", "span": { "start": 683, "end": 711, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 687, "end": 710, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 687, "end": 688, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 688, "end": 710, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 690, "end": 710, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 698, "end": 702, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 699, "end": 702, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 701, "end": 702, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 701, "end": 702, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 694, "end": 697, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 695, "end": 696, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 695, "end": 696, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 704, "end": 710, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 707, "end": 710, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 707, "end": 708, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 707, "end": 708, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 713, "end": 721, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 713, "end": 720, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 713, "end": 716, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 713, "end": 714, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 715, "end": 716, "ctxt": 0 }, "value": "a", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 719, "end": 720, "ctxt": 0 }, "value": "b", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 722, "end": 730, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 722, "end": 729, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 722, "end": 723, "ctxt": 0 }, "value": "b", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 726, "end": 729, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 726, "end": 727, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 728, "end": 729, "ctxt": 0 }, "value": "a", "optional": false } } } }, { "type": "VariableDeclaration", "span": { "start": 731, "end": 765, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 735, "end": 764, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 735, "end": 737, "ctxt": 0 }, "value": "b2", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 737, "end": 764, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 739, "end": 764, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 747, "end": 751, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 748, "end": 751, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 750, "end": 751, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 750, "end": 751, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 743, "end": 746, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 744, "end": 745, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 744, "end": 745, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 753, "end": 764, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 756, "end": 764, "ctxt": 0 }, "elemType": { "type": "TsKeywordType", "span": { "start": 756, "end": 762, "ctxt": 0 }, "kind": "string" } } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 767, "end": 777, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 767, "end": 776, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 767, "end": 771, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 767, "end": 768, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 769, "end": 771, "ctxt": 0 }, "value": "a2", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 774, "end": 776, "ctxt": 0 }, "value": "b2", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 778, "end": 788, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 778, "end": 787, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 778, "end": 780, "ctxt": 0 }, "value": "b2", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 783, "end": 787, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 783, "end": 784, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 785, "end": 787, "ctxt": 0 }, "value": "a2", "optional": false } } } }, { "type": "VariableDeclaration", "span": { "start": 789, "end": 816, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 793, "end": 815, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 793, "end": 795, "ctxt": 0 }, "value": "b3", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 795, "end": 815, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 797, "end": 815, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 805, "end": 809, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 806, "end": 809, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 808, "end": 809, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 808, "end": 809, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 801, "end": 804, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 802, "end": 803, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 802, "end": 803, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 811, "end": 815, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 814, "end": 815, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 814, "end": 815, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 817, "end": 827, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 817, "end": 826, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 817, "end": 821, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 817, "end": 818, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 819, "end": 821, "ctxt": 0 }, "value": "a3", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 824, "end": 826, "ctxt": 0 }, "value": "b3", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 828, "end": 838, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 828, "end": 837, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 828, "end": 830, "ctxt": 0 }, "value": "b3", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 833, "end": 837, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 833, "end": 834, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 835, "end": 837, "ctxt": 0 }, "value": "a3", "optional": false } } } }, { "type": "VariableDeclaration", "span": { "start": 839, "end": 880, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 843, "end": 879, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 843, "end": 845, "ctxt": 0 }, "value": "b4", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 845, "end": 879, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 847, "end": 879, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 858, "end": 862, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 859, "end": 862, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 861, "end": 862, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 861, "end": 862, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, { "type": "Identifier", "span": { "start": 864, "end": 868, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 865, "end": 868, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 867, "end": 868, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 867, "end": 868, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 851, "end": 857, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 852, "end": 853, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 852, "end": 853, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 855, "end": 856, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 855, "end": 856, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 870, "end": 879, "ctxt": 0 }, "typeAnnotation": { "type": "TsKeywordType", "span": { "start": 873, "end": 879, "ctxt": 0 }, "kind": "string" } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 882, "end": 892, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 882, "end": 891, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 882, "end": 886, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 882, "end": 883, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 884, "end": 886, "ctxt": 0 }, "value": "a4", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 889, "end": 891, "ctxt": 0 }, "value": "b4", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 893, "end": 903, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 893, "end": 902, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 893, "end": 895, "ctxt": 0 }, "value": "b4", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 898, "end": 902, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 898, "end": 899, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 900, "end": 902, "ctxt": 0 }, "value": "a4", "optional": false } } } }, { "type": "VariableDeclaration", "span": { "start": 904, "end": 946, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 908, "end": 945, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 908, "end": 910, "ctxt": 0 }, "value": "b5", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 910, "end": 945, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 912, "end": 945, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 923, "end": 939, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 924, "end": 939, "ctxt": 0 }, "typeAnnotation": { "type": "TsFunctionType", "span": { "start": 926, "end": 939, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 927, "end": 933, "ctxt": 0 }, "value": "arg", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 930, "end": 933, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 932, "end": 933, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 932, "end": 933, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } } ], "typeParams": null, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 935, "end": 939, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 938, "end": 939, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 938, "end": 939, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } } } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 916, "end": 922, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 917, "end": 918, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 917, "end": 918, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 920, "end": 921, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 920, "end": 921, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 941, "end": 945, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 944, "end": 945, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 944, "end": 945, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 948, "end": 958, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 948, "end": 957, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 948, "end": 952, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 948, "end": 949, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 950, "end": 952, "ctxt": 0 }, "value": "a5", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 955, "end": 957, "ctxt": 0 }, "value": "b5", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 959, "end": 969, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 959, "end": 968, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 959, "end": 961, "ctxt": 0 }, "value": "b5", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 964, "end": 968, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 964, "end": 965, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 966, "end": 968, "ctxt": 0 }, "value": "a5", "optional": false } } } }, { "type": "VariableDeclaration", "span": { "start": 970, "end": 1036, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 974, "end": 1035, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 974, "end": 977, "ctxt": 0 }, "value": "b11", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 977, "end": 1035, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 979, "end": 1035, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 990, "end": 1003, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 991, "end": 1003, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 993, "end": 1003, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 995, "end": 1001, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 995, "end": 998, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 998, "end": 1001, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1000, "end": 1001, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1000, "end": 1001, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } }, { "type": "Identifier", "span": { "start": 1005, "end": 1026, "ctxt": 0 }, "value": "y", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1006, "end": 1026, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1008, "end": 1026, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1010, "end": 1017, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1010, "end": 1013, "ctxt": 0 }, "value": "foo", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1013, "end": 1016, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1015, "end": 1016, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1015, "end": 1016, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1018, "end": 1024, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1018, "end": 1021, "ctxt": 0 }, "value": "bar", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1021, "end": 1024, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1023, "end": 1024, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1023, "end": 1024, "ctxt": 0 }, "value": "U", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 983, "end": 989, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 984, "end": 985, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 984, "end": 985, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null }, { "type": "TsTypeParameter", "span": { "start": 987, "end": 988, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 987, "end": 988, "ctxt": 0 }, "value": "U", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1028, "end": 1035, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1031, "end": 1035, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1031, "end": 1035, "ctxt": 0 }, "value": "Base", "optional": false }, "typeParams": null } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 1038, "end": 1050, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1038, "end": 1049, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 1038, "end": 1043, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1038, "end": 1039, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1040, "end": 1043, "ctxt": 0 }, "value": "a11", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 1046, "end": 1049, "ctxt": 0 }, "value": "b11", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1051, "end": 1063, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1051, "end": 1062, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1051, "end": 1054, "ctxt": 0 }, "value": "b11", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 1057, "end": 1062, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1057, "end": 1058, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1059, "end": 1062, "ctxt": 0 }, "value": "a11", "optional": false } } } }, { "type": "VariableDeclaration", "span": { "start": 1064, "end": 1107, "ctxt": 0 }, "kind": "var", "declare": false, "declarations": [ { "type": "VariableDeclarator", "span": { "start": 1068, "end": 1106, "ctxt": 0 }, "id": { "type": "Identifier", "span": { "start": 1068, "end": 1071, "ctxt": 0 }, "value": "b16", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1071, "end": 1106, "ctxt": 0 }, "typeAnnotation": { "type": "TsConstructorType", "span": { "start": 1073, "end": 1106, "ctxt": 0 }, "params": [ { "type": "Identifier", "span": { "start": 1081, "end": 1098, "ctxt": 0 }, "value": "x", "optional": false, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1082, "end": 1098, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeLiteral", "span": { "start": 1084, "end": 1098, "ctxt": 0 }, "members": [ { "type": "TsPropertySignature", "span": { "start": 1086, "end": 1091, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1086, "end": 1087, "ctxt": 0 }, "value": "a", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1087, "end": 1090, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1089, "end": 1090, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1089, "end": 1090, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null }, { "type": "TsPropertySignature", "span": { "start": 1092, "end": 1096, "ctxt": 0 }, "readonly": false, "key": { "type": "Identifier", "span": { "start": 1092, "end": 1093, "ctxt": 0 }, "value": "b", "optional": false }, "computed": false, "optional": false, "init": null, "params": [], "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1093, "end": 1096, "ctxt": 0 }, "typeAnnotation": { "type": "TsTypeReference", "span": { "start": 1095, "end": 1096, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1095, "end": 1096, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } }, "typeParams": null } ] } } } ], "typeParams": { "type": "TsTypeParameterDeclaration", "span": { "start": 1077, "end": 1080, "ctxt": 0 }, "parameters": [ { "type": "TsTypeParameter", "span": { "start": 1078, "end": 1079, "ctxt": 0 }, "name": { "type": "Identifier", "span": { "start": 1078, "end": 1079, "ctxt": 0 }, "value": "T", "optional": false }, "in": false, "out": false, "const": false, "constraint": null, "default": null } ] }, "typeAnnotation": { "type": "TsTypeAnnotation", "span": { "start": 1100, "end": 1106, "ctxt": 0 }, "typeAnnotation": { "type": "TsArrayType", "span": { "start": 1103, "end": 1106, "ctxt": 0 }, "elemType": { "type": "TsTypeReference", "span": { "start": 1103, "end": 1104, "ctxt": 0 }, "typeName": { "type": "Identifier", "span": { "start": 1103, "end": 1104, "ctxt": 0 }, "value": "T", "optional": false }, "typeParams": null } } }, "isAbstract": false } } }, "init": null, "definite": false } ] }, { "type": "ExpressionStatement", "span": { "start": 1109, "end": 1121, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1109, "end": 1120, "ctxt": 0 }, "operator": "=", "left": { "type": "MemberExpression", "span": { "start": 1109, "end": 1114, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1109, "end": 1110, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1111, "end": 1114, "ctxt": 0 }, "value": "a16", "optional": false } }, "right": { "type": "Identifier", "span": { "start": 1117, "end": 1120, "ctxt": 0 }, "value": "b16", "optional": false } } }, { "type": "ExpressionStatement", "span": { "start": 1122, "end": 1134, "ctxt": 0 }, "expression": { "type": "AssignmentExpression", "span": { "start": 1122, "end": 1133, "ctxt": 0 }, "operator": "=", "left": { "type": "Identifier", "span": { "start": 1122, "end": 1125, "ctxt": 0 }, "value": "b16", "optional": false, "typeAnnotation": null }, "right": { "type": "MemberExpression", "span": { "start": 1128, "end": 1133, "ctxt": 0 }, "object": { "type": "Identifier", "span": { "start": 1128, "end": 1129, "ctxt": 0 }, "value": "x", "optional": false }, "property": { "type": "Identifier", "span": { "start": 1130, "end": 1133, "ctxt": 0 }, "value": "a16", "optional": false } } } } ], "interpreter": null }