1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "TSInterfaceDeclaration",
6      "body": {
7        "type": "TSInterfaceBody",
8        "body": [
9          {
10            "type": "TSPropertySignature",
11            "computed": false,
12            "optional": false,
13            "readonly": false,
14            "key": {
15              "type": "Identifier",
16              "name": "a",
17              "decorators": [],
18              "loc": {
19                "start": {
20                  "line": 18,
21                  "column": 5
22                },
23                "end": {
24                  "line": 18,
25                  "column": 6
26                }
27              }
28            },
29            "typeAnnotation": {
30              "type": "TSTypeReference",
31              "typeName": {
32                "type": "Identifier",
33                "name": "B",
34                "decorators": [],
35                "loc": {
36                  "start": {
37                    "line": 18,
38                    "column": 8
39                  },
40                  "end": {
41                    "line": 18,
42                    "column": 9
43                  }
44                }
45              },
46              "loc": {
47                "start": {
48                  "line": 18,
49                  "column": 8
50                },
51                "end": {
52                  "line": 18,
53                  "column": 9
54                }
55              }
56            },
57            "loc": {
58              "start": {
59                "line": 18,
60                "column": 5
61              },
62              "end": {
63                "line": 18,
64                "column": 10
65              }
66            }
67          },
68          {
69            "type": "TSPropertySignature",
70            "computed": false,
71            "optional": false,
72            "readonly": false,
73            "key": {
74              "type": "Identifier",
75              "name": "b",
76              "decorators": [],
77              "loc": {
78                "start": {
79                  "line": 19,
80                  "column": 5
81                },
82                "end": {
83                  "line": 19,
84                  "column": 6
85                }
86              }
87            },
88            "typeAnnotation": {
89              "type": "TSTypeReference",
90              "typeName": {
91                "type": "Identifier",
92                "name": "A",
93                "decorators": [],
94                "loc": {
95                  "start": {
96                    "line": 19,
97                    "column": 8
98                  },
99                  "end": {
100                    "line": 19,
101                    "column": 9
102                  }
103                }
104              },
105              "loc": {
106                "start": {
107                  "line": 19,
108                  "column": 8
109                },
110                "end": {
111                  "line": 19,
112                  "column": 9
113                }
114              }
115            },
116            "loc": {
117              "start": {
118                "line": 19,
119                "column": 5
120              },
121              "end": {
122                "line": 19,
123                "column": 10
124              }
125            }
126          }
127        ],
128        "loc": {
129          "start": {
130            "line": 17,
131            "column": 13
132          },
133          "end": {
134            "line": 20,
135            "column": 2
136          }
137        }
138      },
139      "id": {
140        "type": "Identifier",
141        "name": "A",
142        "decorators": [],
143        "loc": {
144          "start": {
145            "line": 17,
146            "column": 11
147          },
148          "end": {
149            "line": 17,
150            "column": 12
151          }
152        }
153      },
154      "extends": [],
155      "loc": {
156        "start": {
157          "line": 17,
158          "column": 1
159        },
160        "end": {
161          "line": 20,
162          "column": 2
163        }
164      }
165    },
166    {
167      "type": "TSInterfaceDeclaration",
168      "body": {
169        "type": "TSInterfaceBody",
170        "body": [
171          {
172            "type": "TSPropertySignature",
173            "computed": false,
174            "optional": false,
175            "readonly": false,
176            "key": {
177              "type": "Identifier",
178              "name": "c",
179              "decorators": [],
180              "loc": {
181                "start": {
182                  "line": 23,
183                  "column": 5
184                },
185                "end": {
186                  "line": 23,
187                  "column": 6
188                }
189              }
190            },
191            "typeAnnotation": {
192              "type": "TSTypeReference",
193              "typeName": {
194                "type": "Identifier",
195                "name": "A",
196                "decorators": [],
197                "loc": {
198                  "start": {
199                    "line": 23,
200                    "column": 8
201                  },
202                  "end": {
203                    "line": 23,
204                    "column": 9
205                  }
206                }
207              },
208              "loc": {
209                "start": {
210                  "line": 23,
211                  "column": 8
212                },
213                "end": {
214                  "line": 23,
215                  "column": 9
216                }
217              }
218            },
219            "loc": {
220              "start": {
221                "line": 23,
222                "column": 5
223              },
224              "end": {
225                "line": 23,
226                "column": 10
227              }
228            }
229          }
230        ],
231        "loc": {
232          "start": {
233            "line": 22,
234            "column": 23
235          },
236          "end": {
237            "line": 24,
238            "column": 2
239          }
240        }
241      },
242      "id": {
243        "type": "Identifier",
244        "name": "B",
245        "decorators": [],
246        "loc": {
247          "start": {
248            "line": 22,
249            "column": 11
250          },
251          "end": {
252            "line": 22,
253            "column": 12
254          }
255        }
256      },
257      "extends": [
258        {
259          "type": "TSInterfaceHeritage",
260          "expression": {
261            "type": "TSTypeReference",
262            "typeName": {
263              "type": "Identifier",
264              "name": "A",
265              "decorators": [],
266              "loc": {
267                "start": {
268                  "line": 22,
269                  "column": 21
270                },
271                "end": {
272                  "line": 22,
273                  "column": 22
274                }
275              }
276            },
277            "loc": {
278              "start": {
279                "line": 22,
280                "column": 23
281              },
282              "end": {
283                "line": 22,
284                "column": 22
285              }
286            }
287          },
288          "loc": {
289            "start": {
290              "line": 22,
291              "column": 23
292            },
293            "end": {
294              "line": 22,
295              "column": 22
296            }
297          }
298        }
299      ],
300      "loc": {
301        "start": {
302          "line": 22,
303          "column": 1
304        },
305        "end": {
306          "line": 24,
307          "column": 2
308        }
309      }
310    },
311    {
312      "type": "VariableDeclaration",
313      "declarations": [
314        {
315          "type": "VariableDeclarator",
316          "id": {
317            "type": "Identifier",
318            "name": "foo",
319            "typeAnnotation": {
320              "type": "TSTypeReference",
321              "typeName": {
322                "type": "Identifier",
323                "name": "B",
324                "decorators": [],
325                "loc": {
326                  "start": {
327                    "line": 26,
328                    "column": 10
329                  },
330                  "end": {
331                    "line": 26,
332                    "column": 11
333                  }
334                }
335              },
336              "loc": {
337                "start": {
338                  "line": 26,
339                  "column": 10
340                },
341                "end": {
342                  "line": 26,
343                  "column": 11
344                }
345              }
346            },
347            "decorators": [],
348            "loc": {
349              "start": {
350                "line": 26,
351                "column": 5
352              },
353              "end": {
354                "line": 26,
355                "column": 8
356              }
357            }
358          },
359          "init": null,
360          "loc": {
361            "start": {
362              "line": 26,
363              "column": 5
364            },
365            "end": {
366              "line": 26,
367              "column": 8
368            }
369          }
370        }
371      ],
372      "kind": "var",
373      "loc": {
374        "start": {
375          "line": 26,
376          "column": 1
377        },
378        "end": {
379          "line": 26,
380          "column": 12
381        }
382      }
383    },
384    {
385      "type": "ExpressionStatement",
386      "expression": {
387        "type": "MemberExpression",
388        "object": {
389          "type": "MemberExpression",
390          "object": {
391            "type": "MemberExpression",
392            "object": {
393              "type": "MemberExpression",
394              "object": {
395                "type": "MemberExpression",
396                "object": {
397                  "type": "MemberExpression",
398                  "object": {
399                    "type": "Identifier",
400                    "name": "foo",
401                    "decorators": [],
402                    "loc": {
403                      "start": {
404                        "line": 28,
405                        "column": 1
406                      },
407                      "end": {
408                        "line": 28,
409                        "column": 4
410                      }
411                    }
412                  },
413                  "property": {
414                    "type": "Identifier",
415                    "name": "a",
416                    "decorators": [],
417                    "loc": {
418                      "start": {
419                        "line": 28,
420                        "column": 5
421                      },
422                      "end": {
423                        "line": 28,
424                        "column": 6
425                      }
426                    }
427                  },
428                  "computed": false,
429                  "optional": false,
430                  "loc": {
431                    "start": {
432                      "line": 28,
433                      "column": 1
434                    },
435                    "end": {
436                      "line": 28,
437                      "column": 6
438                    }
439                  }
440                },
441                "property": {
442                  "type": "Identifier",
443                  "name": "b",
444                  "decorators": [],
445                  "loc": {
446                    "start": {
447                      "line": 28,
448                      "column": 7
449                    },
450                    "end": {
451                      "line": 28,
452                      "column": 8
453                    }
454                  }
455                },
456                "computed": false,
457                "optional": false,
458                "loc": {
459                  "start": {
460                    "line": 28,
461                    "column": 1
462                  },
463                  "end": {
464                    "line": 28,
465                    "column": 8
466                  }
467                }
468              },
469              "property": {
470                "type": "Identifier",
471                "name": "b",
472                "decorators": [],
473                "loc": {
474                  "start": {
475                    "line": 28,
476                    "column": 9
477                  },
478                  "end": {
479                    "line": 28,
480                    "column": 10
481                  }
482                }
483              },
484              "computed": false,
485              "optional": false,
486              "loc": {
487                "start": {
488                  "line": 28,
489                  "column": 1
490                },
491                "end": {
492                  "line": 28,
493                  "column": 10
494                }
495              }
496            },
497            "property": {
498              "type": "Identifier",
499              "name": "a",
500              "decorators": [],
501              "loc": {
502                "start": {
503                  "line": 28,
504                  "column": 11
505                },
506                "end": {
507                  "line": 28,
508                  "column": 12
509                }
510              }
511            },
512            "computed": false,
513            "optional": false,
514            "loc": {
515              "start": {
516                "line": 28,
517                "column": 1
518              },
519              "end": {
520                "line": 28,
521                "column": 12
522              }
523            }
524          },
525          "property": {
526            "type": "Identifier",
527            "name": "c",
528            "decorators": [],
529            "loc": {
530              "start": {
531                "line": 28,
532                "column": 13
533              },
534              "end": {
535                "line": 28,
536                "column": 14
537              }
538            }
539          },
540          "computed": false,
541          "optional": false,
542          "loc": {
543            "start": {
544              "line": 28,
545              "column": 1
546            },
547            "end": {
548              "line": 28,
549              "column": 14
550            }
551          }
552        },
553        "property": {
554          "type": "Identifier",
555          "name": "a",
556          "decorators": [],
557          "loc": {
558            "start": {
559              "line": 28,
560              "column": 15
561            },
562            "end": {
563              "line": 28,
564              "column": 16
565            }
566          }
567        },
568        "computed": false,
569        "optional": false,
570        "loc": {
571          "start": {
572            "line": 28,
573            "column": 1
574          },
575          "end": {
576            "line": 28,
577            "column": 16
578          }
579        }
580      },
581      "loc": {
582        "start": {
583          "line": 28,
584          "column": 1
585        },
586        "end": {
587          "line": 28,
588          "column": 17
589        }
590      }
591    },
592    {
593      "type": "ExpressionStatement",
594      "expression": {
595        "type": "MemberExpression",
596        "object": {
597          "type": "MemberExpression",
598          "object": {
599            "type": "MemberExpression",
600            "object": {
601              "type": "MemberExpression",
602              "object": {
603                "type": "MemberExpression",
604                "object": {
605                  "type": "MemberExpression",
606                  "object": {
607                    "type": "MemberExpression",
608                    "object": {
609                      "type": "Identifier",
610                      "name": "foo",
611                      "decorators": [],
612                      "loc": {
613                        "start": {
614                          "line": 29,
615                          "column": 1
616                        },
617                        "end": {
618                          "line": 29,
619                          "column": 4
620                        }
621                      }
622                    },
623                    "property": {
624                      "type": "Identifier",
625                      "name": "b",
626                      "decorators": [],
627                      "loc": {
628                        "start": {
629                          "line": 29,
630                          "column": 5
631                        },
632                        "end": {
633                          "line": 29,
634                          "column": 6
635                        }
636                      }
637                    },
638                    "computed": false,
639                    "optional": false,
640                    "loc": {
641                      "start": {
642                        "line": 29,
643                        "column": 1
644                      },
645                      "end": {
646                        "line": 29,
647                        "column": 6
648                      }
649                    }
650                  },
651                  "property": {
652                    "type": "Identifier",
653                    "name": "b",
654                    "decorators": [],
655                    "loc": {
656                      "start": {
657                        "line": 29,
658                        "column": 7
659                      },
660                      "end": {
661                        "line": 29,
662                        "column": 8
663                      }
664                    }
665                  },
666                  "computed": false,
667                  "optional": false,
668                  "loc": {
669                    "start": {
670                      "line": 29,
671                      "column": 1
672                    },
673                    "end": {
674                      "line": 29,
675                      "column": 8
676                    }
677                  }
678                },
679                "property": {
680                  "type": "Identifier",
681                  "name": "b",
682                  "decorators": [],
683                  "loc": {
684                    "start": {
685                      "line": 29,
686                      "column": 9
687                    },
688                    "end": {
689                      "line": 29,
690                      "column": 10
691                    }
692                  }
693                },
694                "computed": false,
695                "optional": false,
696                "loc": {
697                  "start": {
698                    "line": 29,
699                    "column": 1
700                  },
701                  "end": {
702                    "line": 29,
703                    "column": 10
704                  }
705                }
706              },
707              "property": {
708                "type": "Identifier",
709                "name": "b",
710                "decorators": [],
711                "loc": {
712                  "start": {
713                    "line": 29,
714                    "column": 11
715                  },
716                  "end": {
717                    "line": 29,
718                    "column": 12
719                  }
720                }
721              },
722              "computed": false,
723              "optional": false,
724              "loc": {
725                "start": {
726                  "line": 29,
727                  "column": 1
728                },
729                "end": {
730                  "line": 29,
731                  "column": 12
732                }
733              }
734            },
735            "property": {
736              "type": "Identifier",
737              "name": "b",
738              "decorators": [],
739              "loc": {
740                "start": {
741                  "line": 29,
742                  "column": 13
743                },
744                "end": {
745                  "line": 29,
746                  "column": 14
747                }
748              }
749            },
750            "computed": false,
751            "optional": false,
752            "loc": {
753              "start": {
754                "line": 29,
755                "column": 1
756              },
757              "end": {
758                "line": 29,
759                "column": 14
760              }
761            }
762          },
763          "property": {
764            "type": "Identifier",
765            "name": "b",
766            "decorators": [],
767            "loc": {
768              "start": {
769                "line": 29,
770                "column": 15
771              },
772              "end": {
773                "line": 29,
774                "column": 16
775              }
776            }
777          },
778          "computed": false,
779          "optional": false,
780          "loc": {
781            "start": {
782              "line": 29,
783              "column": 1
784            },
785            "end": {
786              "line": 29,
787              "column": 16
788            }
789          }
790        },
791        "property": {
792          "type": "Identifier",
793          "name": "a",
794          "decorators": [],
795          "loc": {
796            "start": {
797              "line": 29,
798              "column": 17
799            },
800            "end": {
801              "line": 29,
802              "column": 18
803            }
804          }
805        },
806        "computed": false,
807        "optional": false,
808        "loc": {
809          "start": {
810            "line": 29,
811            "column": 1
812          },
813          "end": {
814            "line": 29,
815            "column": 18
816          }
817        }
818      },
819      "loc": {
820        "start": {
821          "line": 29,
822          "column": 1
823        },
824        "end": {
825          "line": 29,
826          "column": 19
827        }
828      }
829    },
830    {
831      "type": "ExpressionStatement",
832      "expression": {
833        "type": "MemberExpression",
834        "object": {
835          "type": "MemberExpression",
836          "object": {
837            "type": "MemberExpression",
838            "object": {
839              "type": "MemberExpression",
840              "object": {
841                "type": "MemberExpression",
842                "object": {
843                  "type": "MemberExpression",
844                  "object": {
845                    "type": "MemberExpression",
846                    "object": {
847                      "type": "Identifier",
848                      "name": "foo",
849                      "decorators": [],
850                      "loc": {
851                        "start": {
852                          "line": 30,
853                          "column": 1
854                        },
855                        "end": {
856                          "line": 30,
857                          "column": 4
858                        }
859                      }
860                    },
861                    "property": {
862                      "type": "Identifier",
863                      "name": "c",
864                      "decorators": [],
865                      "loc": {
866                        "start": {
867                          "line": 30,
868                          "column": 5
869                        },
870                        "end": {
871                          "line": 30,
872                          "column": 6
873                        }
874                      }
875                    },
876                    "computed": false,
877                    "optional": false,
878                    "loc": {
879                      "start": {
880                        "line": 30,
881                        "column": 1
882                      },
883                      "end": {
884                        "line": 30,
885                        "column": 6
886                      }
887                    }
888                  },
889                  "property": {
890                    "type": "Identifier",
891                    "name": "b",
892                    "decorators": [],
893                    "loc": {
894                      "start": {
895                        "line": 30,
896                        "column": 7
897                      },
898                      "end": {
899                        "line": 30,
900                        "column": 8
901                      }
902                    }
903                  },
904                  "computed": false,
905                  "optional": false,
906                  "loc": {
907                    "start": {
908                      "line": 30,
909                      "column": 1
910                    },
911                    "end": {
912                      "line": 30,
913                      "column": 8
914                    }
915                  }
916                },
917                "property": {
918                  "type": "Identifier",
919                  "name": "a",
920                  "decorators": [],
921                  "loc": {
922                    "start": {
923                      "line": 30,
924                      "column": 9
925                    },
926                    "end": {
927                      "line": 30,
928                      "column": 10
929                    }
930                  }
931                },
932                "computed": false,
933                "optional": false,
934                "loc": {
935                  "start": {
936                    "line": 30,
937                    "column": 1
938                  },
939                  "end": {
940                    "line": 30,
941                    "column": 10
942                  }
943                }
944              },
945              "property": {
946                "type": "Identifier",
947                "name": "c",
948                "decorators": [],
949                "loc": {
950                  "start": {
951                    "line": 30,
952                    "column": 11
953                  },
954                  "end": {
955                    "line": 30,
956                    "column": 12
957                  }
958                }
959              },
960              "computed": false,
961              "optional": false,
962              "loc": {
963                "start": {
964                  "line": 30,
965                  "column": 1
966                },
967                "end": {
968                  "line": 30,
969                  "column": 12
970                }
971              }
972            },
973            "property": {
974              "type": "Identifier",
975              "name": "a",
976              "decorators": [],
977              "loc": {
978                "start": {
979                  "line": 30,
980                  "column": 13
981                },
982                "end": {
983                  "line": 30,
984                  "column": 14
985                }
986              }
987            },
988            "computed": false,
989            "optional": false,
990            "loc": {
991              "start": {
992                "line": 30,
993                "column": 1
994              },
995              "end": {
996                "line": 30,
997                "column": 14
998              }
999            }
1000          },
1001          "property": {
1002            "type": "Identifier",
1003            "name": "c",
1004            "decorators": [],
1005            "loc": {
1006              "start": {
1007                "line": 30,
1008                "column": 15
1009              },
1010              "end": {
1011                "line": 30,
1012                "column": 16
1013              }
1014            }
1015          },
1016          "computed": false,
1017          "optional": false,
1018          "loc": {
1019            "start": {
1020              "line": 30,
1021              "column": 1
1022            },
1023            "end": {
1024              "line": 30,
1025              "column": 16
1026            }
1027          }
1028        },
1029        "property": {
1030          "type": "Identifier",
1031          "name": "a",
1032          "decorators": [],
1033          "loc": {
1034            "start": {
1035              "line": 30,
1036              "column": 17
1037            },
1038            "end": {
1039              "line": 30,
1040              "column": 18
1041            }
1042          }
1043        },
1044        "computed": false,
1045        "optional": false,
1046        "loc": {
1047          "start": {
1048            "line": 30,
1049            "column": 1
1050          },
1051          "end": {
1052            "line": 30,
1053            "column": 18
1054          }
1055        }
1056      },
1057      "loc": {
1058        "start": {
1059          "line": 30,
1060          "column": 1
1061        },
1062        "end": {
1063          "line": 30,
1064          "column": 19
1065        }
1066      }
1067    }
1068  ],
1069  "loc": {
1070    "start": {
1071      "line": 1,
1072      "column": 1
1073    },
1074    "end": {
1075      "line": 31,
1076      "column": 1
1077    }
1078  }
1079}
1080