• 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": "A",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 16,
14              "column": 7,
15              "program": "generics_recursive.ets"
16            },
17            "end": {
18              "line": 16,
19              "column": 8,
20              "program": "generics_recursive.ets"
21            }
22          }
23        },
24        "typeParameters": {
25          "type": "TSTypeParameterDeclaration",
26          "params": [
27            {
28              "type": "TSTypeParameter",
29              "name": {
30                "type": "Identifier",
31                "name": "TA",
32                "decorators": [],
33                "loc": {
34                  "start": {
35                    "line": 16,
36                    "column": 9,
37                    "program": "generics_recursive.ets"
38                  },
39                  "end": {
40                    "line": 16,
41                    "column": 11,
42                    "program": "generics_recursive.ets"
43                  }
44                }
45              },
46              "loc": {
47                "start": {
48                  "line": 16,
49                  "column": 9,
50                  "program": "generics_recursive.ets"
51                },
52                "end": {
53                  "line": 16,
54                  "column": 12,
55                  "program": "generics_recursive.ets"
56                }
57              }
58            }
59          ],
60          "loc": {
61            "start": {
62              "line": 16,
63              "column": 8,
64              "program": "generics_recursive.ets"
65            },
66            "end": {
67              "line": 16,
68              "column": 12,
69              "program": "generics_recursive.ets"
70            }
71          }
72        },
73        "superClass": {
74          "type": "ETSTypeReference",
75          "part": {
76            "type": "ETSTypeReferencePart",
77            "name": {
78              "type": "Identifier",
79              "name": "B",
80              "decorators": [],
81              "loc": {
82                "start": {
83                  "line": 16,
84                  "column": 21,
85                  "program": "generics_recursive.ets"
86                },
87                "end": {
88                  "line": 16,
89                  "column": 22,
90                  "program": "generics_recursive.ets"
91                }
92              }
93            },
94            "typeParams": {
95              "type": "TSTypeParameterInstantiation",
96              "params": [
97                {
98                  "type": "ETSTypeReference",
99                  "part": {
100                    "type": "ETSTypeReferencePart",
101                    "name": {
102                      "type": "Identifier",
103                      "name": "TA",
104                      "decorators": [],
105                      "loc": {
106                        "start": {
107                          "line": 16,
108                          "column": 23,
109                          "program": "generics_recursive.ets"
110                        },
111                        "end": {
112                          "line": 16,
113                          "column": 25,
114                          "program": "generics_recursive.ets"
115                        }
116                      }
117                    },
118                    "loc": {
119                      "start": {
120                        "line": 16,
121                        "column": 23,
122                        "program": "generics_recursive.ets"
123                      },
124                      "end": {
125                        "line": 16,
126                        "column": 26,
127                        "program": "generics_recursive.ets"
128                      }
129                    }
130                  },
131                  "loc": {
132                    "start": {
133                      "line": 16,
134                      "column": 23,
135                      "program": "generics_recursive.ets"
136                    },
137                    "end": {
138                      "line": 16,
139                      "column": 26,
140                      "program": "generics_recursive.ets"
141                    }
142                  }
143                }
144              ],
145              "loc": {
146                "start": {
147                  "line": 16,
148                  "column": 22,
149                  "program": "generics_recursive.ets"
150                },
151                "end": {
152                  "line": 16,
153                  "column": 26,
154                  "program": "generics_recursive.ets"
155                }
156              }
157            },
158            "loc": {
159              "start": {
160                "line": 16,
161                "column": 21,
162                "program": "generics_recursive.ets"
163              },
164              "end": {
165                "line": 16,
166                "column": 28,
167                "program": "generics_recursive.ets"
168              }
169            }
170          },
171          "loc": {
172            "start": {
173              "line": 16,
174              "column": 21,
175              "program": "generics_recursive.ets"
176            },
177            "end": {
178              "line": 16,
179              "column": 28,
180              "program": "generics_recursive.ets"
181            }
182          }
183        },
184        "implements": [],
185        "body": [
186          {
187            "type": "MethodDefinition",
188            "key": {
189              "type": "Identifier",
190              "name": "constructor",
191              "decorators": [],
192              "loc": {
193                "start": {
194                  "line": 16,
195                  "column": 28,
196                  "program": "generics_recursive.ets"
197                },
198                "end": {
199                  "line": 16,
200                  "column": 28,
201                  "program": "generics_recursive.ets"
202                }
203              }
204            },
205            "kind": "constructor",
206            "static": false,
207            "optional": false,
208            "computed": false,
209            "value": {
210              "type": "FunctionExpression",
211              "function": {
212                "type": "ScriptFunction",
213                "id": {
214                  "type": "Identifier",
215                  "name": "constructor",
216                  "decorators": [],
217                  "loc": {
218                    "start": {
219                      "line": 16,
220                      "column": 28,
221                      "program": "generics_recursive.ets"
222                    },
223                    "end": {
224                      "line": 16,
225                      "column": 28,
226                      "program": "generics_recursive.ets"
227                    }
228                  }
229                },
230                "generator": false,
231                "async": false,
232                "expression": false,
233                "params": [],
234                "body": {
235                  "type": "BlockStatement",
236                  "statements": [],
237                  "loc": {
238                    "start": {
239                      "line": 16,
240                      "column": 28,
241                      "program": "generics_recursive.ets"
242                    },
243                    "end": {
244                      "line": 16,
245                      "column": 28,
246                      "program": "generics_recursive.ets"
247                    }
248                  }
249                },
250                "loc": {
251                  "start": {
252                    "line": 16,
253                    "column": 28,
254                    "program": "generics_recursive.ets"
255                  },
256                  "end": {
257                    "line": 16,
258                    "column": 28,
259                    "program": "generics_recursive.ets"
260                  }
261                }
262              },
263              "loc": {
264                "start": {
265                  "line": 16,
266                  "column": 28,
267                  "program": "generics_recursive.ets"
268                },
269                "end": {
270                  "line": 16,
271                  "column": 28,
272                  "program": "generics_recursive.ets"
273                }
274              }
275            },
276            "overloads": [],
277            "decorators": [],
278            "loc": {
279              "start": {
280                "line": 1,
281                "column": 1,
282                "program": null
283              },
284              "end": {
285                "line": 1,
286                "column": 1,
287                "program": null
288              }
289            }
290          }
291        ],
292        "loc": {
293          "start": {
294            "line": 16,
295            "column": 27,
296            "program": "generics_recursive.ets"
297          },
298          "end": {
299            "line": 18,
300            "column": 6,
301            "program": "generics_recursive.ets"
302          }
303        }
304      },
305      "loc": {
306        "start": {
307          "line": 16,
308          "column": 1,
309          "program": "generics_recursive.ets"
310        },
311        "end": {
312          "line": 18,
313          "column": 6,
314          "program": "generics_recursive.ets"
315        }
316      }
317    },
318    {
319      "type": "ClassDeclaration",
320      "definition": {
321        "id": {
322          "type": "Identifier",
323          "name": "B",
324          "decorators": [],
325          "loc": {
326            "start": {
327              "line": 18,
328              "column": 7,
329              "program": "generics_recursive.ets"
330            },
331            "end": {
332              "line": 18,
333              "column": 8,
334              "program": "generics_recursive.ets"
335            }
336          }
337        },
338        "typeParameters": {
339          "type": "TSTypeParameterDeclaration",
340          "params": [
341            {
342              "type": "TSTypeParameter",
343              "name": {
344                "type": "Identifier",
345                "name": "TB",
346                "decorators": [],
347                "loc": {
348                  "start": {
349                    "line": 18,
350                    "column": 9,
351                    "program": "generics_recursive.ets"
352                  },
353                  "end": {
354                    "line": 18,
355                    "column": 11,
356                    "program": "generics_recursive.ets"
357                  }
358                }
359              },
360              "loc": {
361                "start": {
362                  "line": 18,
363                  "column": 9,
364                  "program": "generics_recursive.ets"
365                },
366                "end": {
367                  "line": 18,
368                  "column": 12,
369                  "program": "generics_recursive.ets"
370                }
371              }
372            }
373          ],
374          "loc": {
375            "start": {
376              "line": 18,
377              "column": 8,
378              "program": "generics_recursive.ets"
379            },
380            "end": {
381              "line": 18,
382              "column": 12,
383              "program": "generics_recursive.ets"
384            }
385          }
386        },
387        "superClass": null,
388        "implements": [],
389        "body": [
390          {
391            "type": "MethodDefinition",
392            "key": {
393              "type": "Identifier",
394              "name": "f",
395              "decorators": [],
396              "loc": {
397                "start": {
398                  "line": 19,
399                  "column": 5,
400                  "program": "generics_recursive.ets"
401                },
402                "end": {
403                  "line": 19,
404                  "column": 6,
405                  "program": "generics_recursive.ets"
406                }
407              }
408            },
409            "kind": "method",
410            "accessibility": "public",
411            "static": false,
412            "optional": false,
413            "computed": false,
414            "value": {
415              "type": "FunctionExpression",
416              "function": {
417                "type": "ScriptFunction",
418                "id": {
419                  "type": "Identifier",
420                  "name": "f",
421                  "decorators": [],
422                  "loc": {
423                    "start": {
424                      "line": 19,
425                      "column": 5,
426                      "program": "generics_recursive.ets"
427                    },
428                    "end": {
429                      "line": 19,
430                      "column": 6,
431                      "program": "generics_recursive.ets"
432                    }
433                  }
434                },
435                "generator": false,
436                "async": false,
437                "expression": false,
438                "params": [],
439                "body": {
440                  "type": "BlockStatement",
441                  "statements": [],
442                  "loc": {
443                    "start": {
444                      "line": 19,
445                      "column": 9,
446                      "program": "generics_recursive.ets"
447                    },
448                    "end": {
449                      "line": 19,
450                      "column": 11,
451                      "program": "generics_recursive.ets"
452                    }
453                  }
454                },
455                "loc": {
456                  "start": {
457                    "line": 19,
458                    "column": 6,
459                    "program": "generics_recursive.ets"
460                  },
461                  "end": {
462                    "line": 19,
463                    "column": 11,
464                    "program": "generics_recursive.ets"
465                  }
466                }
467              },
468              "loc": {
469                "start": {
470                  "line": 19,
471                  "column": 6,
472                  "program": "generics_recursive.ets"
473                },
474                "end": {
475                  "line": 19,
476                  "column": 11,
477                  "program": "generics_recursive.ets"
478                }
479              }
480            },
481            "overloads": [],
482            "decorators": [],
483            "loc": {
484              "start": {
485                "line": 19,
486                "column": 5,
487                "program": "generics_recursive.ets"
488              },
489              "end": {
490                "line": 19,
491                "column": 11,
492                "program": "generics_recursive.ets"
493              }
494            }
495          },
496          {
497            "type": "MethodDefinition",
498            "key": {
499              "type": "Identifier",
500              "name": "g",
501              "decorators": [],
502              "loc": {
503                "start": {
504                  "line": 20,
505                  "column": 5,
506                  "program": "generics_recursive.ets"
507                },
508                "end": {
509                  "line": 20,
510                  "column": 6,
511                  "program": "generics_recursive.ets"
512                }
513              }
514            },
515            "kind": "method",
516            "accessibility": "public",
517            "static": false,
518            "optional": false,
519            "computed": false,
520            "value": {
521              "type": "FunctionExpression",
522              "function": {
523                "type": "ScriptFunction",
524                "id": {
525                  "type": "Identifier",
526                  "name": "g",
527                  "decorators": [],
528                  "loc": {
529                    "start": {
530                      "line": 20,
531                      "column": 5,
532                      "program": "generics_recursive.ets"
533                    },
534                    "end": {
535                      "line": 20,
536                      "column": 6,
537                      "program": "generics_recursive.ets"
538                    }
539                  }
540                },
541                "generator": false,
542                "async": false,
543                "expression": false,
544                "params": [
545                  {
546                    "type": "ETSParameterExpression",
547                    "name": {
548                      "type": "Identifier",
549                      "name": "a",
550                      "typeAnnotation": {
551                        "type": "ETSTypeReference",
552                        "part": {
553                          "type": "ETSTypeReferencePart",
554                          "name": {
555                            "type": "Identifier",
556                            "name": "A",
557                            "decorators": [],
558                            "loc": {
559                              "start": {
560                                "line": 20,
561                                "column": 10,
562                                "program": "generics_recursive.ets"
563                              },
564                              "end": {
565                                "line": 20,
566                                "column": 11,
567                                "program": "generics_recursive.ets"
568                              }
569                            }
570                          },
571                          "typeParams": {
572                            "type": "TSTypeParameterInstantiation",
573                            "params": [
574                              {
575                                "type": "ETSTypeReference",
576                                "part": {
577                                  "type": "ETSTypeReferencePart",
578                                  "name": {
579                                    "type": "Identifier",
580                                    "name": "TB",
581                                    "decorators": [],
582                                    "loc": {
583                                      "start": {
584                                        "line": 20,
585                                        "column": 12,
586                                        "program": "generics_recursive.ets"
587                                      },
588                                      "end": {
589                                        "line": 20,
590                                        "column": 14,
591                                        "program": "generics_recursive.ets"
592                                      }
593                                    }
594                                  },
595                                  "loc": {
596                                    "start": {
597                                      "line": 20,
598                                      "column": 12,
599                                      "program": "generics_recursive.ets"
600                                    },
601                                    "end": {
602                                      "line": 20,
603                                      "column": 15,
604                                      "program": "generics_recursive.ets"
605                                    }
606                                  }
607                                },
608                                "loc": {
609                                  "start": {
610                                    "line": 20,
611                                    "column": 12,
612                                    "program": "generics_recursive.ets"
613                                  },
614                                  "end": {
615                                    "line": 20,
616                                    "column": 15,
617                                    "program": "generics_recursive.ets"
618                                  }
619                                }
620                              }
621                            ],
622                            "loc": {
623                              "start": {
624                                "line": 20,
625                                "column": 11,
626                                "program": "generics_recursive.ets"
627                              },
628                              "end": {
629                                "line": 20,
630                                "column": 15,
631                                "program": "generics_recursive.ets"
632                              }
633                            }
634                          },
635                          "loc": {
636                            "start": {
637                              "line": 20,
638                              "column": 10,
639                              "program": "generics_recursive.ets"
640                            },
641                            "end": {
642                              "line": 20,
643                              "column": 16,
644                              "program": "generics_recursive.ets"
645                            }
646                          }
647                        },
648                        "loc": {
649                          "start": {
650                            "line": 20,
651                            "column": 10,
652                            "program": "generics_recursive.ets"
653                          },
654                          "end": {
655                            "line": 20,
656                            "column": 16,
657                            "program": "generics_recursive.ets"
658                          }
659                        }
660                      },
661                      "decorators": [],
662                      "loc": {
663                        "start": {
664                          "line": 20,
665                          "column": 7,
666                          "program": "generics_recursive.ets"
667                        },
668                        "end": {
669                          "line": 20,
670                          "column": 16,
671                          "program": "generics_recursive.ets"
672                        }
673                      }
674                    },
675                    "loc": {
676                      "start": {
677                        "line": 20,
678                        "column": 7,
679                        "program": "generics_recursive.ets"
680                      },
681                      "end": {
682                        "line": 20,
683                        "column": 16,
684                        "program": "generics_recursive.ets"
685                      }
686                    }
687                  }
688                ],
689                "body": {
690                  "type": "BlockStatement",
691                  "statements": [
692                    {
693                      "type": "ExpressionStatement",
694                      "expression": {
695                        "type": "CallExpression",
696                        "callee": {
697                          "type": "MemberExpression",
698                          "object": {
699                            "type": "Identifier",
700                            "name": "a",
701                            "decorators": [],
702                            "loc": {
703                              "start": {
704                                "line": 21,
705                                "column": 9,
706                                "program": "generics_recursive.ets"
707                              },
708                              "end": {
709                                "line": 21,
710                                "column": 10,
711                                "program": "generics_recursive.ets"
712                              }
713                            }
714                          },
715                          "property": {
716                            "type": "Identifier",
717                            "name": "f",
718                            "decorators": [],
719                            "loc": {
720                              "start": {
721                                "line": 21,
722                                "column": 11,
723                                "program": "generics_recursive.ets"
724                              },
725                              "end": {
726                                "line": 21,
727                                "column": 12,
728                                "program": "generics_recursive.ets"
729                              }
730                            }
731                          },
732                          "computed": false,
733                          "optional": false,
734                          "loc": {
735                            "start": {
736                              "line": 21,
737                              "column": 9,
738                              "program": "generics_recursive.ets"
739                            },
740                            "end": {
741                              "line": 21,
742                              "column": 12,
743                              "program": "generics_recursive.ets"
744                            }
745                          }
746                        },
747                        "arguments": [],
748                        "optional": false,
749                        "loc": {
750                          "start": {
751                            "line": 21,
752                            "column": 9,
753                            "program": "generics_recursive.ets"
754                          },
755                          "end": {
756                            "line": 21,
757                            "column": 14,
758                            "program": "generics_recursive.ets"
759                          }
760                        }
761                      },
762                      "loc": {
763                        "start": {
764                          "line": 21,
765                          "column": 9,
766                          "program": "generics_recursive.ets"
767                        },
768                        "end": {
769                          "line": 21,
770                          "column": 15,
771                          "program": "generics_recursive.ets"
772                        }
773                      }
774                    }
775                  ],
776                  "loc": {
777                    "start": {
778                      "line": 20,
779                      "column": 17,
780                      "program": "generics_recursive.ets"
781                    },
782                    "end": {
783                      "line": 22,
784                      "column": 6,
785                      "program": "generics_recursive.ets"
786                    }
787                  }
788                },
789                "loc": {
790                  "start": {
791                    "line": 20,
792                    "column": 6,
793                    "program": "generics_recursive.ets"
794                  },
795                  "end": {
796                    "line": 22,
797                    "column": 6,
798                    "program": "generics_recursive.ets"
799                  }
800                }
801              },
802              "loc": {
803                "start": {
804                  "line": 20,
805                  "column": 6,
806                  "program": "generics_recursive.ets"
807                },
808                "end": {
809                  "line": 22,
810                  "column": 6,
811                  "program": "generics_recursive.ets"
812                }
813              }
814            },
815            "overloads": [],
816            "decorators": [],
817            "loc": {
818              "start": {
819                "line": 20,
820                "column": 5,
821                "program": "generics_recursive.ets"
822              },
823              "end": {
824                "line": 22,
825                "column": 6,
826                "program": "generics_recursive.ets"
827              }
828            }
829          },
830          {
831            "type": "MethodDefinition",
832            "key": {
833              "type": "Identifier",
834              "name": "constructor",
835              "decorators": [],
836              "loc": {
837                "start": {
838                  "line": 18,
839                  "column": 14,
840                  "program": "generics_recursive.ets"
841                },
842                "end": {
843                  "line": 18,
844                  "column": 14,
845                  "program": "generics_recursive.ets"
846                }
847              }
848            },
849            "kind": "constructor",
850            "static": false,
851            "optional": false,
852            "computed": false,
853            "value": {
854              "type": "FunctionExpression",
855              "function": {
856                "type": "ScriptFunction",
857                "id": {
858                  "type": "Identifier",
859                  "name": "constructor",
860                  "decorators": [],
861                  "loc": {
862                    "start": {
863                      "line": 18,
864                      "column": 14,
865                      "program": "generics_recursive.ets"
866                    },
867                    "end": {
868                      "line": 18,
869                      "column": 14,
870                      "program": "generics_recursive.ets"
871                    }
872                  }
873                },
874                "generator": false,
875                "async": false,
876                "expression": false,
877                "params": [],
878                "body": {
879                  "type": "BlockStatement",
880                  "statements": [],
881                  "loc": {
882                    "start": {
883                      "line": 18,
884                      "column": 14,
885                      "program": "generics_recursive.ets"
886                    },
887                    "end": {
888                      "line": 18,
889                      "column": 14,
890                      "program": "generics_recursive.ets"
891                    }
892                  }
893                },
894                "loc": {
895                  "start": {
896                    "line": 18,
897                    "column": 14,
898                    "program": "generics_recursive.ets"
899                  },
900                  "end": {
901                    "line": 18,
902                    "column": 14,
903                    "program": "generics_recursive.ets"
904                  }
905                }
906              },
907              "loc": {
908                "start": {
909                  "line": 18,
910                  "column": 14,
911                  "program": "generics_recursive.ets"
912                },
913                "end": {
914                  "line": 18,
915                  "column": 14,
916                  "program": "generics_recursive.ets"
917                }
918              }
919            },
920            "overloads": [],
921            "decorators": [],
922            "loc": {
923              "start": {
924                "line": 1,
925                "column": 1,
926                "program": null
927              },
928              "end": {
929                "line": 1,
930                "column": 1,
931                "program": null
932              }
933            }
934          }
935        ],
936        "loc": {
937          "start": {
938            "line": 18,
939            "column": 13,
940            "program": "generics_recursive.ets"
941          },
942          "end": {
943            "line": 25,
944            "column": 6,
945            "program": "generics_recursive.ets"
946          }
947        }
948      },
949      "loc": {
950        "start": {
951          "line": 18,
952          "column": 1,
953          "program": "generics_recursive.ets"
954        },
955        "end": {
956          "line": 25,
957          "column": 6,
958          "program": "generics_recursive.ets"
959        }
960      }
961    },
962    {
963      "type": "ClassDeclaration",
964      "definition": {
965        "id": {
966          "type": "Identifier",
967          "name": "M",
968          "decorators": [],
969          "loc": {
970            "start": {
971              "line": 25,
972              "column": 7,
973              "program": "generics_recursive.ets"
974            },
975            "end": {
976              "line": 25,
977              "column": 8,
978              "program": "generics_recursive.ets"
979            }
980          }
981        },
982        "typeParameters": {
983          "type": "TSTypeParameterDeclaration",
984          "params": [
985            {
986              "type": "TSTypeParameter",
987              "name": {
988                "type": "Identifier",
989                "name": "K",
990                "decorators": [],
991                "loc": {
992                  "start": {
993                    "line": 25,
994                    "column": 9,
995                    "program": "generics_recursive.ets"
996                  },
997                  "end": {
998                    "line": 25,
999                    "column": 10,
1000                    "program": "generics_recursive.ets"
1001                  }
1002                }
1003              },
1004              "loc": {
1005                "start": {
1006                  "line": 25,
1007                  "column": 9,
1008                  "program": "generics_recursive.ets"
1009                },
1010                "end": {
1011                  "line": 25,
1012                  "column": 11,
1013                  "program": "generics_recursive.ets"
1014                }
1015              }
1016            },
1017            {
1018              "type": "TSTypeParameter",
1019              "name": {
1020                "type": "Identifier",
1021                "name": "V",
1022                "decorators": [],
1023                "loc": {
1024                  "start": {
1025                    "line": 25,
1026                    "column": 12,
1027                    "program": "generics_recursive.ets"
1028                  },
1029                  "end": {
1030                    "line": 25,
1031                    "column": 13,
1032                    "program": "generics_recursive.ets"
1033                  }
1034                }
1035              },
1036              "loc": {
1037                "start": {
1038                  "line": 25,
1039                  "column": 12,
1040                  "program": "generics_recursive.ets"
1041                },
1042                "end": {
1043                  "line": 25,
1044                  "column": 14,
1045                  "program": "generics_recursive.ets"
1046                }
1047              }
1048            }
1049          ],
1050          "loc": {
1051            "start": {
1052              "line": 25,
1053              "column": 8,
1054              "program": "generics_recursive.ets"
1055            },
1056            "end": {
1057              "line": 25,
1058              "column": 14,
1059              "program": "generics_recursive.ets"
1060            }
1061          }
1062        },
1063        "superClass": null,
1064        "implements": [],
1065        "body": [
1066          {
1067            "type": "MethodDefinition",
1068            "key": {
1069              "type": "Identifier",
1070              "name": "constructor",
1071              "decorators": [],
1072              "loc": {
1073                "start": {
1074                  "line": 1,
1075                  "column": 1,
1076                  "program": null
1077                },
1078                "end": {
1079                  "line": 1,
1080                  "column": 1,
1081                  "program": null
1082                }
1083              }
1084            },
1085            "kind": "constructor",
1086            "accessibility": "public",
1087            "static": false,
1088            "optional": false,
1089            "computed": false,
1090            "value": {
1091              "type": "FunctionExpression",
1092              "function": {
1093                "type": "ScriptFunction",
1094                "id": {
1095                  "type": "Identifier",
1096                  "name": "constructor",
1097                  "decorators": [],
1098                  "loc": {
1099                    "start": {
1100                      "line": 1,
1101                      "column": 1,
1102                      "program": null
1103                    },
1104                    "end": {
1105                      "line": 1,
1106                      "column": 1,
1107                      "program": null
1108                    }
1109                  }
1110                },
1111                "generator": false,
1112                "async": false,
1113                "expression": false,
1114                "params": [
1115                  {
1116                    "type": "ETSParameterExpression",
1117                    "name": {
1118                      "type": "Identifier",
1119                      "name": "iter",
1120                      "typeAnnotation": {
1121                        "type": "ETSUnionType",
1122                        "types": [
1123                          {
1124                            "type": "ETSTypeReference",
1125                            "part": {
1126                              "type": "ETSTypeReferencePart",
1127                              "name": {
1128                                "type": "Identifier",
1129                                "name": "ArrayLike",
1130                                "decorators": [],
1131                                "loc": {
1132                                  "start": {
1133                                    "line": 26,
1134                                    "column": 23,
1135                                    "program": "generics_recursive.ets"
1136                                  },
1137                                  "end": {
1138                                    "line": 26,
1139                                    "column": 32,
1140                                    "program": "generics_recursive.ets"
1141                                  }
1142                                }
1143                              },
1144                              "typeParams": {
1145                                "type": "TSTypeParameterInstantiation",
1146                                "params": [
1147                                  {
1148                                    "type": "ETSTuple",
1149                                    "types": [
1150                                      {
1151                                        "type": "ETSTypeReference",
1152                                        "part": {
1153                                          "type": "ETSTypeReferencePart",
1154                                          "name": {
1155                                            "type": "Identifier",
1156                                            "name": "K",
1157                                            "decorators": [],
1158                                            "loc": {
1159                                              "start": {
1160                                                "line": 26,
1161                                                "column": 34,
1162                                                "program": "generics_recursive.ets"
1163                                              },
1164                                              "end": {
1165                                                "line": 26,
1166                                                "column": 35,
1167                                                "program": "generics_recursive.ets"
1168                                              }
1169                                            }
1170                                          },
1171                                          "loc": {
1172                                            "start": {
1173                                              "line": 26,
1174                                              "column": 34,
1175                                              "program": "generics_recursive.ets"
1176                                            },
1177                                            "end": {
1178                                              "line": 26,
1179                                              "column": 36,
1180                                              "program": "generics_recursive.ets"
1181                                            }
1182                                          }
1183                                        },
1184                                        "loc": {
1185                                          "start": {
1186                                            "line": 26,
1187                                            "column": 34,
1188                                            "program": "generics_recursive.ets"
1189                                          },
1190                                          "end": {
1191                                            "line": 26,
1192                                            "column": 36,
1193                                            "program": "generics_recursive.ets"
1194                                          }
1195                                        }
1196                                      },
1197                                      {
1198                                        "type": "ETSTypeReference",
1199                                        "part": {
1200                                          "type": "ETSTypeReferencePart",
1201                                          "name": {
1202                                            "type": "Identifier",
1203                                            "name": "V",
1204                                            "decorators": [],
1205                                            "loc": {
1206                                              "start": {
1207                                                "line": 26,
1208                                                "column": 37,
1209                                                "program": "generics_recursive.ets"
1210                                              },
1211                                              "end": {
1212                                                "line": 26,
1213                                                "column": 38,
1214                                                "program": "generics_recursive.ets"
1215                                              }
1216                                            }
1217                                          },
1218                                          "loc": {
1219                                            "start": {
1220                                              "line": 26,
1221                                              "column": 37,
1222                                              "program": "generics_recursive.ets"
1223                                            },
1224                                            "end": {
1225                                              "line": 26,
1226                                              "column": 39,
1227                                              "program": "generics_recursive.ets"
1228                                            }
1229                                          }
1230                                        },
1231                                        "loc": {
1232                                          "start": {
1233                                            "line": 26,
1234                                            "column": 37,
1235                                            "program": "generics_recursive.ets"
1236                                          },
1237                                          "end": {
1238                                            "line": 26,
1239                                            "column": 39,
1240                                            "program": "generics_recursive.ets"
1241                                          }
1242                                        }
1243                                      }
1244                                    ],
1245                                    "loc": {
1246                                      "start": {
1247                                        "line": 26,
1248                                        "column": 33,
1249                                        "program": "generics_recursive.ets"
1250                                      },
1251                                      "end": {
1252                                        "line": 26,
1253                                        "column": 39,
1254                                        "program": "generics_recursive.ets"
1255                                      }
1256                                    }
1257                                  }
1258                                ],
1259                                "loc": {
1260                                  "start": {
1261                                    "line": 26,
1262                                    "column": 32,
1263                                    "program": "generics_recursive.ets"
1264                                  },
1265                                  "end": {
1266                                    "line": 26,
1267                                    "column": 40,
1268                                    "program": "generics_recursive.ets"
1269                                  }
1270                                }
1271                              },
1272                              "loc": {
1273                                "start": {
1274                                  "line": 26,
1275                                  "column": 23,
1276                                  "program": "generics_recursive.ets"
1277                                },
1278                                "end": {
1279                                  "line": 26,
1280                                  "column": 42,
1281                                  "program": "generics_recursive.ets"
1282                                }
1283                              }
1284                            },
1285                            "loc": {
1286                              "start": {
1287                                "line": 26,
1288                                "column": 23,
1289                                "program": "generics_recursive.ets"
1290                              },
1291                              "end": {
1292                                "line": 26,
1293                                "column": 42,
1294                                "program": "generics_recursive.ets"
1295                              }
1296                            }
1297                          },
1298                          {
1299                            "type": "ETSTypeReference",
1300                            "part": {
1301                              "type": "ETSTypeReferencePart",
1302                              "name": {
1303                                "type": "Identifier",
1304                                "name": "Iterable",
1305                                "decorators": [],
1306                                "loc": {
1307                                  "start": {
1308                                    "line": 26,
1309                                    "column": 43,
1310                                    "program": "generics_recursive.ets"
1311                                  },
1312                                  "end": {
1313                                    "line": 26,
1314                                    "column": 51,
1315                                    "program": "generics_recursive.ets"
1316                                  }
1317                                }
1318                              },
1319                              "typeParams": {
1320                                "type": "TSTypeParameterInstantiation",
1321                                "params": [
1322                                  {
1323                                    "type": "ETSTuple",
1324                                    "types": [
1325                                      {
1326                                        "type": "ETSTypeReference",
1327                                        "part": {
1328                                          "type": "ETSTypeReferencePart",
1329                                          "name": {
1330                                            "type": "Identifier",
1331                                            "name": "K",
1332                                            "decorators": [],
1333                                            "loc": {
1334                                              "start": {
1335                                                "line": 26,
1336                                                "column": 53,
1337                                                "program": "generics_recursive.ets"
1338                                              },
1339                                              "end": {
1340                                                "line": 26,
1341                                                "column": 54,
1342                                                "program": "generics_recursive.ets"
1343                                              }
1344                                            }
1345                                          },
1346                                          "loc": {
1347                                            "start": {
1348                                              "line": 26,
1349                                              "column": 53,
1350                                              "program": "generics_recursive.ets"
1351                                            },
1352                                            "end": {
1353                                              "line": 26,
1354                                              "column": 55,
1355                                              "program": "generics_recursive.ets"
1356                                            }
1357                                          }
1358                                        },
1359                                        "loc": {
1360                                          "start": {
1361                                            "line": 26,
1362                                            "column": 53,
1363                                            "program": "generics_recursive.ets"
1364                                          },
1365                                          "end": {
1366                                            "line": 26,
1367                                            "column": 55,
1368                                            "program": "generics_recursive.ets"
1369                                          }
1370                                        }
1371                                      },
1372                                      {
1373                                        "type": "ETSTypeReference",
1374                                        "part": {
1375                                          "type": "ETSTypeReferencePart",
1376                                          "name": {
1377                                            "type": "Identifier",
1378                                            "name": "V",
1379                                            "decorators": [],
1380                                            "loc": {
1381                                              "start": {
1382                                                "line": 26,
1383                                                "column": 56,
1384                                                "program": "generics_recursive.ets"
1385                                              },
1386                                              "end": {
1387                                                "line": 26,
1388                                                "column": 57,
1389                                                "program": "generics_recursive.ets"
1390                                              }
1391                                            }
1392                                          },
1393                                          "loc": {
1394                                            "start": {
1395                                              "line": 26,
1396                                              "column": 56,
1397                                              "program": "generics_recursive.ets"
1398                                            },
1399                                            "end": {
1400                                              "line": 26,
1401                                              "column": 58,
1402                                              "program": "generics_recursive.ets"
1403                                            }
1404                                          }
1405                                        },
1406                                        "loc": {
1407                                          "start": {
1408                                            "line": 26,
1409                                            "column": 56,
1410                                            "program": "generics_recursive.ets"
1411                                          },
1412                                          "end": {
1413                                            "line": 26,
1414                                            "column": 58,
1415                                            "program": "generics_recursive.ets"
1416                                          }
1417                                        }
1418                                      }
1419                                    ],
1420                                    "loc": {
1421                                      "start": {
1422                                        "line": 26,
1423                                        "column": 52,
1424                                        "program": "generics_recursive.ets"
1425                                      },
1426                                      "end": {
1427                                        "line": 26,
1428                                        "column": 58,
1429                                        "program": "generics_recursive.ets"
1430                                      }
1431                                    }
1432                                  }
1433                                ],
1434                                "loc": {
1435                                  "start": {
1436                                    "line": 26,
1437                                    "column": 51,
1438                                    "program": "generics_recursive.ets"
1439                                  },
1440                                  "end": {
1441                                    "line": 26,
1442                                    "column": 59,
1443                                    "program": "generics_recursive.ets"
1444                                  }
1445                                }
1446                              },
1447                              "loc": {
1448                                "start": {
1449                                  "line": 26,
1450                                  "column": 43,
1451                                  "program": "generics_recursive.ets"
1452                                },
1453                                "end": {
1454                                  "line": 26,
1455                                  "column": 60,
1456                                  "program": "generics_recursive.ets"
1457                                }
1458                              }
1459                            },
1460                            "loc": {
1461                              "start": {
1462                                "line": 26,
1463                                "column": 43,
1464                                "program": "generics_recursive.ets"
1465                              },
1466                              "end": {
1467                                "line": 26,
1468                                "column": 60,
1469                                "program": "generics_recursive.ets"
1470                              }
1471                            }
1472                          }
1473                        ],
1474                        "loc": {
1475                          "start": {
1476                            "line": 26,
1477                            "column": 23,
1478                            "program": "generics_recursive.ets"
1479                          },
1480                          "end": {
1481                            "line": 26,
1482                            "column": 60,
1483                            "program": "generics_recursive.ets"
1484                          }
1485                        }
1486                      },
1487                      "decorators": [],
1488                      "loc": {
1489                        "start": {
1490                          "line": 26,
1491                          "column": 17,
1492                          "program": "generics_recursive.ets"
1493                        },
1494                        "end": {
1495                          "line": 26,
1496                          "column": 60,
1497                          "program": "generics_recursive.ets"
1498                        }
1499                      }
1500                    },
1501                    "loc": {
1502                      "start": {
1503                        "line": 26,
1504                        "column": 17,
1505                        "program": "generics_recursive.ets"
1506                      },
1507                      "end": {
1508                        "line": 26,
1509                        "column": 60,
1510                        "program": "generics_recursive.ets"
1511                      }
1512                    }
1513                  }
1514                ],
1515                "body": {
1516                  "type": "BlockStatement",
1517                  "statements": [
1518                    {
1519                      "type": "ExpressionStatement",
1520                      "expression": {
1521                        "type": "CallExpression",
1522                        "callee": {
1523                          "type": "MemberExpression",
1524                          "object": {
1525                            "type": "Identifier",
1526                            "name": "Array",
1527                            "decorators": [],
1528                            "loc": {
1529                              "start": {
1530                                "line": 27,
1531                                "column": 9,
1532                                "program": "generics_recursive.ets"
1533                              },
1534                              "end": {
1535                                "line": 27,
1536                                "column": 14,
1537                                "program": "generics_recursive.ets"
1538                              }
1539                            }
1540                          },
1541                          "property": {
1542                            "type": "Identifier",
1543                            "name": "from",
1544                            "decorators": [],
1545                            "loc": {
1546                              "start": {
1547                                "line": 27,
1548                                "column": 15,
1549                                "program": "generics_recursive.ets"
1550                              },
1551                              "end": {
1552                                "line": 27,
1553                                "column": 19,
1554                                "program": "generics_recursive.ets"
1555                              }
1556                            }
1557                          },
1558                          "computed": false,
1559                          "optional": false,
1560                          "loc": {
1561                            "start": {
1562                              "line": 27,
1563                              "column": 9,
1564                              "program": "generics_recursive.ets"
1565                            },
1566                            "end": {
1567                              "line": 27,
1568                              "column": 19,
1569                              "program": "generics_recursive.ets"
1570                            }
1571                          }
1572                        },
1573                        "arguments": [
1574                          {
1575                            "type": "Identifier",
1576                            "name": "iter",
1577                            "decorators": [],
1578                            "loc": {
1579                              "start": {
1580                                "line": 27,
1581                                "column": 28,
1582                                "program": "generics_recursive.ets"
1583                              },
1584                              "end": {
1585                                "line": 27,
1586                                "column": 32,
1587                                "program": "generics_recursive.ets"
1588                              }
1589                            }
1590                          }
1591                        ],
1592                        "optional": false,
1593                        "typeParameters": {
1594                          "type": "TSTypeParameterInstantiation",
1595                          "params": [
1596                            {
1597                              "type": "ETSTuple",
1598                              "types": [
1599                                {
1600                                  "type": "ETSTypeReference",
1601                                  "part": {
1602                                    "type": "ETSTypeReferencePart",
1603                                    "name": {
1604                                      "type": "Identifier",
1605                                      "name": "K",
1606                                      "decorators": [],
1607                                      "loc": {
1608                                        "start": {
1609                                          "line": 27,
1610                                          "column": 21,
1611                                          "program": "generics_recursive.ets"
1612                                        },
1613                                        "end": {
1614                                          "line": 27,
1615                                          "column": 22,
1616                                          "program": "generics_recursive.ets"
1617                                        }
1618                                      }
1619                                    },
1620                                    "loc": {
1621                                      "start": {
1622                                        "line": 27,
1623                                        "column": 21,
1624                                        "program": "generics_recursive.ets"
1625                                      },
1626                                      "end": {
1627                                        "line": 27,
1628                                        "column": 23,
1629                                        "program": "generics_recursive.ets"
1630                                      }
1631                                    }
1632                                  },
1633                                  "loc": {
1634                                    "start": {
1635                                      "line": 27,
1636                                      "column": 21,
1637                                      "program": "generics_recursive.ets"
1638                                    },
1639                                    "end": {
1640                                      "line": 27,
1641                                      "column": 23,
1642                                      "program": "generics_recursive.ets"
1643                                    }
1644                                  }
1645                                },
1646                                {
1647                                  "type": "ETSTypeReference",
1648                                  "part": {
1649                                    "type": "ETSTypeReferencePart",
1650                                    "name": {
1651                                      "type": "Identifier",
1652                                      "name": "V",
1653                                      "decorators": [],
1654                                      "loc": {
1655                                        "start": {
1656                                          "line": 27,
1657                                          "column": 24,
1658                                          "program": "generics_recursive.ets"
1659                                        },
1660                                        "end": {
1661                                          "line": 27,
1662                                          "column": 25,
1663                                          "program": "generics_recursive.ets"
1664                                        }
1665                                      }
1666                                    },
1667                                    "loc": {
1668                                      "start": {
1669                                        "line": 27,
1670                                        "column": 24,
1671                                        "program": "generics_recursive.ets"
1672                                      },
1673                                      "end": {
1674                                        "line": 27,
1675                                        "column": 26,
1676                                        "program": "generics_recursive.ets"
1677                                      }
1678                                    }
1679                                  },
1680                                  "loc": {
1681                                    "start": {
1682                                      "line": 27,
1683                                      "column": 24,
1684                                      "program": "generics_recursive.ets"
1685                                    },
1686                                    "end": {
1687                                      "line": 27,
1688                                      "column": 26,
1689                                      "program": "generics_recursive.ets"
1690                                    }
1691                                  }
1692                                }
1693                              ],
1694                              "loc": {
1695                                "start": {
1696                                  "line": 27,
1697                                  "column": 20,
1698                                  "program": "generics_recursive.ets"
1699                                },
1700                                "end": {
1701                                  "line": 27,
1702                                  "column": 26,
1703                                  "program": "generics_recursive.ets"
1704                                }
1705                              }
1706                            }
1707                          ],
1708                          "loc": {
1709                            "start": {
1710                              "line": 27,
1711                              "column": 19,
1712                              "program": "generics_recursive.ets"
1713                            },
1714                            "end": {
1715                              "line": 27,
1716                              "column": 27,
1717                              "program": "generics_recursive.ets"
1718                            }
1719                          }
1720                        },
1721                        "loc": {
1722                          "start": {
1723                            "line": 27,
1724                            "column": 9,
1725                            "program": "generics_recursive.ets"
1726                          },
1727                          "end": {
1728                            "line": 27,
1729                            "column": 33,
1730                            "program": "generics_recursive.ets"
1731                          }
1732                        }
1733                      },
1734                      "loc": {
1735                        "start": {
1736                          "line": 27,
1737                          "column": 9,
1738                          "program": "generics_recursive.ets"
1739                        },
1740                        "end": {
1741                          "line": 27,
1742                          "column": 34,
1743                          "program": "generics_recursive.ets"
1744                        }
1745                      }
1746                    }
1747                  ],
1748                  "loc": {
1749                    "start": {
1750                      "line": 26,
1751                      "column": 61,
1752                      "program": "generics_recursive.ets"
1753                    },
1754                    "end": {
1755                      "line": 28,
1756                      "column": 6,
1757                      "program": "generics_recursive.ets"
1758                    }
1759                  }
1760                },
1761                "loc": {
1762                  "start": {
1763                    "line": 26,
1764                    "column": 16,
1765                    "program": "generics_recursive.ets"
1766                  },
1767                  "end": {
1768                    "line": 28,
1769                    "column": 6,
1770                    "program": "generics_recursive.ets"
1771                  }
1772                }
1773              },
1774              "loc": {
1775                "start": {
1776                  "line": 26,
1777                  "column": 16,
1778                  "program": "generics_recursive.ets"
1779                },
1780                "end": {
1781                  "line": 28,
1782                  "column": 6,
1783                  "program": "generics_recursive.ets"
1784                }
1785              }
1786            },
1787            "overloads": [],
1788            "decorators": [],
1789            "loc": {
1790              "start": {
1791                "line": 26,
1792                "column": 5,
1793                "program": "generics_recursive.ets"
1794              },
1795              "end": {
1796                "line": 28,
1797                "column": 6,
1798                "program": "generics_recursive.ets"
1799              }
1800            }
1801          }
1802        ],
1803        "loc": {
1804          "start": {
1805            "line": 25,
1806            "column": 15,
1807            "program": "generics_recursive.ets"
1808          },
1809          "end": {
1810            "line": 31,
1811            "column": 6,
1812            "program": "generics_recursive.ets"
1813          }
1814        }
1815      },
1816      "loc": {
1817        "start": {
1818          "line": 25,
1819          "column": 1,
1820          "program": "generics_recursive.ets"
1821        },
1822        "end": {
1823          "line": 31,
1824          "column": 6,
1825          "program": "generics_recursive.ets"
1826        }
1827      }
1828    },
1829    {
1830      "type": "ClassDeclaration",
1831      "definition": {
1832        "id": {
1833          "type": "Identifier",
1834          "name": "C",
1835          "decorators": [],
1836          "loc": {
1837            "start": {
1838              "line": 31,
1839              "column": 7,
1840              "program": "generics_recursive.ets"
1841            },
1842            "end": {
1843              "line": 31,
1844              "column": 8,
1845              "program": "generics_recursive.ets"
1846            }
1847          }
1848        },
1849        "typeParameters": {
1850          "type": "TSTypeParameterDeclaration",
1851          "params": [
1852            {
1853              "type": "TSTypeParameter",
1854              "name": {
1855                "type": "Identifier",
1856                "name": "T",
1857                "decorators": [],
1858                "loc": {
1859                  "start": {
1860                    "line": 31,
1861                    "column": 9,
1862                    "program": "generics_recursive.ets"
1863                  },
1864                  "end": {
1865                    "line": 31,
1866                    "column": 10,
1867                    "program": "generics_recursive.ets"
1868                  }
1869                }
1870              },
1871              "loc": {
1872                "start": {
1873                  "line": 31,
1874                  "column": 9,
1875                  "program": "generics_recursive.ets"
1876                },
1877                "end": {
1878                  "line": 31,
1879                  "column": 11,
1880                  "program": "generics_recursive.ets"
1881                }
1882              }
1883            }
1884          ],
1885          "loc": {
1886            "start": {
1887              "line": 31,
1888              "column": 8,
1889              "program": "generics_recursive.ets"
1890            },
1891            "end": {
1892              "line": 31,
1893              "column": 11,
1894              "program": "generics_recursive.ets"
1895            }
1896          }
1897        },
1898        "superClass": null,
1899        "implements": [],
1900        "body": [
1901          {
1902            "type": "MethodDefinition",
1903            "key": {
1904              "type": "Identifier",
1905              "name": "constructor",
1906              "decorators": [],
1907              "loc": {
1908                "start": {
1909                  "line": 31,
1910                  "column": 13,
1911                  "program": "generics_recursive.ets"
1912                },
1913                "end": {
1914                  "line": 31,
1915                  "column": 13,
1916                  "program": "generics_recursive.ets"
1917                }
1918              }
1919            },
1920            "kind": "constructor",
1921            "static": false,
1922            "optional": false,
1923            "computed": false,
1924            "value": {
1925              "type": "FunctionExpression",
1926              "function": {
1927                "type": "ScriptFunction",
1928                "id": {
1929                  "type": "Identifier",
1930                  "name": "constructor",
1931                  "decorators": [],
1932                  "loc": {
1933                    "start": {
1934                      "line": 31,
1935                      "column": 13,
1936                      "program": "generics_recursive.ets"
1937                    },
1938                    "end": {
1939                      "line": 31,
1940                      "column": 13,
1941                      "program": "generics_recursive.ets"
1942                    }
1943                  }
1944                },
1945                "generator": false,
1946                "async": false,
1947                "expression": false,
1948                "params": [],
1949                "body": {
1950                  "type": "BlockStatement",
1951                  "statements": [],
1952                  "loc": {
1953                    "start": {
1954                      "line": 31,
1955                      "column": 13,
1956                      "program": "generics_recursive.ets"
1957                    },
1958                    "end": {
1959                      "line": 31,
1960                      "column": 13,
1961                      "program": "generics_recursive.ets"
1962                    }
1963                  }
1964                },
1965                "loc": {
1966                  "start": {
1967                    "line": 31,
1968                    "column": 13,
1969                    "program": "generics_recursive.ets"
1970                  },
1971                  "end": {
1972                    "line": 31,
1973                    "column": 13,
1974                    "program": "generics_recursive.ets"
1975                  }
1976                }
1977              },
1978              "loc": {
1979                "start": {
1980                  "line": 31,
1981                  "column": 13,
1982                  "program": "generics_recursive.ets"
1983                },
1984                "end": {
1985                  "line": 31,
1986                  "column": 13,
1987                  "program": "generics_recursive.ets"
1988                }
1989              }
1990            },
1991            "overloads": [],
1992            "decorators": [],
1993            "loc": {
1994              "start": {
1995                "line": 1,
1996                "column": 1,
1997                "program": null
1998              },
1999              "end": {
2000                "line": 1,
2001                "column": 1,
2002                "program": null
2003              }
2004            }
2005          }
2006        ],
2007        "loc": {
2008          "start": {
2009            "line": 31,
2010            "column": 12,
2011            "program": "generics_recursive.ets"
2012          },
2013          "end": {
2014            "line": 33,
2015            "column": 9,
2016            "program": "generics_recursive.ets"
2017          }
2018        }
2019      },
2020      "loc": {
2021        "start": {
2022          "line": 31,
2023          "column": 1,
2024          "program": "generics_recursive.ets"
2025        },
2026        "end": {
2027          "line": 33,
2028          "column": 9,
2029          "program": "generics_recursive.ets"
2030        }
2031      }
2032    },
2033    {
2034      "type": "ClassDeclaration",
2035      "definition": {
2036        "id": {
2037          "type": "Identifier",
2038          "name": "M1",
2039          "decorators": [],
2040          "loc": {
2041            "start": {
2042              "line": 37,
2043              "column": 7,
2044              "program": "generics_recursive.ets"
2045            },
2046            "end": {
2047              "line": 37,
2048              "column": 9,
2049              "program": "generics_recursive.ets"
2050            }
2051          }
2052        },
2053        "typeParameters": {
2054          "type": "TSTypeParameterDeclaration",
2055          "params": [
2056            {
2057              "type": "TSTypeParameter",
2058              "name": {
2059                "type": "Identifier",
2060                "name": "K",
2061                "decorators": [],
2062                "loc": {
2063                  "start": {
2064                    "line": 37,
2065                    "column": 10,
2066                    "program": "generics_recursive.ets"
2067                  },
2068                  "end": {
2069                    "line": 37,
2070                    "column": 11,
2071                    "program": "generics_recursive.ets"
2072                  }
2073                }
2074              },
2075              "loc": {
2076                "start": {
2077                  "line": 37,
2078                  "column": 10,
2079                  "program": "generics_recursive.ets"
2080                },
2081                "end": {
2082                  "line": 37,
2083                  "column": 12,
2084                  "program": "generics_recursive.ets"
2085                }
2086              }
2087            },
2088            {
2089              "type": "TSTypeParameter",
2090              "name": {
2091                "type": "Identifier",
2092                "name": "V",
2093                "decorators": [],
2094                "loc": {
2095                  "start": {
2096                    "line": 37,
2097                    "column": 13,
2098                    "program": "generics_recursive.ets"
2099                  },
2100                  "end": {
2101                    "line": 37,
2102                    "column": 14,
2103                    "program": "generics_recursive.ets"
2104                  }
2105                }
2106              },
2107              "loc": {
2108                "start": {
2109                  "line": 37,
2110                  "column": 13,
2111                  "program": "generics_recursive.ets"
2112                },
2113                "end": {
2114                  "line": 37,
2115                  "column": 15,
2116                  "program": "generics_recursive.ets"
2117                }
2118              }
2119            }
2120          ],
2121          "loc": {
2122            "start": {
2123              "line": 37,
2124              "column": 9,
2125              "program": "generics_recursive.ets"
2126            },
2127            "end": {
2128              "line": 37,
2129              "column": 15,
2130              "program": "generics_recursive.ets"
2131            }
2132          }
2133        },
2134        "superClass": null,
2135        "implements": [],
2136        "body": [
2137          {
2138            "type": "MethodDefinition",
2139            "key": {
2140              "type": "Identifier",
2141              "name": "it",
2142              "decorators": [],
2143              "loc": {
2144                "start": {
2145                  "line": 38,
2146                  "column": 5,
2147                  "program": "generics_recursive.ets"
2148                },
2149                "end": {
2150                  "line": 38,
2151                  "column": 7,
2152                  "program": "generics_recursive.ets"
2153                }
2154              }
2155            },
2156            "kind": "method",
2157            "accessibility": "public",
2158            "static": false,
2159            "optional": false,
2160            "computed": false,
2161            "value": {
2162              "type": "FunctionExpression",
2163              "function": {
2164                "type": "ScriptFunction",
2165                "id": {
2166                  "type": "Identifier",
2167                  "name": "it",
2168                  "decorators": [],
2169                  "loc": {
2170                    "start": {
2171                      "line": 38,
2172                      "column": 5,
2173                      "program": "generics_recursive.ets"
2174                    },
2175                    "end": {
2176                      "line": 38,
2177                      "column": 7,
2178                      "program": "generics_recursive.ets"
2179                    }
2180                  }
2181                },
2182                "generator": false,
2183                "async": false,
2184                "expression": false,
2185                "params": [],
2186                "returnType": {
2187                  "type": "ETSTypeReference",
2188                  "part": {
2189                    "type": "ETSTypeReferencePart",
2190                    "name": {
2191                      "type": "Identifier",
2192                      "name": "C",
2193                      "decorators": [],
2194                      "loc": {
2195                        "start": {
2196                          "line": 38,
2197                          "column": 11,
2198                          "program": "generics_recursive.ets"
2199                        },
2200                        "end": {
2201                          "line": 38,
2202                          "column": 12,
2203                          "program": "generics_recursive.ets"
2204                        }
2205                      }
2206                    },
2207                    "typeParams": {
2208                      "type": "TSTypeParameterInstantiation",
2209                      "params": [
2210                        {
2211                          "type": "ETSTuple",
2212                          "types": [
2213                            {
2214                              "type": "ETSTypeReference",
2215                              "part": {
2216                                "type": "ETSTypeReferencePart",
2217                                "name": {
2218                                  "type": "Identifier",
2219                                  "name": "K",
2220                                  "decorators": [],
2221                                  "loc": {
2222                                    "start": {
2223                                      "line": 38,
2224                                      "column": 14,
2225                                      "program": "generics_recursive.ets"
2226                                    },
2227                                    "end": {
2228                                      "line": 38,
2229                                      "column": 15,
2230                                      "program": "generics_recursive.ets"
2231                                    }
2232                                  }
2233                                },
2234                                "loc": {
2235                                  "start": {
2236                                    "line": 38,
2237                                    "column": 14,
2238                                    "program": "generics_recursive.ets"
2239                                  },
2240                                  "end": {
2241                                    "line": 38,
2242                                    "column": 16,
2243                                    "program": "generics_recursive.ets"
2244                                  }
2245                                }
2246                              },
2247                              "loc": {
2248                                "start": {
2249                                  "line": 38,
2250                                  "column": 14,
2251                                  "program": "generics_recursive.ets"
2252                                },
2253                                "end": {
2254                                  "line": 38,
2255                                  "column": 16,
2256                                  "program": "generics_recursive.ets"
2257                                }
2258                              }
2259                            },
2260                            {
2261                              "type": "ETSTypeReference",
2262                              "part": {
2263                                "type": "ETSTypeReferencePart",
2264                                "name": {
2265                                  "type": "Identifier",
2266                                  "name": "V",
2267                                  "decorators": [],
2268                                  "loc": {
2269                                    "start": {
2270                                      "line": 38,
2271                                      "column": 17,
2272                                      "program": "generics_recursive.ets"
2273                                    },
2274                                    "end": {
2275                                      "line": 38,
2276                                      "column": 18,
2277                                      "program": "generics_recursive.ets"
2278                                    }
2279                                  }
2280                                },
2281                                "loc": {
2282                                  "start": {
2283                                    "line": 38,
2284                                    "column": 17,
2285                                    "program": "generics_recursive.ets"
2286                                  },
2287                                  "end": {
2288                                    "line": 38,
2289                                    "column": 19,
2290                                    "program": "generics_recursive.ets"
2291                                  }
2292                                }
2293                              },
2294                              "loc": {
2295                                "start": {
2296                                  "line": 38,
2297                                  "column": 17,
2298                                  "program": "generics_recursive.ets"
2299                                },
2300                                "end": {
2301                                  "line": 38,
2302                                  "column": 19,
2303                                  "program": "generics_recursive.ets"
2304                                }
2305                              }
2306                            }
2307                          ],
2308                          "loc": {
2309                            "start": {
2310                              "line": 38,
2311                              "column": 13,
2312                              "program": "generics_recursive.ets"
2313                            },
2314                            "end": {
2315                              "line": 38,
2316                              "column": 19,
2317                              "program": "generics_recursive.ets"
2318                            }
2319                          }
2320                        }
2321                      ],
2322                      "loc": {
2323                        "start": {
2324                          "line": 38,
2325                          "column": 12,
2326                          "program": "generics_recursive.ets"
2327                        },
2328                        "end": {
2329                          "line": 38,
2330                          "column": 20,
2331                          "program": "generics_recursive.ets"
2332                        }
2333                      }
2334                    },
2335                    "loc": {
2336                      "start": {
2337                        "line": 38,
2338                        "column": 11,
2339                        "program": "generics_recursive.ets"
2340                      },
2341                      "end": {
2342                        "line": 38,
2343                        "column": 22,
2344                        "program": "generics_recursive.ets"
2345                      }
2346                    }
2347                  },
2348                  "loc": {
2349                    "start": {
2350                      "line": 38,
2351                      "column": 11,
2352                      "program": "generics_recursive.ets"
2353                    },
2354                    "end": {
2355                      "line": 38,
2356                      "column": 22,
2357                      "program": "generics_recursive.ets"
2358                    }
2359                  }
2360                },
2361                "body": {
2362                  "type": "BlockStatement",
2363                  "statements": [
2364                    {
2365                      "type": "ReturnStatement",
2366                      "argument": {
2367                        "type": "CallExpression",
2368                        "callee": {
2369                          "type": "MemberExpression",
2370                          "object": {
2371                            "type": "ThisExpression",
2372                            "loc": {
2373                              "start": {
2374                                "line": 39,
2375                                "column": 16,
2376                                "program": "generics_recursive.ets"
2377                              },
2378                              "end": {
2379                                "line": 39,
2380                                "column": 20,
2381                                "program": "generics_recursive.ets"
2382                              }
2383                            }
2384                          },
2385                          "property": {
2386                            "type": "Identifier",
2387                            "name": "bar",
2388                            "decorators": [],
2389                            "loc": {
2390                              "start": {
2391                                "line": 39,
2392                                "column": 21,
2393                                "program": "generics_recursive.ets"
2394                              },
2395                              "end": {
2396                                "line": 39,
2397                                "column": 24,
2398                                "program": "generics_recursive.ets"
2399                              }
2400                            }
2401                          },
2402                          "computed": false,
2403                          "optional": false,
2404                          "loc": {
2405                            "start": {
2406                              "line": 39,
2407                              "column": 16,
2408                              "program": "generics_recursive.ets"
2409                            },
2410                            "end": {
2411                              "line": 39,
2412                              "column": 24,
2413                              "program": "generics_recursive.ets"
2414                            }
2415                          }
2416                        },
2417                        "arguments": [],
2418                        "optional": false,
2419                        "loc": {
2420                          "start": {
2421                            "line": 39,
2422                            "column": 16,
2423                            "program": "generics_recursive.ets"
2424                          },
2425                          "end": {
2426                            "line": 39,
2427                            "column": 26,
2428                            "program": "generics_recursive.ets"
2429                          }
2430                        }
2431                      },
2432                      "loc": {
2433                        "start": {
2434                          "line": 39,
2435                          "column": 9,
2436                          "program": "generics_recursive.ets"
2437                        },
2438                        "end": {
2439                          "line": 39,
2440                          "column": 27,
2441                          "program": "generics_recursive.ets"
2442                        }
2443                      }
2444                    }
2445                  ],
2446                  "loc": {
2447                    "start": {
2448                      "line": 38,
2449                      "column": 21,
2450                      "program": "generics_recursive.ets"
2451                    },
2452                    "end": {
2453                      "line": 40,
2454                      "column": 6,
2455                      "program": "generics_recursive.ets"
2456                    }
2457                  }
2458                },
2459                "loc": {
2460                  "start": {
2461                    "line": 38,
2462                    "column": 7,
2463                    "program": "generics_recursive.ets"
2464                  },
2465                  "end": {
2466                    "line": 40,
2467                    "column": 6,
2468                    "program": "generics_recursive.ets"
2469                  }
2470                }
2471              },
2472              "loc": {
2473                "start": {
2474                  "line": 38,
2475                  "column": 7,
2476                  "program": "generics_recursive.ets"
2477                },
2478                "end": {
2479                  "line": 40,
2480                  "column": 6,
2481                  "program": "generics_recursive.ets"
2482                }
2483              }
2484            },
2485            "overloads": [],
2486            "decorators": [],
2487            "loc": {
2488              "start": {
2489                "line": 38,
2490                "column": 5,
2491                "program": "generics_recursive.ets"
2492              },
2493              "end": {
2494                "line": 40,
2495                "column": 6,
2496                "program": "generics_recursive.ets"
2497              }
2498            }
2499          },
2500          {
2501            "type": "MethodDefinition",
2502            "key": {
2503              "type": "Identifier",
2504              "name": "bar",
2505              "decorators": [],
2506              "loc": {
2507                "start": {
2508                  "line": 41,
2509                  "column": 5,
2510                  "program": "generics_recursive.ets"
2511                },
2512                "end": {
2513                  "line": 41,
2514                  "column": 8,
2515                  "program": "generics_recursive.ets"
2516                }
2517              }
2518            },
2519            "kind": "method",
2520            "accessibility": "public",
2521            "static": false,
2522            "optional": false,
2523            "computed": false,
2524            "value": {
2525              "type": "FunctionExpression",
2526              "function": {
2527                "type": "ScriptFunction",
2528                "id": {
2529                  "type": "Identifier",
2530                  "name": "bar",
2531                  "decorators": [],
2532                  "loc": {
2533                    "start": {
2534                      "line": 41,
2535                      "column": 5,
2536                      "program": "generics_recursive.ets"
2537                    },
2538                    "end": {
2539                      "line": 41,
2540                      "column": 8,
2541                      "program": "generics_recursive.ets"
2542                    }
2543                  }
2544                },
2545                "generator": false,
2546                "async": false,
2547                "expression": false,
2548                "params": [],
2549                "returnType": {
2550                  "type": "ETSTypeReference",
2551                  "part": {
2552                    "type": "ETSTypeReferencePart",
2553                    "name": {
2554                      "type": "Identifier",
2555                      "name": "C",
2556                      "decorators": [],
2557                      "loc": {
2558                        "start": {
2559                          "line": 41,
2560                          "column": 12,
2561                          "program": "generics_recursive.ets"
2562                        },
2563                        "end": {
2564                          "line": 41,
2565                          "column": 13,
2566                          "program": "generics_recursive.ets"
2567                        }
2568                      }
2569                    },
2570                    "typeParams": {
2571                      "type": "TSTypeParameterInstantiation",
2572                      "params": [
2573                        {
2574                          "type": "ETSTuple",
2575                          "types": [
2576                            {
2577                              "type": "ETSTypeReference",
2578                              "part": {
2579                                "type": "ETSTypeReferencePart",
2580                                "name": {
2581                                  "type": "Identifier",
2582                                  "name": "K",
2583                                  "decorators": [],
2584                                  "loc": {
2585                                    "start": {
2586                                      "line": 41,
2587                                      "column": 15,
2588                                      "program": "generics_recursive.ets"
2589                                    },
2590                                    "end": {
2591                                      "line": 41,
2592                                      "column": 16,
2593                                      "program": "generics_recursive.ets"
2594                                    }
2595                                  }
2596                                },
2597                                "loc": {
2598                                  "start": {
2599                                    "line": 41,
2600                                    "column": 15,
2601                                    "program": "generics_recursive.ets"
2602                                  },
2603                                  "end": {
2604                                    "line": 41,
2605                                    "column": 17,
2606                                    "program": "generics_recursive.ets"
2607                                  }
2608                                }
2609                              },
2610                              "loc": {
2611                                "start": {
2612                                  "line": 41,
2613                                  "column": 15,
2614                                  "program": "generics_recursive.ets"
2615                                },
2616                                "end": {
2617                                  "line": 41,
2618                                  "column": 17,
2619                                  "program": "generics_recursive.ets"
2620                                }
2621                              }
2622                            },
2623                            {
2624                              "type": "ETSTypeReference",
2625                              "part": {
2626                                "type": "ETSTypeReferencePart",
2627                                "name": {
2628                                  "type": "Identifier",
2629                                  "name": "V",
2630                                  "decorators": [],
2631                                  "loc": {
2632                                    "start": {
2633                                      "line": 41,
2634                                      "column": 18,
2635                                      "program": "generics_recursive.ets"
2636                                    },
2637                                    "end": {
2638                                      "line": 41,
2639                                      "column": 19,
2640                                      "program": "generics_recursive.ets"
2641                                    }
2642                                  }
2643                                },
2644                                "loc": {
2645                                  "start": {
2646                                    "line": 41,
2647                                    "column": 18,
2648                                    "program": "generics_recursive.ets"
2649                                  },
2650                                  "end": {
2651                                    "line": 41,
2652                                    "column": 20,
2653                                    "program": "generics_recursive.ets"
2654                                  }
2655                                }
2656                              },
2657                              "loc": {
2658                                "start": {
2659                                  "line": 41,
2660                                  "column": 18,
2661                                  "program": "generics_recursive.ets"
2662                                },
2663                                "end": {
2664                                  "line": 41,
2665                                  "column": 20,
2666                                  "program": "generics_recursive.ets"
2667                                }
2668                              }
2669                            }
2670                          ],
2671                          "loc": {
2672                            "start": {
2673                              "line": 41,
2674                              "column": 14,
2675                              "program": "generics_recursive.ets"
2676                            },
2677                            "end": {
2678                              "line": 41,
2679                              "column": 20,
2680                              "program": "generics_recursive.ets"
2681                            }
2682                          }
2683                        }
2684                      ],
2685                      "loc": {
2686                        "start": {
2687                          "line": 41,
2688                          "column": 13,
2689                          "program": "generics_recursive.ets"
2690                        },
2691                        "end": {
2692                          "line": 41,
2693                          "column": 21,
2694                          "program": "generics_recursive.ets"
2695                        }
2696                      }
2697                    },
2698                    "loc": {
2699                      "start": {
2700                        "line": 41,
2701                        "column": 12,
2702                        "program": "generics_recursive.ets"
2703                      },
2704                      "end": {
2705                        "line": 41,
2706                        "column": 23,
2707                        "program": "generics_recursive.ets"
2708                      }
2709                    }
2710                  },
2711                  "loc": {
2712                    "start": {
2713                      "line": 41,
2714                      "column": 12,
2715                      "program": "generics_recursive.ets"
2716                    },
2717                    "end": {
2718                      "line": 41,
2719                      "column": 23,
2720                      "program": "generics_recursive.ets"
2721                    }
2722                  }
2723                },
2724                "body": {
2725                  "type": "BlockStatement",
2726                  "statements": [
2727                    {
2728                      "type": "ReturnStatement",
2729                      "argument": {
2730                        "type": "CallExpression",
2731                        "callee": {
2732                          "type": "Identifier",
2733                          "name": "mp",
2734                          "decorators": [],
2735                          "loc": {
2736                            "start": {
2737                              "line": 42,
2738                              "column": 16,
2739                              "program": "generics_recursive.ets"
2740                            },
2741                            "end": {
2742                              "line": 42,
2743                              "column": 18,
2744                              "program": "generics_recursive.ets"
2745                            }
2746                          }
2747                        },
2748                        "arguments": [],
2749                        "optional": false,
2750                        "typeParameters": {
2751                          "type": "TSTypeParameterInstantiation",
2752                          "params": [
2753                            {
2754                              "type": "ETSTuple",
2755                              "types": [
2756                                {
2757                                  "type": "ETSTypeReference",
2758                                  "part": {
2759                                    "type": "ETSTypeReferencePart",
2760                                    "name": {
2761                                      "type": "Identifier",
2762                                      "name": "K",
2763                                      "decorators": [],
2764                                      "loc": {
2765                                        "start": {
2766                                          "line": 42,
2767                                          "column": 20,
2768                                          "program": "generics_recursive.ets"
2769                                        },
2770                                        "end": {
2771                                          "line": 42,
2772                                          "column": 21,
2773                                          "program": "generics_recursive.ets"
2774                                        }
2775                                      }
2776                                    },
2777                                    "loc": {
2778                                      "start": {
2779                                        "line": 42,
2780                                        "column": 20,
2781                                        "program": "generics_recursive.ets"
2782                                      },
2783                                      "end": {
2784                                        "line": 42,
2785                                        "column": 22,
2786                                        "program": "generics_recursive.ets"
2787                                      }
2788                                    }
2789                                  },
2790                                  "loc": {
2791                                    "start": {
2792                                      "line": 42,
2793                                      "column": 20,
2794                                      "program": "generics_recursive.ets"
2795                                    },
2796                                    "end": {
2797                                      "line": 42,
2798                                      "column": 22,
2799                                      "program": "generics_recursive.ets"
2800                                    }
2801                                  }
2802                                },
2803                                {
2804                                  "type": "ETSTypeReference",
2805                                  "part": {
2806                                    "type": "ETSTypeReferencePart",
2807                                    "name": {
2808                                      "type": "Identifier",
2809                                      "name": "V",
2810                                      "decorators": [],
2811                                      "loc": {
2812                                        "start": {
2813                                          "line": 42,
2814                                          "column": 23,
2815                                          "program": "generics_recursive.ets"
2816                                        },
2817                                        "end": {
2818                                          "line": 42,
2819                                          "column": 24,
2820                                          "program": "generics_recursive.ets"
2821                                        }
2822                                      }
2823                                    },
2824                                    "loc": {
2825                                      "start": {
2826                                        "line": 42,
2827                                        "column": 23,
2828                                        "program": "generics_recursive.ets"
2829                                      },
2830                                      "end": {
2831                                        "line": 42,
2832                                        "column": 25,
2833                                        "program": "generics_recursive.ets"
2834                                      }
2835                                    }
2836                                  },
2837                                  "loc": {
2838                                    "start": {
2839                                      "line": 42,
2840                                      "column": 23,
2841                                      "program": "generics_recursive.ets"
2842                                    },
2843                                    "end": {
2844                                      "line": 42,
2845                                      "column": 25,
2846                                      "program": "generics_recursive.ets"
2847                                    }
2848                                  }
2849                                }
2850                              ],
2851                              "loc": {
2852                                "start": {
2853                                  "line": 42,
2854                                  "column": 19,
2855                                  "program": "generics_recursive.ets"
2856                                },
2857                                "end": {
2858                                  "line": 42,
2859                                  "column": 25,
2860                                  "program": "generics_recursive.ets"
2861                                }
2862                              }
2863                            }
2864                          ],
2865                          "loc": {
2866                            "start": {
2867                              "line": 42,
2868                              "column": 18,
2869                              "program": "generics_recursive.ets"
2870                            },
2871                            "end": {
2872                              "line": 42,
2873                              "column": 26,
2874                              "program": "generics_recursive.ets"
2875                            }
2876                          }
2877                        },
2878                        "loc": {
2879                          "start": {
2880                            "line": 42,
2881                            "column": 16,
2882                            "program": "generics_recursive.ets"
2883                          },
2884                          "end": {
2885                            "line": 42,
2886                            "column": 28,
2887                            "program": "generics_recursive.ets"
2888                          }
2889                        }
2890                      },
2891                      "loc": {
2892                        "start": {
2893                          "line": 42,
2894                          "column": 9,
2895                          "program": "generics_recursive.ets"
2896                        },
2897                        "end": {
2898                          "line": 42,
2899                          "column": 29,
2900                          "program": "generics_recursive.ets"
2901                        }
2902                      }
2903                    }
2904                  ],
2905                  "loc": {
2906                    "start": {
2907                      "line": 41,
2908                      "column": 22,
2909                      "program": "generics_recursive.ets"
2910                    },
2911                    "end": {
2912                      "line": 43,
2913                      "column": 6,
2914                      "program": "generics_recursive.ets"
2915                    }
2916                  }
2917                },
2918                "loc": {
2919                  "start": {
2920                    "line": 41,
2921                    "column": 8,
2922                    "program": "generics_recursive.ets"
2923                  },
2924                  "end": {
2925                    "line": 43,
2926                    "column": 6,
2927                    "program": "generics_recursive.ets"
2928                  }
2929                }
2930              },
2931              "loc": {
2932                "start": {
2933                  "line": 41,
2934                  "column": 8,
2935                  "program": "generics_recursive.ets"
2936                },
2937                "end": {
2938                  "line": 43,
2939                  "column": 6,
2940                  "program": "generics_recursive.ets"
2941                }
2942              }
2943            },
2944            "overloads": [],
2945            "decorators": [],
2946            "loc": {
2947              "start": {
2948                "line": 41,
2949                "column": 5,
2950                "program": "generics_recursive.ets"
2951              },
2952              "end": {
2953                "line": 43,
2954                "column": 6,
2955                "program": "generics_recursive.ets"
2956              }
2957            }
2958          },
2959          {
2960            "type": "MethodDefinition",
2961            "key": {
2962              "type": "Identifier",
2963              "name": "constructor",
2964              "decorators": [],
2965              "loc": {
2966                "start": {
2967                  "line": 37,
2968                  "column": 17,
2969                  "program": "generics_recursive.ets"
2970                },
2971                "end": {
2972                  "line": 37,
2973                  "column": 17,
2974                  "program": "generics_recursive.ets"
2975                }
2976              }
2977            },
2978            "kind": "constructor",
2979            "static": false,
2980            "optional": false,
2981            "computed": false,
2982            "value": {
2983              "type": "FunctionExpression",
2984              "function": {
2985                "type": "ScriptFunction",
2986                "id": {
2987                  "type": "Identifier",
2988                  "name": "constructor",
2989                  "decorators": [],
2990                  "loc": {
2991                    "start": {
2992                      "line": 37,
2993                      "column": 17,
2994                      "program": "generics_recursive.ets"
2995                    },
2996                    "end": {
2997                      "line": 37,
2998                      "column": 17,
2999                      "program": "generics_recursive.ets"
3000                    }
3001                  }
3002                },
3003                "generator": false,
3004                "async": false,
3005                "expression": false,
3006                "params": [],
3007                "body": {
3008                  "type": "BlockStatement",
3009                  "statements": [],
3010                  "loc": {
3011                    "start": {
3012                      "line": 37,
3013                      "column": 17,
3014                      "program": "generics_recursive.ets"
3015                    },
3016                    "end": {
3017                      "line": 37,
3018                      "column": 17,
3019                      "program": "generics_recursive.ets"
3020                    }
3021                  }
3022                },
3023                "loc": {
3024                  "start": {
3025                    "line": 37,
3026                    "column": 17,
3027                    "program": "generics_recursive.ets"
3028                  },
3029                  "end": {
3030                    "line": 37,
3031                    "column": 17,
3032                    "program": "generics_recursive.ets"
3033                  }
3034                }
3035              },
3036              "loc": {
3037                "start": {
3038                  "line": 37,
3039                  "column": 17,
3040                  "program": "generics_recursive.ets"
3041                },
3042                "end": {
3043                  "line": 37,
3044                  "column": 17,
3045                  "program": "generics_recursive.ets"
3046                }
3047              }
3048            },
3049            "overloads": [],
3050            "decorators": [],
3051            "loc": {
3052              "start": {
3053                "line": 1,
3054                "column": 1,
3055                "program": null
3056              },
3057              "end": {
3058                "line": 1,
3059                "column": 1,
3060                "program": null
3061              }
3062            }
3063          }
3064        ],
3065        "loc": {
3066          "start": {
3067            "line": 37,
3068            "column": 16,
3069            "program": "generics_recursive.ets"
3070          },
3071          "end": {
3072            "line": 45,
3073            "column": 1,
3074            "program": "generics_recursive.ets"
3075          }
3076        }
3077      },
3078      "loc": {
3079        "start": {
3080          "line": 37,
3081          "column": 1,
3082          "program": "generics_recursive.ets"
3083        },
3084        "end": {
3085          "line": 45,
3086          "column": 1,
3087          "program": "generics_recursive.ets"
3088        }
3089      }
3090    },
3091    {
3092      "type": "ClassDeclaration",
3093      "definition": {
3094        "id": {
3095          "type": "Identifier",
3096          "name": "ETSGLOBAL",
3097          "decorators": [],
3098          "loc": {
3099            "start": {
3100              "line": 1,
3101              "column": 1,
3102              "program": "generics_recursive.ets"
3103            },
3104            "end": {
3105              "line": 1,
3106              "column": 1,
3107              "program": "generics_recursive.ets"
3108            }
3109          }
3110        },
3111        "superClass": null,
3112        "implements": [],
3113        "body": [
3114          {
3115            "type": "MethodDefinition",
3116            "key": {
3117              "type": "Identifier",
3118              "name": "main",
3119              "decorators": [],
3120              "loc": {
3121                "start": {
3122                  "line": 1,
3123                  "column": 1,
3124                  "program": null
3125                },
3126                "end": {
3127                  "line": 1,
3128                  "column": 1,
3129                  "program": null
3130                }
3131              }
3132            },
3133            "kind": "method",
3134            "accessibility": "public",
3135            "static": true,
3136            "optional": false,
3137            "computed": false,
3138            "value": {
3139              "type": "FunctionExpression",
3140              "function": {
3141                "type": "ScriptFunction",
3142                "id": {
3143                  "type": "Identifier",
3144                  "name": "main",
3145                  "decorators": [],
3146                  "loc": {
3147                    "start": {
3148                      "line": 1,
3149                      "column": 1,
3150                      "program": null
3151                    },
3152                    "end": {
3153                      "line": 1,
3154                      "column": 1,
3155                      "program": null
3156                    }
3157                  }
3158                },
3159                "generator": false,
3160                "async": false,
3161                "expression": false,
3162                "params": [],
3163                "body": {
3164                  "type": "BlockStatement",
3165                  "statements": [],
3166                  "loc": {
3167                    "start": {
3168                      "line": 1,
3169                      "column": 1,
3170                      "program": null
3171                    },
3172                    "end": {
3173                      "line": 1,
3174                      "column": 1,
3175                      "program": null
3176                    }
3177                  }
3178                },
3179                "loc": {
3180                  "start": {
3181                    "line": 1,
3182                    "column": 1,
3183                    "program": null
3184                  },
3185                  "end": {
3186                    "line": 1,
3187                    "column": 1,
3188                    "program": null
3189                  }
3190                }
3191              },
3192              "loc": {
3193                "start": {
3194                  "line": 1,
3195                  "column": 1,
3196                  "program": null
3197                },
3198                "end": {
3199                  "line": 1,
3200                  "column": 1,
3201                  "program": null
3202                }
3203              }
3204            },
3205            "overloads": [],
3206            "decorators": [],
3207            "loc": {
3208              "start": {
3209                "line": 1,
3210                "column": 1,
3211                "program": "generics_recursive.ets"
3212              },
3213              "end": {
3214                "line": 1,
3215                "column": 1,
3216                "program": "generics_recursive.ets"
3217              }
3218            }
3219          },
3220          {
3221            "type": "MethodDefinition",
3222            "key": {
3223              "type": "Identifier",
3224              "name": "_$init$_",
3225              "decorators": [],
3226              "loc": {
3227                "start": {
3228                  "line": 1,
3229                  "column": 1,
3230                  "program": null
3231                },
3232                "end": {
3233                  "line": 1,
3234                  "column": 1,
3235                  "program": null
3236                }
3237              }
3238            },
3239            "kind": "method",
3240            "accessibility": "public",
3241            "static": true,
3242            "optional": false,
3243            "computed": false,
3244            "value": {
3245              "type": "FunctionExpression",
3246              "function": {
3247                "type": "ScriptFunction",
3248                "id": {
3249                  "type": "Identifier",
3250                  "name": "_$init$_",
3251                  "decorators": [],
3252                  "loc": {
3253                    "start": {
3254                      "line": 1,
3255                      "column": 1,
3256                      "program": null
3257                    },
3258                    "end": {
3259                      "line": 1,
3260                      "column": 1,
3261                      "program": null
3262                    }
3263                  }
3264                },
3265                "generator": false,
3266                "async": false,
3267                "expression": false,
3268                "params": [],
3269                "body": {
3270                  "type": "BlockStatement",
3271                  "statements": [],
3272                  "loc": {
3273                    "start": {
3274                      "line": 1,
3275                      "column": 1,
3276                      "program": null
3277                    },
3278                    "end": {
3279                      "line": 1,
3280                      "column": 1,
3281                      "program": null
3282                    }
3283                  }
3284                },
3285                "loc": {
3286                  "start": {
3287                    "line": 1,
3288                    "column": 1,
3289                    "program": null
3290                  },
3291                  "end": {
3292                    "line": 1,
3293                    "column": 1,
3294                    "program": null
3295                  }
3296                }
3297              },
3298              "loc": {
3299                "start": {
3300                  "line": 1,
3301                  "column": 1,
3302                  "program": null
3303                },
3304                "end": {
3305                  "line": 1,
3306                  "column": 1,
3307                  "program": null
3308                }
3309              }
3310            },
3311            "overloads": [],
3312            "decorators": [],
3313            "loc": {
3314              "start": {
3315                "line": 1,
3316                "column": 1,
3317                "program": "generics_recursive.ets"
3318              },
3319              "end": {
3320                "line": 1,
3321                "column": 1,
3322                "program": "generics_recursive.ets"
3323              }
3324            }
3325          },
3326          {
3327            "type": "MethodDefinition",
3328            "key": {
3329              "type": "Identifier",
3330              "name": "mp",
3331              "decorators": [],
3332              "loc": {
3333                "start": {
3334                  "line": 33,
3335                  "column": 10,
3336                  "program": "generics_recursive.ets"
3337                },
3338                "end": {
3339                  "line": 33,
3340                  "column": 12,
3341                  "program": "generics_recursive.ets"
3342                }
3343              }
3344            },
3345            "kind": "method",
3346            "accessibility": "public",
3347            "static": true,
3348            "optional": false,
3349            "computed": false,
3350            "value": {
3351              "type": "FunctionExpression",
3352              "function": {
3353                "type": "ScriptFunction",
3354                "id": {
3355                  "type": "Identifier",
3356                  "name": "mp",
3357                  "decorators": [],
3358                  "loc": {
3359                    "start": {
3360                      "line": 33,
3361                      "column": 10,
3362                      "program": "generics_recursive.ets"
3363                    },
3364                    "end": {
3365                      "line": 33,
3366                      "column": 12,
3367                      "program": "generics_recursive.ets"
3368                    }
3369                  }
3370                },
3371                "generator": false,
3372                "async": false,
3373                "expression": false,
3374                "params": [],
3375                "returnType": {
3376                  "type": "ETSTypeReference",
3377                  "part": {
3378                    "type": "ETSTypeReferencePart",
3379                    "name": {
3380                      "type": "Identifier",
3381                      "name": "C",
3382                      "decorators": [],
3383                      "loc": {
3384                        "start": {
3385                          "line": 33,
3386                          "column": 19,
3387                          "program": "generics_recursive.ets"
3388                        },
3389                        "end": {
3390                          "line": 33,
3391                          "column": 20,
3392                          "program": "generics_recursive.ets"
3393                        }
3394                      }
3395                    },
3396                    "typeParams": {
3397                      "type": "TSTypeParameterInstantiation",
3398                      "params": [
3399                        {
3400                          "type": "ETSTypeReference",
3401                          "part": {
3402                            "type": "ETSTypeReferencePart",
3403                            "name": {
3404                              "type": "Identifier",
3405                              "name": "T",
3406                              "decorators": [],
3407                              "loc": {
3408                                "start": {
3409                                  "line": 33,
3410                                  "column": 21,
3411                                  "program": "generics_recursive.ets"
3412                                },
3413                                "end": {
3414                                  "line": 33,
3415                                  "column": 22,
3416                                  "program": "generics_recursive.ets"
3417                                }
3418                              }
3419                            },
3420                            "loc": {
3421                              "start": {
3422                                "line": 33,
3423                                "column": 21,
3424                                "program": "generics_recursive.ets"
3425                              },
3426                              "end": {
3427                                "line": 33,
3428                                "column": 23,
3429                                "program": "generics_recursive.ets"
3430                              }
3431                            }
3432                          },
3433                          "loc": {
3434                            "start": {
3435                              "line": 33,
3436                              "column": 21,
3437                              "program": "generics_recursive.ets"
3438                            },
3439                            "end": {
3440                              "line": 33,
3441                              "column": 23,
3442                              "program": "generics_recursive.ets"
3443                            }
3444                          }
3445                        }
3446                      ],
3447                      "loc": {
3448                        "start": {
3449                          "line": 33,
3450                          "column": 20,
3451                          "program": "generics_recursive.ets"
3452                        },
3453                        "end": {
3454                          "line": 33,
3455                          "column": 23,
3456                          "program": "generics_recursive.ets"
3457                        }
3458                      }
3459                    },
3460                    "loc": {
3461                      "start": {
3462                        "line": 33,
3463                        "column": 19,
3464                        "program": "generics_recursive.ets"
3465                      },
3466                      "end": {
3467                        "line": 33,
3468                        "column": 25,
3469                        "program": "generics_recursive.ets"
3470                      }
3471                    }
3472                  },
3473                  "loc": {
3474                    "start": {
3475                      "line": 33,
3476                      "column": 19,
3477                      "program": "generics_recursive.ets"
3478                    },
3479                    "end": {
3480                      "line": 33,
3481                      "column": 25,
3482                      "program": "generics_recursive.ets"
3483                    }
3484                  }
3485                },
3486                "typeParameters": {
3487                  "type": "TSTypeParameterDeclaration",
3488                  "params": [
3489                    {
3490                      "type": "TSTypeParameter",
3491                      "name": {
3492                        "type": "Identifier",
3493                        "name": "T",
3494                        "decorators": [],
3495                        "loc": {
3496                          "start": {
3497                            "line": 33,
3498                            "column": 13,
3499                            "program": "generics_recursive.ets"
3500                          },
3501                          "end": {
3502                            "line": 33,
3503                            "column": 14,
3504                            "program": "generics_recursive.ets"
3505                          }
3506                        }
3507                      },
3508                      "loc": {
3509                        "start": {
3510                          "line": 33,
3511                          "column": 13,
3512                          "program": "generics_recursive.ets"
3513                        },
3514                        "end": {
3515                          "line": 33,
3516                          "column": 15,
3517                          "program": "generics_recursive.ets"
3518                        }
3519                      }
3520                    }
3521                  ],
3522                  "loc": {
3523                    "start": {
3524                      "line": 33,
3525                      "column": 12,
3526                      "program": "generics_recursive.ets"
3527                    },
3528                    "end": {
3529                      "line": 33,
3530                      "column": 15,
3531                      "program": "generics_recursive.ets"
3532                    }
3533                  }
3534                },
3535                "body": {
3536                  "type": "BlockStatement",
3537                  "statements": [
3538                    {
3539                      "type": "ReturnStatement",
3540                      "argument": {
3541                        "type": "ETSNewClassInstanceExpression",
3542                        "typeReference": {
3543                          "type": "ETSTypeReference",
3544                          "part": {
3545                            "type": "ETSTypeReferencePart",
3546                            "name": {
3547                              "type": "Identifier",
3548                              "name": "C",
3549                              "decorators": [],
3550                              "loc": {
3551                                "start": {
3552                                  "line": 34,
3553                                  "column": 16,
3554                                  "program": "generics_recursive.ets"
3555                                },
3556                                "end": {
3557                                  "line": 34,
3558                                  "column": 17,
3559                                  "program": "generics_recursive.ets"
3560                                }
3561                              }
3562                            },
3563                            "typeParams": {
3564                              "type": "TSTypeParameterInstantiation",
3565                              "params": [
3566                                {
3567                                  "type": "ETSTypeReference",
3568                                  "part": {
3569                                    "type": "ETSTypeReferencePart",
3570                                    "name": {
3571                                      "type": "Identifier",
3572                                      "name": "T",
3573                                      "decorators": [],
3574                                      "loc": {
3575                                        "start": {
3576                                          "line": 34,
3577                                          "column": 18,
3578                                          "program": "generics_recursive.ets"
3579                                        },
3580                                        "end": {
3581                                          "line": 34,
3582                                          "column": 19,
3583                                          "program": "generics_recursive.ets"
3584                                        }
3585                                      }
3586                                    },
3587                                    "loc": {
3588                                      "start": {
3589                                        "line": 34,
3590                                        "column": 18,
3591                                        "program": "generics_recursive.ets"
3592                                      },
3593                                      "end": {
3594                                        "line": 34,
3595                                        "column": 20,
3596                                        "program": "generics_recursive.ets"
3597                                      }
3598                                    }
3599                                  },
3600                                  "loc": {
3601                                    "start": {
3602                                      "line": 34,
3603                                      "column": 18,
3604                                      "program": "generics_recursive.ets"
3605                                    },
3606                                    "end": {
3607                                      "line": 34,
3608                                      "column": 20,
3609                                      "program": "generics_recursive.ets"
3610                                    }
3611                                  }
3612                                }
3613                              ],
3614                              "loc": {
3615                                "start": {
3616                                  "line": 34,
3617                                  "column": 17,
3618                                  "program": "generics_recursive.ets"
3619                                },
3620                                "end": {
3621                                  "line": 34,
3622                                  "column": 20,
3623                                  "program": "generics_recursive.ets"
3624                                }
3625                              }
3626                            },
3627                            "loc": {
3628                              "start": {
3629                                "line": 34,
3630                                "column": 16,
3631                                "program": "generics_recursive.ets"
3632                              },
3633                              "end": {
3634                                "line": 34,
3635                                "column": 21,
3636                                "program": "generics_recursive.ets"
3637                              }
3638                            }
3639                          },
3640                          "loc": {
3641                            "start": {
3642                              "line": 34,
3643                              "column": 16,
3644                              "program": "generics_recursive.ets"
3645                            },
3646                            "end": {
3647                              "line": 34,
3648                              "column": 21,
3649                              "program": "generics_recursive.ets"
3650                            }
3651                          }
3652                        },
3653                        "arguments": [],
3654                        "loc": {
3655                          "start": {
3656                            "line": 34,
3657                            "column": 12,
3658                            "program": "generics_recursive.ets"
3659                          },
3660                          "end": {
3661                            "line": 34,
3662                            "column": 23,
3663                            "program": "generics_recursive.ets"
3664                          }
3665                        }
3666                      },
3667                      "loc": {
3668                        "start": {
3669                          "line": 34,
3670                          "column": 5,
3671                          "program": "generics_recursive.ets"
3672                        },
3673                        "end": {
3674                          "line": 34,
3675                          "column": 23,
3676                          "program": "generics_recursive.ets"
3677                        }
3678                      }
3679                    }
3680                  ],
3681                  "loc": {
3682                    "start": {
3683                      "line": 33,
3684                      "column": 24,
3685                      "program": "generics_recursive.ets"
3686                    },
3687                    "end": {
3688                      "line": 35,
3689                      "column": 2,
3690                      "program": "generics_recursive.ets"
3691                    }
3692                  }
3693                },
3694                "loc": {
3695                  "start": {
3696                    "line": 33,
3697                    "column": 10,
3698                    "program": "generics_recursive.ets"
3699                  },
3700                  "end": {
3701                    "line": 35,
3702                    "column": 2,
3703                    "program": "generics_recursive.ets"
3704                  }
3705                }
3706              },
3707              "loc": {
3708                "start": {
3709                  "line": 33,
3710                  "column": 10,
3711                  "program": "generics_recursive.ets"
3712                },
3713                "end": {
3714                  "line": 35,
3715                  "column": 2,
3716                  "program": "generics_recursive.ets"
3717                }
3718              }
3719            },
3720            "overloads": [],
3721            "decorators": [],
3722            "loc": {
3723              "start": {
3724                "line": 33,
3725                "column": 1,
3726                "program": "generics_recursive.ets"
3727              },
3728              "end": {
3729                "line": 35,
3730                "column": 2,
3731                "program": "generics_recursive.ets"
3732              }
3733            }
3734          }
3735        ],
3736        "loc": {
3737          "start": {
3738            "line": 1,
3739            "column": 1,
3740            "program": "generics_recursive.ets"
3741          },
3742          "end": {
3743            "line": 1,
3744            "column": 1,
3745            "program": "generics_recursive.ets"
3746          }
3747        }
3748      },
3749      "loc": {
3750        "start": {
3751          "line": 1,
3752          "column": 1,
3753          "program": "generics_recursive.ets"
3754        },
3755        "end": {
3756          "line": 1,
3757          "column": 1,
3758          "program": "generics_recursive.ets"
3759        }
3760      }
3761    }
3762  ],
3763  "loc": {
3764    "start": {
3765      "line": 1,
3766      "column": 1,
3767      "program": "generics_recursive.ets"
3768    },
3769    "end": {
3770      "line": 45,
3771      "column": 1,
3772      "program": "generics_recursive.ets"
3773    }
3774  }
3775}
3776