• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "Foo",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 17,
14              "column": 7,
15              "program": "test-class-definition.ts"
16            },
17            "end": {
18              "line": 17,
19              "column": 10,
20              "program": "test-class-definition.ts"
21            }
22          }
23        },
24        "superClass": null,
25        "implements": [],
26        "constructor": {
27          "type": "MethodDefinition",
28          "key": {
29            "type": "Identifier",
30            "name": "constructor",
31            "decorators": [],
32            "loc": {
33              "start": {
34                "line": 17,
35                "column": 12,
36                "program": "test-class-definition.ts"
37              },
38              "end": {
39                "line": 17,
40                "column": 12,
41                "program": "test-class-definition.ts"
42              }
43            }
44          },
45          "kind": "constructor",
46          "static": false,
47          "optional": false,
48          "computed": false,
49          "value": {
50            "type": "FunctionExpression",
51            "function": {
52              "type": "ScriptFunction",
53              "id": null,
54              "generator": false,
55              "async": false,
56              "expression": false,
57              "params": [],
58              "body": {
59                "type": "BlockStatement",
60                "statements": [],
61                "loc": {
62                  "start": {
63                    "line": 17,
64                    "column": 12,
65                    "program": "test-class-definition.ts"
66                  },
67                  "end": {
68                    "line": 17,
69                    "column": 12,
70                    "program": "test-class-definition.ts"
71                  }
72                }
73              },
74              "loc": {
75                "start": {
76                  "line": 17,
77                  "column": 12,
78                  "program": "test-class-definition.ts"
79                },
80                "end": {
81                  "line": 17,
82                  "column": 12,
83                  "program": "test-class-definition.ts"
84                }
85              }
86            },
87            "loc": {
88              "start": {
89                "line": 17,
90                "column": 12,
91                "program": "test-class-definition.ts"
92              },
93              "end": {
94                "line": 17,
95                "column": 12,
96                "program": "test-class-definition.ts"
97              }
98            }
99          },
100          "overloads": [],
101          "decorators": [],
102          "loc": {
103            "start": {
104              "line": 1,
105              "column": 1,
106              "program": null
107            },
108            "end": {
109              "line": 1,
110              "column": 1,
111              "program": null
112            }
113          }
114        },
115        "body": [
116          {
117            "type": "MethodDefinition",
118            "key": {
119              "type": "Identifier",
120              "name": "a",
121              "decorators": [],
122              "loc": {
123                "start": {
124                  "line": 18,
125                  "column": 24,
126                  "program": "test-class-definition.ts"
127                },
128                "end": {
129                  "line": 18,
130                  "column": 25,
131                  "program": "test-class-definition.ts"
132                }
133              }
134            },
135            "kind": "get",
136            "accessibility": "private",
137            "static": true,
138            "optional": false,
139            "computed": false,
140            "value": {
141              "type": "FunctionExpression",
142              "function": {
143                "type": "ScriptFunction",
144                "id": null,
145                "generator": false,
146                "async": false,
147                "expression": false,
148                "params": [],
149                "body": {
150                  "type": "BlockStatement",
151                  "statements": [
152                    {
153                      "type": "ReturnStatement",
154                      "argument": null,
155                      "loc": {
156                        "start": {
157                          "line": 18,
158                          "column": 30,
159                          "program": "test-class-definition.ts"
160                        },
161                        "end": {
162                          "line": 18,
163                          "column": 36,
164                          "program": "test-class-definition.ts"
165                        }
166                      }
167                    }
168                  ],
169                  "loc": {
170                    "start": {
171                      "line": 18,
172                      "column": 28,
173                      "program": "test-class-definition.ts"
174                    },
175                    "end": {
176                      "line": 18,
177                      "column": 38,
178                      "program": "test-class-definition.ts"
179                    }
180                  }
181                },
182                "loc": {
183                  "start": {
184                    "line": 18,
185                    "column": 25,
186                    "program": "test-class-definition.ts"
187                  },
188                  "end": {
189                    "line": 18,
190                    "column": 38,
191                    "program": "test-class-definition.ts"
192                  }
193                }
194              },
195              "loc": {
196                "start": {
197                  "line": 18,
198                  "column": 25,
199                  "program": "test-class-definition.ts"
200                },
201                "end": {
202                  "line": 18,
203                  "column": 38,
204                  "program": "test-class-definition.ts"
205                }
206              }
207            },
208            "overloads": [],
209            "decorators": [],
210            "loc": {
211              "start": {
212                "line": 18,
213                "column": 5,
214                "program": "test-class-definition.ts"
215              },
216              "end": {
217                "line": 18,
218                "column": 38,
219                "program": "test-class-definition.ts"
220              }
221            }
222          },
223          {
224            "type": "MethodDefinition",
225            "key": {
226              "type": "Identifier",
227              "name": "g",
228              "decorators": [],
229              "loc": {
230                "start": {
231                  "line": 19,
232                  "column": 19,
233                  "program": "test-class-definition.ts"
234                },
235                "end": {
236                  "line": 19,
237                  "column": 20,
238                  "program": "test-class-definition.ts"
239                }
240              }
241            },
242            "kind": "method",
243            "accessibility": "public",
244            "static": false,
245            "optional": false,
246            "computed": false,
247            "value": {
248              "type": "FunctionExpression",
249              "function": {
250                "type": "ScriptFunction",
251                "id": null,
252                "generator": true,
253                "async": true,
254                "expression": false,
255                "params": [],
256                "body": {
257                  "type": "BlockStatement",
258                  "statements": [],
259                  "loc": {
260                    "start": {
261                      "line": 19,
262                      "column": 23,
263                      "program": "test-class-definition.ts"
264                    },
265                    "end": {
266                      "line": 19,
267                      "column": 26,
268                      "program": "test-class-definition.ts"
269                    }
270                  }
271                },
272                "loc": {
273                  "start": {
274                    "line": 19,
275                    "column": 20,
276                    "program": "test-class-definition.ts"
277                  },
278                  "end": {
279                    "line": 19,
280                    "column": 26,
281                    "program": "test-class-definition.ts"
282                  }
283                }
284              },
285              "loc": {
286                "start": {
287                  "line": 19,
288                  "column": 20,
289                  "program": "test-class-definition.ts"
290                },
291                "end": {
292                  "line": 19,
293                  "column": 26,
294                  "program": "test-class-definition.ts"
295                }
296              }
297            },
298            "overloads": [],
299            "decorators": [],
300            "loc": {
301              "start": {
302                "line": 19,
303                "column": 5,
304                "program": "test-class-definition.ts"
305              },
306              "end": {
307                "line": 19,
308                "column": 26,
309                "program": "test-class-definition.ts"
310              }
311            }
312          },
313          {
314            "type": "ClassProperty",
315            "key": {
316              "type": "NumberLiteral",
317              "value": 5,
318              "loc": {
319                "start": {
320                  "line": 20,
321                  "column": 30,
322                  "program": "test-class-definition.ts"
323                },
324                "end": {
325                  "line": 20,
326                  "column": 31,
327                  "program": "test-class-definition.ts"
328                }
329              }
330            },
331            "static": true,
332            "readonly": true,
333            "declare": true,
334            "optional": false,
335            "computed": true,
336            "definite": false,
337            "decorators": [],
338            "loc": {
339              "start": {
340                "line": 20,
341                "column": 5,
342                "program": "test-class-definition.ts"
343              },
344              "end": {
345                "line": 20,
346                "column": 31,
347                "program": "test-class-definition.ts"
348              }
349            }
350          },
351          {
352            "type": "ClassProperty",
353            "key": {
354              "type": "StringLiteral",
355              "value": "b",
356              "loc": {
357                "start": {
358                  "line": 21,
359                  "column": 30,
360                  "program": "test-class-definition.ts"
361                },
362                "end": {
363                  "line": 21,
364                  "column": 33,
365                  "program": "test-class-definition.ts"
366                }
367              }
368            },
369            "static": true,
370            "readonly": true,
371            "declare": true,
372            "optional": false,
373            "computed": true,
374            "definite": false,
375            "decorators": [],
376            "loc": {
377              "start": {
378                "line": 21,
379                "column": 5,
380                "program": "test-class-definition.ts"
381              },
382              "end": {
383                "line": 21,
384                "column": 33,
385                "program": "test-class-definition.ts"
386              }
387            }
388          },
389          {
390            "type": "ClassProperty",
391            "key": {
392              "type": "NumberLiteral",
393              "value": 67,
394              "loc": {
395                "start": {
396                  "line": 22,
397                  "column": 29,
398                  "program": "test-class-definition.ts"
399                },
400                "end": {
401                  "line": 22,
402                  "column": 31,
403                  "program": "test-class-definition.ts"
404                }
405              }
406            },
407            "static": true,
408            "readonly": true,
409            "declare": true,
410            "optional": false,
411            "computed": false,
412            "definite": false,
413            "decorators": [],
414            "loc": {
415              "start": {
416                "line": 22,
417                "column": 5,
418                "program": "test-class-definition.ts"
419              },
420              "end": {
421                "line": 22,
422                "column": 31,
423                "program": "test-class-definition.ts"
424              }
425            }
426          },
427          {
428            "type": "ClassProperty",
429            "key": {
430              "type": "Identifier",
431              "name": "j",
432              "decorators": [],
433              "loc": {
434                "start": {
435                  "line": 23,
436                  "column": 29,
437                  "program": "test-class-definition.ts"
438                },
439                "end": {
440                  "line": 23,
441                  "column": 30,
442                  "program": "test-class-definition.ts"
443                }
444              }
445            },
446            "static": true,
447            "readonly": true,
448            "declare": true,
449            "optional": false,
450            "computed": false,
451            "definite": false,
452            "decorators": [],
453            "loc": {
454              "start": {
455                "line": 23,
456                "column": 5,
457                "program": "test-class-definition.ts"
458              },
459              "end": {
460                "line": 23,
461                "column": 30,
462                "program": "test-class-definition.ts"
463              }
464            }
465          },
466          {
467            "type": "ClassProperty",
468            "key": {
469              "type": "Identifier",
470              "name": "private",
471              "decorators": [],
472              "loc": {
473                "start": {
474                  "line": 24,
475                  "column": 5,
476                  "program": "test-class-definition.ts"
477                },
478                "end": {
479                  "line": 24,
480                  "column": 12,
481                  "program": "test-class-definition.ts"
482                }
483              }
484            },
485            "static": false,
486            "readonly": false,
487            "declare": false,
488            "optional": false,
489            "computed": false,
490            "definite": false,
491            "decorators": [],
492            "loc": {
493              "start": {
494                "line": 24,
495                "column": 5,
496                "program": "test-class-definition.ts"
497              },
498              "end": {
499                "line": 24,
500                "column": 12,
501                "program": "test-class-definition.ts"
502              }
503            }
504          },
505          {
506            "type": "MethodDefinition",
507            "key": {
508              "type": "NumberLiteral",
509              "value": 1,
510              "loc": {
511                "start": {
512                  "line": 25,
513                  "column": 17,
514                  "program": "test-class-definition.ts"
515                },
516                "end": {
517                  "line": 25,
518                  "column": 18,
519                  "program": "test-class-definition.ts"
520                }
521              }
522            },
523            "kind": "method",
524            "accessibility": "protected",
525            "static": false,
526            "optional": false,
527            "computed": true,
528            "value": {
529              "type": "FunctionExpression",
530              "function": {
531                "type": "ScriptFunction",
532                "id": null,
533                "generator": true,
534                "async": false,
535                "expression": false,
536                "params": [],
537                "body": {
538                  "type": "BlockStatement",
539                  "statements": [],
540                  "loc": {
541                    "start": {
542                      "line": 25,
543                      "column": 22,
544                      "program": "test-class-definition.ts"
545                    },
546                    "end": {
547                      "line": 25,
548                      "column": 25,
549                      "program": "test-class-definition.ts"
550                    }
551                  }
552                },
553                "loc": {
554                  "start": {
555                    "line": 25,
556                    "column": 19,
557                    "program": "test-class-definition.ts"
558                  },
559                  "end": {
560                    "line": 25,
561                    "column": 25,
562                    "program": "test-class-definition.ts"
563                  }
564                }
565              },
566              "loc": {
567                "start": {
568                  "line": 25,
569                  "column": 19,
570                  "program": "test-class-definition.ts"
571                },
572                "end": {
573                  "line": 25,
574                  "column": 25,
575                  "program": "test-class-definition.ts"
576                }
577              }
578            },
579            "overloads": [],
580            "decorators": [],
581            "loc": {
582              "start": {
583                "line": 25,
584                "column": 5,
585                "program": "test-class-definition.ts"
586              },
587              "end": {
588                "line": 25,
589                "column": 25,
590                "program": "test-class-definition.ts"
591              }
592            }
593          },
594          {
595            "type": "ClassProperty",
596            "key": {
597              "type": "Identifier",
598              "name": "k",
599              "decorators": [],
600              "loc": {
601                "start": {
602                  "line": 26,
603                  "column": 19,
604                  "program": "test-class-definition.ts"
605                },
606                "end": {
607                  "line": 26,
608                  "column": 20,
609                  "program": "test-class-definition.ts"
610                }
611              }
612            },
613            "value": {
614              "type": "StringLiteral",
615              "value": "bar",
616              "loc": {
617                "start": {
618                  "line": 26,
619                  "column": 23,
620                  "program": "test-class-definition.ts"
621                },
622                "end": {
623                  "line": 26,
624                  "column": 28,
625                  "program": "test-class-definition.ts"
626                }
627              }
628            },
629            "accessibility": "public",
630            "static": true,
631            "readonly": false,
632            "declare": false,
633            "optional": false,
634            "computed": false,
635            "definite": false,
636            "decorators": [],
637            "loc": {
638              "start": {
639                "line": 26,
640                "column": 5,
641                "program": "test-class-definition.ts"
642              },
643              "end": {
644                "line": 26,
645                "column": 28,
646                "program": "test-class-definition.ts"
647              }
648            }
649          },
650          {
651            "type": "ClassProperty",
652            "key": {
653              "type": "PrivateIdentifier",
654              "name": "o",
655              "decorators": [],
656              "loc": {
657                "start": {
658                  "line": 27,
659                  "column": 6,
660                  "program": "test-class-definition.ts"
661                },
662                "end": {
663                  "line": 27,
664                  "column": 7,
665                  "program": "test-class-definition.ts"
666                }
667              }
668            },
669            "value": {
670              "type": "NumberLiteral",
671              "value": 4,
672              "loc": {
673                "start": {
674                  "line": 27,
675                  "column": 10,
676                  "program": "test-class-definition.ts"
677                },
678                "end": {
679                  "line": 27,
680                  "column": 11,
681                  "program": "test-class-definition.ts"
682                }
683              }
684            },
685            "static": false,
686            "readonly": false,
687            "declare": false,
688            "optional": false,
689            "computed": false,
690            "definite": false,
691            "decorators": [],
692            "loc": {
693              "start": {
694                "line": 27,
695                "column": 5,
696                "program": "test-class-definition.ts"
697              },
698              "end": {
699                "line": 27,
700                "column": 11,
701                "program": "test-class-definition.ts"
702              }
703            }
704          },
705          {
706            "type": "MethodDefinition",
707            "key": {
708              "type": "Identifier",
709              "name": "l",
710              "decorators": [],
711              "loc": {
712                "start": {
713                  "line": 28,
714                  "column": 9,
715                  "program": "test-class-definition.ts"
716                },
717                "end": {
718                  "line": 28,
719                  "column": 10,
720                  "program": "test-class-definition.ts"
721                }
722              }
723            },
724            "kind": "set",
725            "static": false,
726            "optional": false,
727            "computed": false,
728            "value": {
729              "type": "FunctionExpression",
730              "function": {
731                "type": "ScriptFunction",
732                "id": null,
733                "generator": false,
734                "async": false,
735                "expression": false,
736                "params": [
737                  {
738                    "type": "Identifier",
739                    "name": "b",
740                    "typeAnnotation": {
741                      "type": "TSNumberKeyword",
742                      "loc": {
743                        "start": {
744                          "line": 28,
745                          "column": 14,
746                          "program": "test-class-definition.ts"
747                        },
748                        "end": {
749                          "line": 28,
750                          "column": 20,
751                          "program": "test-class-definition.ts"
752                        }
753                      }
754                    },
755                    "decorators": [],
756                    "loc": {
757                      "start": {
758                        "line": 28,
759                        "column": 11,
760                        "program": "test-class-definition.ts"
761                      },
762                      "end": {
763                        "line": 28,
764                        "column": 12,
765                        "program": "test-class-definition.ts"
766                      }
767                    }
768                  }
769                ],
770                "body": {
771                  "type": "BlockStatement",
772                  "statements": [],
773                  "loc": {
774                    "start": {
775                      "line": 28,
776                      "column": 22,
777                      "program": "test-class-definition.ts"
778                    },
779                    "end": {
780                      "line": 28,
781                      "column": 25,
782                      "program": "test-class-definition.ts"
783                    }
784                  }
785                },
786                "loc": {
787                  "start": {
788                    "line": 28,
789                    "column": 10,
790                    "program": "test-class-definition.ts"
791                  },
792                  "end": {
793                    "line": 28,
794                    "column": 25,
795                    "program": "test-class-definition.ts"
796                  }
797                }
798              },
799              "loc": {
800                "start": {
801                  "line": 28,
802                  "column": 10,
803                  "program": "test-class-definition.ts"
804                },
805                "end": {
806                  "line": 28,
807                  "column": 25,
808                  "program": "test-class-definition.ts"
809                }
810              }
811            },
812            "overloads": [],
813            "decorators": [],
814            "loc": {
815              "start": {
816                "line": 28,
817                "column": 5,
818                "program": "test-class-definition.ts"
819              },
820              "end": {
821                "line": 28,
822                "column": 25,
823                "program": "test-class-definition.ts"
824              }
825            }
826          },
827          {
828            "type": "MethodDefinition",
829            "key": {
830              "type": "Identifier",
831              "name": "l",
832              "decorators": [],
833              "loc": {
834                "start": {
835                  "line": 29,
836                  "column": 16,
837                  "program": "test-class-definition.ts"
838                },
839                "end": {
840                  "line": 29,
841                  "column": 17,
842                  "program": "test-class-definition.ts"
843                }
844              }
845            },
846            "kind": "get",
847            "accessibility": "public",
848            "static": false,
849            "optional": false,
850            "computed": false,
851            "value": {
852              "type": "FunctionExpression",
853              "function": {
854                "type": "ScriptFunction",
855                "id": null,
856                "generator": false,
857                "async": false,
858                "expression": false,
859                "params": [],
860                "body": {
861                  "type": "BlockStatement",
862                  "statements": [
863                    {
864                      "type": "ReturnStatement",
865                      "argument": {
866                        "type": "NumberLiteral",
867                        "value": 2,
868                        "loc": {
869                          "start": {
870                            "line": 29,
871                            "column": 29,
872                            "program": "test-class-definition.ts"
873                          },
874                          "end": {
875                            "line": 29,
876                            "column": 30,
877                            "program": "test-class-definition.ts"
878                          }
879                        }
880                      },
881                      "loc": {
882                        "start": {
883                          "line": 29,
884                          "column": 22,
885                          "program": "test-class-definition.ts"
886                        },
887                        "end": {
888                          "line": 29,
889                          "column": 30,
890                          "program": "test-class-definition.ts"
891                        }
892                      }
893                    }
894                  ],
895                  "loc": {
896                    "start": {
897                      "line": 29,
898                      "column": 20,
899                      "program": "test-class-definition.ts"
900                    },
901                    "end": {
902                      "line": 29,
903                      "column": 32,
904                      "program": "test-class-definition.ts"
905                    }
906                  }
907                },
908                "loc": {
909                  "start": {
910                    "line": 29,
911                    "column": 17,
912                    "program": "test-class-definition.ts"
913                  },
914                  "end": {
915                    "line": 29,
916                    "column": 32,
917                    "program": "test-class-definition.ts"
918                  }
919                }
920              },
921              "loc": {
922                "start": {
923                  "line": 29,
924                  "column": 17,
925                  "program": "test-class-definition.ts"
926                },
927                "end": {
928                  "line": 29,
929                  "column": 32,
930                  "program": "test-class-definition.ts"
931                }
932              }
933            },
934            "overloads": [],
935            "decorators": [],
936            "loc": {
937              "start": {
938                "line": 29,
939                "column": 5,
940                "program": "test-class-definition.ts"
941              },
942              "end": {
943                "line": 29,
944                "column": 32,
945                "program": "test-class-definition.ts"
946              }
947            }
948          },
949          {
950            "type": "MethodDefinition",
951            "key": {
952              "type": "Identifier",
953              "name": "m",
954              "decorators": [],
955              "loc": {
956                "start": {
957                  "line": 30,
958                  "column": 16,
959                  "program": "test-class-definition.ts"
960                },
961                "end": {
962                  "line": 30,
963                  "column": 17,
964                  "program": "test-class-definition.ts"
965                }
966              }
967            },
968            "kind": "get",
969            "accessibility": "public",
970            "static": false,
971            "optional": false,
972            "computed": false,
973            "value": {
974              "type": "FunctionExpression",
975              "function": {
976                "type": "ScriptFunction",
977                "id": null,
978                "generator": false,
979                "async": false,
980                "expression": false,
981                "params": [],
982                "body": {
983                  "type": "BlockStatement",
984                  "statements": [
985                    {
986                      "type": "ReturnStatement",
987                      "argument": {
988                        "type": "NumberLiteral",
989                        "value": 2,
990                        "loc": {
991                          "start": {
992                            "line": 30,
993                            "column": 29,
994                            "program": "test-class-definition.ts"
995                          },
996                          "end": {
997                            "line": 30,
998                            "column": 30,
999                            "program": "test-class-definition.ts"
1000                          }
1001                        }
1002                      },
1003                      "loc": {
1004                        "start": {
1005                          "line": 30,
1006                          "column": 22,
1007                          "program": "test-class-definition.ts"
1008                        },
1009                        "end": {
1010                          "line": 30,
1011                          "column": 30,
1012                          "program": "test-class-definition.ts"
1013                        }
1014                      }
1015                    }
1016                  ],
1017                  "loc": {
1018                    "start": {
1019                      "line": 30,
1020                      "column": 20,
1021                      "program": "test-class-definition.ts"
1022                    },
1023                    "end": {
1024                      "line": 30,
1025                      "column": 32,
1026                      "program": "test-class-definition.ts"
1027                    }
1028                  }
1029                },
1030                "loc": {
1031                  "start": {
1032                    "line": 30,
1033                    "column": 17,
1034                    "program": "test-class-definition.ts"
1035                  },
1036                  "end": {
1037                    "line": 30,
1038                    "column": 32,
1039                    "program": "test-class-definition.ts"
1040                  }
1041                }
1042              },
1043              "loc": {
1044                "start": {
1045                  "line": 30,
1046                  "column": 17,
1047                  "program": "test-class-definition.ts"
1048                },
1049                "end": {
1050                  "line": 30,
1051                  "column": 32,
1052                  "program": "test-class-definition.ts"
1053                }
1054              }
1055            },
1056            "overloads": [],
1057            "decorators": [],
1058            "loc": {
1059              "start": {
1060                "line": 30,
1061                "column": 5,
1062                "program": "test-class-definition.ts"
1063              },
1064              "end": {
1065                "line": 30,
1066                "column": 32,
1067                "program": "test-class-definition.ts"
1068              }
1069            }
1070          },
1071          {
1072            "type": "MethodDefinition",
1073            "key": {
1074              "type": "Identifier",
1075              "name": "m",
1076              "decorators": [],
1077              "loc": {
1078                "start": {
1079                  "line": 31,
1080                  "column": 19,
1081                  "program": "test-class-definition.ts"
1082                },
1083                "end": {
1084                  "line": 31,
1085                  "column": 20,
1086                  "program": "test-class-definition.ts"
1087                }
1088              }
1089            },
1090            "kind": "set",
1091            "accessibility": "protected",
1092            "static": false,
1093            "optional": false,
1094            "computed": false,
1095            "value": {
1096              "type": "FunctionExpression",
1097              "function": {
1098                "type": "ScriptFunction",
1099                "id": null,
1100                "generator": false,
1101                "async": false,
1102                "expression": false,
1103                "params": [
1104                  {
1105                    "type": "Identifier",
1106                    "name": "b",
1107                    "typeAnnotation": {
1108                      "type": "TSNumberKeyword",
1109                      "loc": {
1110                        "start": {
1111                          "line": 31,
1112                          "column": 24,
1113                          "program": "test-class-definition.ts"
1114                        },
1115                        "end": {
1116                          "line": 31,
1117                          "column": 30,
1118                          "program": "test-class-definition.ts"
1119                        }
1120                      }
1121                    },
1122                    "decorators": [],
1123                    "loc": {
1124                      "start": {
1125                        "line": 31,
1126                        "column": 21,
1127                        "program": "test-class-definition.ts"
1128                      },
1129                      "end": {
1130                        "line": 31,
1131                        "column": 22,
1132                        "program": "test-class-definition.ts"
1133                      }
1134                    }
1135                  }
1136                ],
1137                "body": {
1138                  "type": "BlockStatement",
1139                  "statements": [],
1140                  "loc": {
1141                    "start": {
1142                      "line": 31,
1143                      "column": 32,
1144                      "program": "test-class-definition.ts"
1145                    },
1146                    "end": {
1147                      "line": 31,
1148                      "column": 35,
1149                      "program": "test-class-definition.ts"
1150                    }
1151                  }
1152                },
1153                "loc": {
1154                  "start": {
1155                    "line": 31,
1156                    "column": 20,
1157                    "program": "test-class-definition.ts"
1158                  },
1159                  "end": {
1160                    "line": 31,
1161                    "column": 35,
1162                    "program": "test-class-definition.ts"
1163                  }
1164                }
1165              },
1166              "loc": {
1167                "start": {
1168                  "line": 31,
1169                  "column": 20,
1170                  "program": "test-class-definition.ts"
1171                },
1172                "end": {
1173                  "line": 31,
1174                  "column": 35,
1175                  "program": "test-class-definition.ts"
1176                }
1177              }
1178            },
1179            "overloads": [],
1180            "decorators": [],
1181            "loc": {
1182              "start": {
1183                "line": 31,
1184                "column": 5,
1185                "program": "test-class-definition.ts"
1186              },
1187              "end": {
1188                "line": 31,
1189                "column": 35,
1190                "program": "test-class-definition.ts"
1191              }
1192            }
1193          }
1194        ],
1195        "loc": {
1196          "start": {
1197            "line": 17,
1198            "column": 11,
1199            "program": "test-class-definition.ts"
1200          },
1201          "end": {
1202            "line": 34,
1203            "column": 6,
1204            "program": "test-class-definition.ts"
1205          }
1206        }
1207      },
1208      "loc": {
1209        "start": {
1210          "line": 17,
1211          "column": 1,
1212          "program": "test-class-definition.ts"
1213        },
1214        "end": {
1215          "line": 34,
1216          "column": 6,
1217          "program": "test-class-definition.ts"
1218        }
1219      }
1220    },
1221    {
1222      "type": "ClassDeclaration",
1223      "definition": {
1224        "id": {
1225          "type": "Identifier",
1226          "name": "Bar",
1227          "decorators": [],
1228          "loc": {
1229            "start": {
1230              "line": 34,
1231              "column": 7,
1232              "program": "test-class-definition.ts"
1233            },
1234            "end": {
1235              "line": 34,
1236              "column": 10,
1237              "program": "test-class-definition.ts"
1238            }
1239          }
1240        },
1241        "superClass": null,
1242        "implements": [],
1243        "constructor": {
1244          "type": "MethodDefinition",
1245          "key": {
1246            "type": "Identifier",
1247            "name": "constructor",
1248            "decorators": [],
1249            "loc": {
1250              "start": {
1251                "line": 34,
1252                "column": 12,
1253                "program": "test-class-definition.ts"
1254              },
1255              "end": {
1256                "line": 34,
1257                "column": 12,
1258                "program": "test-class-definition.ts"
1259              }
1260            }
1261          },
1262          "kind": "constructor",
1263          "static": false,
1264          "optional": false,
1265          "computed": false,
1266          "value": {
1267            "type": "FunctionExpression",
1268            "function": {
1269              "type": "ScriptFunction",
1270              "id": null,
1271              "generator": false,
1272              "async": false,
1273              "expression": false,
1274              "params": [],
1275              "body": {
1276                "type": "BlockStatement",
1277                "statements": [],
1278                "loc": {
1279                  "start": {
1280                    "line": 34,
1281                    "column": 12,
1282                    "program": "test-class-definition.ts"
1283                  },
1284                  "end": {
1285                    "line": 34,
1286                    "column": 12,
1287                    "program": "test-class-definition.ts"
1288                  }
1289                }
1290              },
1291              "loc": {
1292                "start": {
1293                  "line": 34,
1294                  "column": 12,
1295                  "program": "test-class-definition.ts"
1296                },
1297                "end": {
1298                  "line": 34,
1299                  "column": 12,
1300                  "program": "test-class-definition.ts"
1301                }
1302              }
1303            },
1304            "loc": {
1305              "start": {
1306                "line": 34,
1307                "column": 12,
1308                "program": "test-class-definition.ts"
1309              },
1310              "end": {
1311                "line": 34,
1312                "column": 12,
1313                "program": "test-class-definition.ts"
1314              }
1315            }
1316          },
1317          "overloads": [],
1318          "decorators": [],
1319          "loc": {
1320            "start": {
1321              "line": 1,
1322              "column": 1,
1323              "program": null
1324            },
1325            "end": {
1326              "line": 1,
1327              "column": 1,
1328              "program": null
1329            }
1330          }
1331        },
1332        "body": [
1333          {
1334            "type": "ClassProperty",
1335            "key": {
1336              "type": "Identifier",
1337              "name": "c",
1338              "decorators": [],
1339              "loc": {
1340                "start": {
1341                  "line": 34,
1342                  "column": 13,
1343                  "program": "test-class-definition.ts"
1344                },
1345                "end": {
1346                  "line": 34,
1347                  "column": 14,
1348                  "program": "test-class-definition.ts"
1349                }
1350              }
1351            },
1352            "static": false,
1353            "readonly": false,
1354            "declare": false,
1355            "optional": false,
1356            "computed": false,
1357            "definite": false,
1358            "decorators": [],
1359            "loc": {
1360              "start": {
1361                "line": 34,
1362                "column": 13,
1363                "program": "test-class-definition.ts"
1364              },
1365              "end": {
1366                "line": 34,
1367                "column": 14,
1368                "program": "test-class-definition.ts"
1369              }
1370            }
1371          },
1372          {
1373            "type": "MethodDefinition",
1374            "key": {
1375              "type": "Identifier",
1376              "name": "d",
1377              "decorators": [],
1378              "loc": {
1379                "start": {
1380                  "line": 34,
1381                  "column": 16,
1382                  "program": "test-class-definition.ts"
1383                },
1384                "end": {
1385                  "line": 34,
1386                  "column": 17,
1387                  "program": "test-class-definition.ts"
1388                }
1389              }
1390            },
1391            "kind": "method",
1392            "static": false,
1393            "optional": false,
1394            "computed": false,
1395            "value": {
1396              "type": "FunctionExpression",
1397              "function": {
1398                "type": "ScriptFunction",
1399                "id": null,
1400                "generator": false,
1401                "async": false,
1402                "expression": false,
1403                "params": [],
1404                "body": {
1405                  "type": "BlockStatement",
1406                  "statements": [],
1407                  "loc": {
1408                    "start": {
1409                      "line": 34,
1410                      "column": 20,
1411                      "program": "test-class-definition.ts"
1412                    },
1413                    "end": {
1414                      "line": 34,
1415                      "column": 23,
1416                      "program": "test-class-definition.ts"
1417                    }
1418                  }
1419                },
1420                "loc": {
1421                  "start": {
1422                    "line": 34,
1423                    "column": 17,
1424                    "program": "test-class-definition.ts"
1425                  },
1426                  "end": {
1427                    "line": 34,
1428                    "column": 23,
1429                    "program": "test-class-definition.ts"
1430                  }
1431                }
1432              },
1433              "loc": {
1434                "start": {
1435                  "line": 34,
1436                  "column": 17,
1437                  "program": "test-class-definition.ts"
1438                },
1439                "end": {
1440                  "line": 34,
1441                  "column": 23,
1442                  "program": "test-class-definition.ts"
1443                }
1444              }
1445            },
1446            "overloads": [],
1447            "decorators": [],
1448            "loc": {
1449              "start": {
1450                "line": 34,
1451                "column": 16,
1452                "program": "test-class-definition.ts"
1453              },
1454              "end": {
1455                "line": 34,
1456                "column": 23,
1457                "program": "test-class-definition.ts"
1458              }
1459            }
1460          },
1461          {
1462            "type": "ClassProperty",
1463            "key": {
1464              "type": "Identifier",
1465              "name": "e",
1466              "decorators": [],
1467              "loc": {
1468                "start": {
1469                  "line": 34,
1470                  "column": 24,
1471                  "program": "test-class-definition.ts"
1472                },
1473                "end": {
1474                  "line": 34,
1475                  "column": 25,
1476                  "program": "test-class-definition.ts"
1477                }
1478              }
1479            },
1480            "static": false,
1481            "readonly": false,
1482            "declare": false,
1483            "optional": false,
1484            "computed": false,
1485            "definite": false,
1486            "decorators": [],
1487            "loc": {
1488              "start": {
1489                "line": 34,
1490                "column": 24,
1491                "program": "test-class-definition.ts"
1492              },
1493              "end": {
1494                "line": 34,
1495                "column": 25,
1496                "program": "test-class-definition.ts"
1497              }
1498            }
1499          },
1500          {
1501            "type": "ClassProperty",
1502            "key": {
1503              "type": "Identifier",
1504              "name": "let",
1505              "decorators": [],
1506              "loc": {
1507                "start": {
1508                  "line": 34,
1509                  "column": 27,
1510                  "program": "test-class-definition.ts"
1511                },
1512                "end": {
1513                  "line": 34,
1514                  "column": 30,
1515                  "program": "test-class-definition.ts"
1516                }
1517              }
1518            },
1519            "static": false,
1520            "readonly": false,
1521            "declare": false,
1522            "optional": false,
1523            "computed": false,
1524            "definite": false,
1525            "decorators": [],
1526            "loc": {
1527              "start": {
1528                "line": 34,
1529                "column": 27,
1530                "program": "test-class-definition.ts"
1531              },
1532              "end": {
1533                "line": 34,
1534                "column": 30,
1535                "program": "test-class-definition.ts"
1536              }
1537            }
1538          },
1539          {
1540            "type": "ClassProperty",
1541            "key": {
1542              "type": "Identifier",
1543              "name": "var",
1544              "decorators": [],
1545              "loc": {
1546                "start": {
1547                  "line": 34,
1548                  "column": 32,
1549                  "program": "test-class-definition.ts"
1550                },
1551                "end": {
1552                  "line": 34,
1553                  "column": 35,
1554                  "program": "test-class-definition.ts"
1555                }
1556              }
1557            },
1558            "static": false,
1559            "readonly": false,
1560            "declare": false,
1561            "optional": false,
1562            "computed": false,
1563            "definite": false,
1564            "decorators": [],
1565            "loc": {
1566              "start": {
1567                "line": 34,
1568                "column": 32,
1569                "program": "test-class-definition.ts"
1570              },
1571              "end": {
1572                "line": 34,
1573                "column": 35,
1574                "program": "test-class-definition.ts"
1575              }
1576            }
1577          },
1578          {
1579            "type": "ClassProperty",
1580            "key": {
1581              "type": "Identifier",
1582              "name": "const",
1583              "decorators": [],
1584              "loc": {
1585                "start": {
1586                  "line": 34,
1587                  "column": 37,
1588                  "program": "test-class-definition.ts"
1589                },
1590                "end": {
1591                  "line": 34,
1592                  "column": 42,
1593                  "program": "test-class-definition.ts"
1594                }
1595              }
1596            },
1597            "static": false,
1598            "readonly": false,
1599            "declare": false,
1600            "optional": false,
1601            "computed": false,
1602            "definite": false,
1603            "decorators": [],
1604            "loc": {
1605              "start": {
1606                "line": 34,
1607                "column": 37,
1608                "program": "test-class-definition.ts"
1609              },
1610              "end": {
1611                "line": 34,
1612                "column": 42,
1613                "program": "test-class-definition.ts"
1614              }
1615            }
1616          },
1617          {
1618            "type": "ClassProperty",
1619            "key": {
1620              "type": "Identifier",
1621              "name": "function",
1622              "decorators": [],
1623              "loc": {
1624                "start": {
1625                  "line": 34,
1626                  "column": 44,
1627                  "program": "test-class-definition.ts"
1628                },
1629                "end": {
1630                  "line": 34,
1631                  "column": 52,
1632                  "program": "test-class-definition.ts"
1633                }
1634              }
1635            },
1636            "static": false,
1637            "readonly": false,
1638            "declare": false,
1639            "optional": false,
1640            "computed": false,
1641            "definite": false,
1642            "decorators": [],
1643            "loc": {
1644              "start": {
1645                "line": 34,
1646                "column": 44,
1647                "program": "test-class-definition.ts"
1648              },
1649              "end": {
1650                "line": 34,
1651                "column": 52,
1652                "program": "test-class-definition.ts"
1653              }
1654            }
1655          },
1656          {
1657            "type": "ClassProperty",
1658            "key": {
1659              "type": "Identifier",
1660              "name": "f",
1661              "decorators": [],
1662              "loc": {
1663                "start": {
1664                  "line": 34,
1665                  "column": 54,
1666                  "program": "test-class-definition.ts"
1667                },
1668                "end": {
1669                  "line": 34,
1670                  "column": 55,
1671                  "program": "test-class-definition.ts"
1672                }
1673              }
1674            },
1675            "static": false,
1676            "readonly": false,
1677            "declare": false,
1678            "optional": false,
1679            "computed": false,
1680            "typeAnnotation": {
1681              "type": "TSNumberKeyword",
1682              "loc": {
1683                "start": {
1684                  "line": 34,
1685                  "column": 58,
1686                  "program": "test-class-definition.ts"
1687                },
1688                "end": {
1689                  "line": 34,
1690                  "column": 64,
1691                  "program": "test-class-definition.ts"
1692                }
1693              }
1694            },
1695            "definite": true,
1696            "decorators": [],
1697            "loc": {
1698              "start": {
1699                "line": 34,
1700                "column": 54,
1701                "program": "test-class-definition.ts"
1702              },
1703              "end": {
1704                "line": 34,
1705                "column": 55,
1706                "program": "test-class-definition.ts"
1707              }
1708            }
1709          }
1710        ],
1711        "loc": {
1712          "start": {
1713            "line": 34,
1714            "column": 11,
1715            "program": "test-class-definition.ts"
1716          },
1717          "end": {
1718            "line": 36,
1719            "column": 6,
1720            "program": "test-class-definition.ts"
1721          }
1722        }
1723      },
1724      "loc": {
1725        "start": {
1726          "line": 34,
1727          "column": 1,
1728          "program": "test-class-definition.ts"
1729        },
1730        "end": {
1731          "line": 36,
1732          "column": 6,
1733          "program": "test-class-definition.ts"
1734        }
1735      }
1736    },
1737    {
1738      "type": "ClassDeclaration",
1739      "definition": {
1740        "id": {
1741          "type": "Identifier",
1742          "name": "Baz",
1743          "decorators": [],
1744          "loc": {
1745            "start": {
1746              "line": 36,
1747              "column": 7,
1748              "program": "test-class-definition.ts"
1749            },
1750            "end": {
1751              "line": 36,
1752              "column": 10,
1753              "program": "test-class-definition.ts"
1754            }
1755          }
1756        },
1757        "superClass": null,
1758        "implements": [],
1759        "constructor": {
1760          "type": "MethodDefinition",
1761          "key": {
1762            "type": "Identifier",
1763            "name": "constructor",
1764            "decorators": [],
1765            "loc": {
1766              "start": {
1767                "line": 38,
1768                "column": 5,
1769                "program": "test-class-definition.ts"
1770              },
1771              "end": {
1772                "line": 38,
1773                "column": 16,
1774                "program": "test-class-definition.ts"
1775              }
1776            }
1777          },
1778          "kind": "constructor",
1779          "static": false,
1780          "optional": false,
1781          "computed": false,
1782          "value": {
1783            "type": "FunctionExpression",
1784            "function": {
1785              "type": "ScriptFunction",
1786              "id": null,
1787              "generator": false,
1788              "async": false,
1789              "expression": false,
1790              "params": [
1791                {
1792                  "type": "Identifier",
1793                  "name": "name",
1794                  "typeAnnotation": {
1795                    "type": "TSStringKeyword",
1796                    "loc": {
1797                      "start": {
1798                        "line": 38,
1799                        "column": 23,
1800                        "program": "test-class-definition.ts"
1801                      },
1802                      "end": {
1803                        "line": 38,
1804                        "column": 29,
1805                        "program": "test-class-definition.ts"
1806                      }
1807                    }
1808                  },
1809                  "decorators": [],
1810                  "loc": {
1811                    "start": {
1812                      "line": 38,
1813                      "column": 17,
1814                      "program": "test-class-definition.ts"
1815                    },
1816                    "end": {
1817                      "line": 38,
1818                      "column": 21,
1819                      "program": "test-class-definition.ts"
1820                    }
1821                  }
1822                }
1823              ],
1824              "body": {
1825                "type": "BlockStatement",
1826                "statements": [
1827                  {
1828                    "type": "ExpressionStatement",
1829                    "expression": {
1830                      "type": "AssignmentExpression",
1831                      "operator": "=",
1832                      "left": {
1833                        "type": "MemberExpression",
1834                        "object": {
1835                          "type": "ThisExpression",
1836                          "loc": {
1837                            "start": {
1838                              "line": 39,
1839                              "column": 9,
1840                              "program": "test-class-definition.ts"
1841                            },
1842                            "end": {
1843                              "line": 39,
1844                              "column": 13,
1845                              "program": "test-class-definition.ts"
1846                            }
1847                          }
1848                        },
1849                        "property": {
1850                          "type": "PrivateIdentifier",
1851                          "name": "name",
1852                          "decorators": [],
1853                          "loc": {
1854                            "start": {
1855                              "line": 39,
1856                              "column": 14,
1857                              "program": "test-class-definition.ts"
1858                            },
1859                            "end": {
1860                              "line": 39,
1861                              "column": 19,
1862                              "program": "test-class-definition.ts"
1863                            }
1864                          }
1865                        },
1866                        "computed": false,
1867                        "optional": false,
1868                        "loc": {
1869                          "start": {
1870                            "line": 39,
1871                            "column": 9,
1872                            "program": "test-class-definition.ts"
1873                          },
1874                          "end": {
1875                            "line": 39,
1876                            "column": 19,
1877                            "program": "test-class-definition.ts"
1878                          }
1879                        }
1880                      },
1881                      "right": {
1882                        "type": "Identifier",
1883                        "name": "name",
1884                        "decorators": [],
1885                        "loc": {
1886                          "start": {
1887                            "line": 39,
1888                            "column": 22,
1889                            "program": "test-class-definition.ts"
1890                          },
1891                          "end": {
1892                            "line": 39,
1893                            "column": 26,
1894                            "program": "test-class-definition.ts"
1895                          }
1896                        }
1897                      },
1898                      "loc": {
1899                        "start": {
1900                          "line": 39,
1901                          "column": 9,
1902                          "program": "test-class-definition.ts"
1903                        },
1904                        "end": {
1905                          "line": 39,
1906                          "column": 26,
1907                          "program": "test-class-definition.ts"
1908                        }
1909                      }
1910                    },
1911                    "loc": {
1912                      "start": {
1913                        "line": 39,
1914                        "column": 9,
1915                        "program": "test-class-definition.ts"
1916                      },
1917                      "end": {
1918                        "line": 39,
1919                        "column": 27,
1920                        "program": "test-class-definition.ts"
1921                      }
1922                    }
1923                  }
1924                ],
1925                "loc": {
1926                  "start": {
1927                    "line": 38,
1928                    "column": 31,
1929                    "program": "test-class-definition.ts"
1930                  },
1931                  "end": {
1932                    "line": 40,
1933                    "column": 6,
1934                    "program": "test-class-definition.ts"
1935                  }
1936                }
1937              },
1938              "loc": {
1939                "start": {
1940                  "line": 38,
1941                  "column": 16,
1942                  "program": "test-class-definition.ts"
1943                },
1944                "end": {
1945                  "line": 40,
1946                  "column": 6,
1947                  "program": "test-class-definition.ts"
1948                }
1949              }
1950            },
1951            "loc": {
1952              "start": {
1953                "line": 38,
1954                "column": 16,
1955                "program": "test-class-definition.ts"
1956              },
1957              "end": {
1958                "line": 40,
1959                "column": 6,
1960                "program": "test-class-definition.ts"
1961              }
1962            }
1963          },
1964          "overloads": [],
1965          "decorators": [],
1966          "loc": {
1967            "start": {
1968              "line": 38,
1969              "column": 5,
1970              "program": "test-class-definition.ts"
1971            },
1972            "end": {
1973              "line": 40,
1974              "column": 6,
1975              "program": "test-class-definition.ts"
1976            }
1977          }
1978        },
1979        "body": [
1980          {
1981            "type": "ClassProperty",
1982            "key": {
1983              "type": "PrivateIdentifier",
1984              "name": "name",
1985              "decorators": [],
1986              "loc": {
1987                "start": {
1988                  "line": 37,
1989                  "column": 6,
1990                  "program": "test-class-definition.ts"
1991                },
1992                "end": {
1993                  "line": 37,
1994                  "column": 10,
1995                  "program": "test-class-definition.ts"
1996                }
1997              }
1998            },
1999            "static": false,
2000            "readonly": false,
2001            "declare": false,
2002            "optional": false,
2003            "computed": false,
2004            "typeAnnotation": {
2005              "type": "TSStringKeyword",
2006              "loc": {
2007                "start": {
2008                  "line": 37,
2009                  "column": 12,
2010                  "program": "test-class-definition.ts"
2011                },
2012                "end": {
2013                  "line": 37,
2014                  "column": 18,
2015                  "program": "test-class-definition.ts"
2016                }
2017              }
2018            },
2019            "definite": false,
2020            "decorators": [],
2021            "loc": {
2022              "start": {
2023                "line": 37,
2024                "column": 5,
2025                "program": "test-class-definition.ts"
2026              },
2027              "end": {
2028                "line": 37,
2029                "column": 10,
2030                "program": "test-class-definition.ts"
2031              }
2032            }
2033          },
2034          {
2035            "type": "MethodDefinition",
2036            "key": {
2037              "type": "Identifier",
2038              "name": "bar",
2039              "decorators": [],
2040              "loc": {
2041                "start": {
2042                  "line": 41,
2043                  "column": 5,
2044                  "program": "test-class-definition.ts"
2045                },
2046                "end": {
2047                  "line": 41,
2048                  "column": 8,
2049                  "program": "test-class-definition.ts"
2050                }
2051              }
2052            },
2053            "kind": "method",
2054            "static": false,
2055            "optional": false,
2056            "computed": false,
2057            "value": {
2058              "type": "FunctionExpression",
2059              "function": {
2060                "type": "ScriptFunction",
2061                "id": null,
2062                "generator": false,
2063                "async": false,
2064                "expression": false,
2065                "params": [],
2066                "body": {
2067                  "type": "BlockStatement",
2068                  "statements": [
2069                    {
2070                      "type": "ReturnStatement",
2071                      "argument": {
2072                        "type": "MemberExpression",
2073                        "object": {
2074                          "type": "ThisExpression",
2075                          "loc": {
2076                            "start": {
2077                              "line": 41,
2078                              "column": 20,
2079                              "program": "test-class-definition.ts"
2080                            },
2081                            "end": {
2082                              "line": 41,
2083                              "column": 24,
2084                              "program": "test-class-definition.ts"
2085                            }
2086                          }
2087                        },
2088                        "property": {
2089                          "type": "PrivateIdentifier",
2090                          "name": "name",
2091                          "decorators": [],
2092                          "loc": {
2093                            "start": {
2094                              "line": 41,
2095                              "column": 25,
2096                              "program": "test-class-definition.ts"
2097                            },
2098                            "end": {
2099                              "line": 41,
2100                              "column": 30,
2101                              "program": "test-class-definition.ts"
2102                            }
2103                          }
2104                        },
2105                        "computed": false,
2106                        "optional": false,
2107                        "loc": {
2108                          "start": {
2109                            "line": 41,
2110                            "column": 20,
2111                            "program": "test-class-definition.ts"
2112                          },
2113                          "end": {
2114                            "line": 41,
2115                            "column": 30,
2116                            "program": "test-class-definition.ts"
2117                          }
2118                        }
2119                      },
2120                      "loc": {
2121                        "start": {
2122                          "line": 41,
2123                          "column": 13,
2124                          "program": "test-class-definition.ts"
2125                        },
2126                        "end": {
2127                          "line": 41,
2128                          "column": 30,
2129                          "program": "test-class-definition.ts"
2130                        }
2131                      }
2132                    }
2133                  ],
2134                  "loc": {
2135                    "start": {
2136                      "line": 41,
2137                      "column": 11,
2138                      "program": "test-class-definition.ts"
2139                    },
2140                    "end": {
2141                      "line": 41,
2142                      "column": 32,
2143                      "program": "test-class-definition.ts"
2144                    }
2145                  }
2146                },
2147                "loc": {
2148                  "start": {
2149                    "line": 41,
2150                    "column": 8,
2151                    "program": "test-class-definition.ts"
2152                  },
2153                  "end": {
2154                    "line": 41,
2155                    "column": 32,
2156                    "program": "test-class-definition.ts"
2157                  }
2158                }
2159              },
2160              "loc": {
2161                "start": {
2162                  "line": 41,
2163                  "column": 8,
2164                  "program": "test-class-definition.ts"
2165                },
2166                "end": {
2167                  "line": 41,
2168                  "column": 32,
2169                  "program": "test-class-definition.ts"
2170                }
2171              }
2172            },
2173            "overloads": [],
2174            "decorators": [],
2175            "loc": {
2176              "start": {
2177                "line": 41,
2178                "column": 5,
2179                "program": "test-class-definition.ts"
2180              },
2181              "end": {
2182                "line": 41,
2183                "column": 32,
2184                "program": "test-class-definition.ts"
2185              }
2186            }
2187          }
2188        ],
2189        "loc": {
2190          "start": {
2191            "line": 36,
2192            "column": 11,
2193            "program": "test-class-definition.ts"
2194          },
2195          "end": {
2196            "line": 44,
2197            "column": 9,
2198            "program": "test-class-definition.ts"
2199          }
2200        }
2201      },
2202      "loc": {
2203        "start": {
2204          "line": 36,
2205          "column": 1,
2206          "program": "test-class-definition.ts"
2207        },
2208        "end": {
2209          "line": 44,
2210          "column": 9,
2211          "program": "test-class-definition.ts"
2212        }
2213      }
2214    },
2215    {
2216      "type": "ClassDeclaration",
2217      "definition": {
2218        "id": {
2219          "type": "Identifier",
2220          "name": "Inga",
2221          "decorators": [],
2222          "loc": {
2223            "start": {
2224              "line": 44,
2225              "column": 16,
2226              "program": "test-class-definition.ts"
2227            },
2228            "end": {
2229              "line": 44,
2230              "column": 20,
2231              "program": "test-class-definition.ts"
2232            }
2233          }
2234        },
2235        "superClass": null,
2236        "implements": [],
2237        "constructor": {
2238          "type": "MethodDefinition",
2239          "key": {
2240            "type": "Identifier",
2241            "name": "constructor",
2242            "decorators": [],
2243            "loc": {
2244              "start": {
2245                "line": 44,
2246                "column": 22,
2247                "program": "test-class-definition.ts"
2248              },
2249              "end": {
2250                "line": 44,
2251                "column": 22,
2252                "program": "test-class-definition.ts"
2253              }
2254            }
2255          },
2256          "kind": "constructor",
2257          "static": false,
2258          "optional": false,
2259          "computed": false,
2260          "value": {
2261            "type": "FunctionExpression",
2262            "function": {
2263              "type": "ScriptFunction",
2264              "id": null,
2265              "generator": false,
2266              "async": false,
2267              "expression": false,
2268              "params": [],
2269              "body": {
2270                "type": "BlockStatement",
2271                "statements": [],
2272                "loc": {
2273                  "start": {
2274                    "line": 44,
2275                    "column": 22,
2276                    "program": "test-class-definition.ts"
2277                  },
2278                  "end": {
2279                    "line": 44,
2280                    "column": 22,
2281                    "program": "test-class-definition.ts"
2282                  }
2283                }
2284              },
2285              "loc": {
2286                "start": {
2287                  "line": 44,
2288                  "column": 22,
2289                  "program": "test-class-definition.ts"
2290                },
2291                "end": {
2292                  "line": 44,
2293                  "column": 22,
2294                  "program": "test-class-definition.ts"
2295                }
2296              }
2297            },
2298            "loc": {
2299              "start": {
2300                "line": 44,
2301                "column": 22,
2302                "program": "test-class-definition.ts"
2303              },
2304              "end": {
2305                "line": 44,
2306                "column": 22,
2307                "program": "test-class-definition.ts"
2308              }
2309            }
2310          },
2311          "overloads": [],
2312          "decorators": [],
2313          "loc": {
2314            "start": {
2315              "line": 1,
2316              "column": 1,
2317              "program": null
2318            },
2319            "end": {
2320              "line": 1,
2321              "column": 1,
2322              "program": null
2323            }
2324          }
2325        },
2326        "body": [
2327          {
2328            "type": "MethodDefinition",
2329            "key": {
2330              "type": "Identifier",
2331              "name": "a",
2332              "decorators": [],
2333              "loc": {
2334                "start": {
2335                  "line": 45,
2336                  "column": 14,
2337                  "program": "test-class-definition.ts"
2338                },
2339                "end": {
2340                  "line": 45,
2341                  "column": 15,
2342                  "program": "test-class-definition.ts"
2343                }
2344              }
2345            },
2346            "kind": "method",
2347            "static": false,
2348            "optional": false,
2349            "computed": false,
2350            "value": {
2351              "type": "FunctionExpression",
2352              "function": {
2353                "type": "ScriptFunction",
2354                "id": null,
2355                "generator": false,
2356                "async": false,
2357                "expression": false,
2358                "params": [],
2359                "loc": {
2360                  "start": {
2361                    "line": 45,
2362                    "column": 15,
2363                    "program": "test-class-definition.ts"
2364                  },
2365                  "end": {
2366                    "line": 45,
2367                    "column": 18,
2368                    "program": "test-class-definition.ts"
2369                  }
2370                }
2371              },
2372              "loc": {
2373                "start": {
2374                  "line": 45,
2375                  "column": 15,
2376                  "program": "test-class-definition.ts"
2377                },
2378                "end": {
2379                  "line": 45,
2380                  "column": 18,
2381                  "program": "test-class-definition.ts"
2382                }
2383              }
2384            },
2385            "overloads": [],
2386            "decorators": [],
2387            "loc": {
2388              "start": {
2389                "line": 45,
2390                "column": 5,
2391                "program": "test-class-definition.ts"
2392              },
2393              "end": {
2394                "line": 45,
2395                "column": 18,
2396                "program": "test-class-definition.ts"
2397              }
2398            }
2399          },
2400          {
2401            "type": "MethodDefinition",
2402            "key": {
2403              "type": "Identifier",
2404              "name": "aa",
2405              "decorators": [],
2406              "loc": {
2407                "start": {
2408                  "line": 46,
2409                  "column": 5,
2410                  "program": "test-class-definition.ts"
2411                },
2412                "end": {
2413                  "line": 46,
2414                  "column": 7,
2415                  "program": "test-class-definition.ts"
2416                }
2417              }
2418            },
2419            "kind": "method",
2420            "static": false,
2421            "optional": false,
2422            "computed": false,
2423            "value": {
2424              "type": "FunctionExpression",
2425              "function": {
2426                "type": "ScriptFunction",
2427                "id": null,
2428                "generator": false,
2429                "async": false,
2430                "expression": false,
2431                "params": [],
2432                "body": {
2433                  "type": "BlockStatement",
2434                  "statements": [],
2435                  "loc": {
2436                    "start": {
2437                      "line": 46,
2438                      "column": 10,
2439                      "program": "test-class-definition.ts"
2440                    },
2441                    "end": {
2442                      "line": 46,
2443                      "column": 13,
2444                      "program": "test-class-definition.ts"
2445                    }
2446                  }
2447                },
2448                "loc": {
2449                  "start": {
2450                    "line": 46,
2451                    "column": 7,
2452                    "program": "test-class-definition.ts"
2453                  },
2454                  "end": {
2455                    "line": 46,
2456                    "column": 13,
2457                    "program": "test-class-definition.ts"
2458                  }
2459                }
2460              },
2461              "loc": {
2462                "start": {
2463                  "line": 46,
2464                  "column": 7,
2465                  "program": "test-class-definition.ts"
2466                },
2467                "end": {
2468                  "line": 46,
2469                  "column": 13,
2470                  "program": "test-class-definition.ts"
2471                }
2472              }
2473            },
2474            "overloads": [],
2475            "decorators": [],
2476            "loc": {
2477              "start": {
2478                "line": 46,
2479                "column": 5,
2480                "program": "test-class-definition.ts"
2481              },
2482              "end": {
2483                "line": 46,
2484                "column": 13,
2485                "program": "test-class-definition.ts"
2486              }
2487            }
2488          }
2489        ],
2490        "loc": {
2491          "start": {
2492            "line": 44,
2493            "column": 21,
2494            "program": "test-class-definition.ts"
2495          },
2496          "end": {
2497            "line": 48,
2498            "column": 1,
2499            "program": "test-class-definition.ts"
2500          }
2501        }
2502      },
2503      "loc": {
2504        "start": {
2505          "line": 44,
2506          "column": 10,
2507          "program": "test-class-definition.ts"
2508        },
2509        "end": {
2510          "line": 48,
2511          "column": 1,
2512          "program": "test-class-definition.ts"
2513        }
2514      }
2515    }
2516  ],
2517  "loc": {
2518    "start": {
2519      "line": 1,
2520      "column": 1,
2521      "program": "test-class-definition.ts"
2522    },
2523    "end": {
2524      "line": 48,
2525      "column": 1,
2526      "program": "test-class-definition.ts"
2527    }
2528  }
2529}
2530