1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "FunctionDeclaration",
6      "function": {
7        "type": "ScriptFunction",
8        "id": {
9          "type": "Identifier",
10          "name": "A",
11          "loc": {
12            "start": {
13              "line": 17,
14              "column": 10
15            },
16            "end": {
17              "line": 17,
18              "column": 11
19            }
20          }
21        },
22        "generator": false,
23        "async": false,
24        "expression": false,
25        "params": [
26          {
27            "type": "Identifier",
28            "name": "value",
29            "typeAnnotation": {
30              "type": "TSTypeReference",
31              "typeName": {
32                "type": "Identifier",
33                "name": "T",
34                "loc": {
35                  "start": {
36                    "line": 17,
37                    "column": 22
38                  },
39                  "end": {
40                    "line": 17,
41                    "column": 23
42                  }
43                }
44              },
45              "loc": {
46                "start": {
47                  "line": 17,
48                  "column": 22
49                },
50                "end": {
51                  "line": 17,
52                  "column": 23
53                }
54              }
55            },
56            "loc": {
57              "start": {
58                "line": 17,
59                "column": 15
60              },
61              "end": {
62                "line": 17,
63                "column": 20
64              }
65            }
66          }
67        ],
68        "typeParameters": {
69          "type": "TSTypeParameterDeclaration",
70          "params": [
71            {
72              "type": "TSTypeParameter",
73              "name": {
74                "type": "Identifier",
75                "name": "T",
76                "loc": {
77                  "start": {
78                    "line": 17,
79                    "column": 12
80                  },
81                  "end": {
82                    "line": 17,
83                    "column": 13
84                  }
85                }
86              },
87              "in": false,
88              "out": false,
89              "loc": {
90                "start": {
91                  "line": 17,
92                  "column": 12
93                },
94                "end": {
95                  "line": 17,
96                  "column": 14
97                }
98              }
99            }
100          ],
101          "loc": {
102            "start": {
103              "line": 17,
104              "column": 11
105            },
106            "end": {
107              "line": 17,
108              "column": 14
109            }
110          }
111        },
112        "body": {
113          "type": "BlockStatement",
114          "statements": [
115            {
116              "type": "ExpressionStatement",
117              "expression": {
118                "type": "CallExpression",
119                "callee": {
120                  "type": "Identifier",
121                  "name": "print",
122                  "loc": {
123                    "start": {
124                      "line": 18,
125                      "column": 5
126                    },
127                    "end": {
128                      "line": 18,
129                      "column": 10
130                    }
131                  }
132                },
133                "arguments": [
134                  {
135                    "type": "Identifier",
136                    "name": "value",
137                    "loc": {
138                      "start": {
139                        "line": 18,
140                        "column": 11
141                      },
142                      "end": {
143                        "line": 18,
144                        "column": 16
145                      }
146                    }
147                  }
148                ],
149                "optional": false,
150                "loc": {
151                  "start": {
152                    "line": 18,
153                    "column": 5
154                  },
155                  "end": {
156                    "line": 18,
157                    "column": 17
158                  }
159                }
160              },
161              "loc": {
162                "start": {
163                  "line": 18,
164                  "column": 5
165                },
166                "end": {
167                  "line": 18,
168                  "column": 17
169                }
170              }
171            }
172          ],
173          "loc": {
174            "start": {
175              "line": 17,
176              "column": 25
177            },
178            "end": {
179              "line": 19,
180              "column": 2
181            }
182          }
183        },
184        "loc": {
185          "start": {
186            "line": 17,
187            "column": 1
188          },
189          "end": {
190            "line": 19,
191            "column": 2
192          }
193        }
194      },
195      "loc": {
196        "start": {
197          "line": 17,
198          "column": 1
199        },
200        "end": {
201          "line": 19,
202          "column": 2
203        }
204      }
205    },
206    {
207      "type": "ExpressionStatement",
208      "expression": {
209        "type": "LogicalExpression",
210        "operator": "&&",
211        "left": {
212          "type": "TypeArgumentsExpression",
213          "leftHandExpression": {
214            "type": "Identifier",
215            "name": "A",
216            "loc": {
217              "start": {
218                "line": 22,
219                "column": 1
220              },
221              "end": {
222                "line": 22,
223                "column": 2
224              }
225            }
226          },
227          "typeArguments": {
228            "type": "TSTypeParameterInstantiation",
229            "params": [
230              {
231                "type": "TSStringKeyword",
232                "loc": {
233                  "start": {
234                    "line": 22,
235                    "column": 3
236                  },
237                  "end": {
238                    "line": 22,
239                    "column": 9
240                  }
241                }
242              }
243            ],
244            "loc": {
245              "start": {
246                "line": 22,
247                "column": 2
248              },
249              "end": {
250                "line": 22,
251                "column": 10
252              }
253            }
254          },
255          "loc": {
256            "start": {
257              "line": 22,
258              "column": 1
259            },
260            "end": {
261              "line": 22,
262              "column": 10
263            }
264          }
265        },
266        "right": {
267          "type": "TypeArgumentsExpression",
268          "leftHandExpression": {
269            "type": "Identifier",
270            "name": "A",
271            "loc": {
272              "start": {
273                "line": 22,
274                "column": 14
275              },
276              "end": {
277                "line": 22,
278                "column": 15
279              }
280            }
281          },
282          "typeArguments": {
283            "type": "TSTypeParameterInstantiation",
284            "params": [
285              {
286                "type": "TSNumberKeyword",
287                "loc": {
288                  "start": {
289                    "line": 22,
290                    "column": 16
291                  },
292                  "end": {
293                    "line": 22,
294                    "column": 22
295                  }
296                }
297              }
298            ],
299            "loc": {
300              "start": {
301                "line": 22,
302                "column": 15
303              },
304              "end": {
305                "line": 22,
306                "column": 23
307              }
308            }
309          },
310          "loc": {
311            "start": {
312              "line": 22,
313              "column": 14
314            },
315            "end": {
316              "line": 22,
317              "column": 23
318            }
319          }
320        },
321        "loc": {
322          "start": {
323            "line": 22,
324            "column": 1
325          },
326          "end": {
327            "line": 22,
328            "column": 23
329          }
330        }
331      },
332      "loc": {
333        "start": {
334          "line": 22,
335          "column": 1
336        },
337        "end": {
338          "line": 22,
339          "column": 23
340        }
341      }
342    },
343    {
344      "type": "ExpressionStatement",
345      "expression": {
346        "type": "LogicalExpression",
347        "operator": "||",
348        "left": {
349          "type": "TypeArgumentsExpression",
350          "leftHandExpression": {
351            "type": "Identifier",
352            "name": "A",
353            "loc": {
354              "start": {
355                "line": 25,
356                "column": 1
357              },
358              "end": {
359                "line": 25,
360                "column": 2
361              }
362            }
363          },
364          "typeArguments": {
365            "type": "TSTypeParameterInstantiation",
366            "params": [
367              {
368                "type": "TSStringKeyword",
369                "loc": {
370                  "start": {
371                    "line": 25,
372                    "column": 3
373                  },
374                  "end": {
375                    "line": 25,
376                    "column": 9
377                  }
378                }
379              }
380            ],
381            "loc": {
382              "start": {
383                "line": 25,
384                "column": 2
385              },
386              "end": {
387                "line": 25,
388                "column": 10
389              }
390            }
391          },
392          "loc": {
393            "start": {
394              "line": 25,
395              "column": 1
396            },
397            "end": {
398              "line": 25,
399              "column": 10
400            }
401          }
402        },
403        "right": {
404          "type": "TypeArgumentsExpression",
405          "leftHandExpression": {
406            "type": "Identifier",
407            "name": "A",
408            "loc": {
409              "start": {
410                "line": 25,
411                "column": 14
412              },
413              "end": {
414                "line": 25,
415                "column": 15
416              }
417            }
418          },
419          "typeArguments": {
420            "type": "TSTypeParameterInstantiation",
421            "params": [
422              {
423                "type": "TSNumberKeyword",
424                "loc": {
425                  "start": {
426                    "line": 25,
427                    "column": 16
428                  },
429                  "end": {
430                    "line": 25,
431                    "column": 22
432                  }
433                }
434              }
435            ],
436            "loc": {
437              "start": {
438                "line": 25,
439                "column": 15
440              },
441              "end": {
442                "line": 25,
443                "column": 23
444              }
445            }
446          },
447          "loc": {
448            "start": {
449              "line": 25,
450              "column": 14
451            },
452            "end": {
453              "line": 25,
454              "column": 23
455            }
456          }
457        },
458        "loc": {
459          "start": {
460            "line": 25,
461            "column": 1
462          },
463          "end": {
464            "line": 25,
465            "column": 23
466          }
467        }
468      },
469      "loc": {
470        "start": {
471          "line": 25,
472          "column": 1
473        },
474        "end": {
475          "line": 25,
476          "column": 23
477        }
478      }
479    },
480    {
481      "type": "ExpressionStatement",
482      "expression": {
483        "type": "LogicalExpression",
484        "operator": "??",
485        "left": {
486          "type": "TypeArgumentsExpression",
487          "leftHandExpression": {
488            "type": "Identifier",
489            "name": "A",
490            "loc": {
491              "start": {
492                "line": 28,
493                "column": 1
494              },
495              "end": {
496                "line": 28,
497                "column": 2
498              }
499            }
500          },
501          "typeArguments": {
502            "type": "TSTypeParameterInstantiation",
503            "params": [
504              {
505                "type": "TSStringKeyword",
506                "loc": {
507                  "start": {
508                    "line": 28,
509                    "column": 3
510                  },
511                  "end": {
512                    "line": 28,
513                    "column": 9
514                  }
515                }
516              }
517            ],
518            "loc": {
519              "start": {
520                "line": 28,
521                "column": 2
522              },
523              "end": {
524                "line": 28,
525                "column": 10
526              }
527            }
528          },
529          "loc": {
530            "start": {
531              "line": 28,
532              "column": 1
533            },
534            "end": {
535              "line": 28,
536              "column": 10
537            }
538          }
539        },
540        "right": {
541          "type": "TypeArgumentsExpression",
542          "leftHandExpression": {
543            "type": "Identifier",
544            "name": "A",
545            "loc": {
546              "start": {
547                "line": 28,
548                "column": 14
549              },
550              "end": {
551                "line": 28,
552                "column": 15
553              }
554            }
555          },
556          "typeArguments": {
557            "type": "TSTypeParameterInstantiation",
558            "params": [
559              {
560                "type": "TSNumberKeyword",
561                "loc": {
562                  "start": {
563                    "line": 28,
564                    "column": 16
565                  },
566                  "end": {
567                    "line": 28,
568                    "column": 22
569                  }
570                }
571              }
572            ],
573            "loc": {
574              "start": {
575                "line": 28,
576                "column": 15
577              },
578              "end": {
579                "line": 28,
580                "column": 23
581              }
582            }
583          },
584          "loc": {
585            "start": {
586              "line": 28,
587              "column": 14
588            },
589            "end": {
590              "line": 28,
591              "column": 23
592            }
593          }
594        },
595        "loc": {
596          "start": {
597            "line": 28,
598            "column": 1
599          },
600          "end": {
601            "line": 28,
602            "column": 23
603          }
604        }
605      },
606      "loc": {
607        "start": {
608          "line": 28,
609          "column": 1
610        },
611        "end": {
612          "line": 28,
613          "column": 23
614        }
615      }
616    },
617    {
618      "type": "VariableDeclaration",
619      "declarations": [
620        {
621          "type": "VariableDeclarator",
622          "id": {
623            "type": "Identifier",
624            "name": "d",
625            "loc": {
626              "start": {
627                "line": 31,
628                "column": 5
629              },
630              "end": {
631                "line": 31,
632                "column": 6
633              }
634            }
635          },
636          "init": {
637            "type": "TypeArgumentsExpression",
638            "leftHandExpression": {
639              "type": "Identifier",
640              "name": "A",
641              "loc": {
642                "start": {
643                  "line": 31,
644                  "column": 9
645                },
646                "end": {
647                  "line": 31,
648                  "column": 10
649                }
650              }
651            },
652            "typeArguments": {
653              "type": "TSTypeParameterInstantiation",
654              "params": [
655                {
656                  "type": "TSStringKeyword",
657                  "loc": {
658                    "start": {
659                      "line": 31,
660                      "column": 11
661                    },
662                    "end": {
663                      "line": 31,
664                      "column": 17
665                    }
666                  }
667                }
668              ],
669              "loc": {
670                "start": {
671                  "line": 31,
672                  "column": 10
673                },
674                "end": {
675                  "line": 31,
676                  "column": 18
677                }
678              }
679            },
680            "loc": {
681              "start": {
682                "line": 31,
683                "column": 9
684              },
685              "end": {
686                "line": 31,
687                "column": 18
688              }
689            }
690          },
691          "loc": {
692            "start": {
693              "line": 31,
694              "column": 5
695            },
696            "end": {
697              "line": 31,
698              "column": 18
699            }
700          }
701        },
702        {
703          "type": "VariableDeclarator",
704          "id": {
705            "type": "Identifier",
706            "name": "e",
707            "loc": {
708              "start": {
709                "line": 31,
710                "column": 20
711              },
712              "end": {
713                "line": 31,
714                "column": 21
715              }
716            }
717          },
718          "init": {
719            "type": "TypeArgumentsExpression",
720            "leftHandExpression": {
721              "type": "Identifier",
722              "name": "A",
723              "loc": {
724                "start": {
725                  "line": 31,
726                  "column": 24
727                },
728                "end": {
729                  "line": 31,
730                  "column": 25
731                }
732              }
733            },
734            "typeArguments": {
735              "type": "TSTypeParameterInstantiation",
736              "params": [
737                {
738                  "type": "TSNumberKeyword",
739                  "loc": {
740                    "start": {
741                      "line": 31,
742                      "column": 26
743                    },
744                    "end": {
745                      "line": 31,
746                      "column": 32
747                    }
748                  }
749                }
750              ],
751              "loc": {
752                "start": {
753                  "line": 31,
754                  "column": 25
755                },
756                "end": {
757                  "line": 31,
758                  "column": 33
759                }
760              }
761            },
762            "loc": {
763              "start": {
764                "line": 31,
765                "column": 24
766              },
767              "end": {
768                "line": 31,
769                "column": 33
770              }
771            }
772          },
773          "loc": {
774            "start": {
775              "line": 31,
776              "column": 20
777            },
778            "end": {
779              "line": 31,
780              "column": 33
781            }
782          }
783        }
784      ],
785      "kind": "var",
786      "loc": {
787        "start": {
788          "line": 31,
789          "column": 1
790        },
791        "end": {
792          "line": 31,
793          "column": 33
794        }
795      }
796    }
797  ],
798  "loc": {
799    "start": {
800      "line": 1,
801      "column": 1
802    },
803    "end": {
804      "line": 31,
805      "column": 33
806    }
807  }
808}
809