1Hi there!
2---
3After parse:
4---
5{
6  "type": "Program",
7  "statements": [
8    {
9      "type": "ClassDeclaration",
10      "definition": {
11        "id": {
12          "type": "Identifier",
13          "name": "GoodGreeter",
14          "decorators": []
15        },
16        "superClass": null,
17        "implements": [],
18        "body": [
19          {
20            "type": "ClassProperty",
21            "key": {
22              "type": "Identifier",
23              "name": "name",
24              "decorators": []
25            },
26            "accessibility": "public",
27            "static": false,
28            "readonly": false,
29            "declare": false,
30            "optional": false,
31            "computed": false,
32            "typeAnnotation": {
33              "type": "ETSTypeReference",
34              "part": {
35                "type": "ETSTypeReferencePart",
36                "name": {
37                  "type": "Identifier",
38                  "name": "string",
39                  "decorators": []
40                }
41              }
42            },
43            "definite": false,
44            "decorators": []
45          },
46          {
47            "type": "MethodDefinition",
48            "key": {
49              "type": "Identifier",
50              "name": "invoke",
51              "decorators": []
52            },
53            "kind": "method",
54            "accessibility": "public",
55            "static": true,
56            "optional": false,
57            "computed": false,
58            "value": {
59              "type": "FunctionExpression",
60              "function": {
61                "type": "ScriptFunction",
62                "id": {
63                  "type": "Identifier",
64                  "name": "invoke",
65                  "decorators": []
66                },
67                "generator": false,
68                "async": false,
69                "expression": false,
70                "params": [],
71                "returnType": {
72                  "type": "ETSPrimitiveType"
73                },
74                "body": {
75                  "type": "BlockStatement",
76                  "statements": [
77                    {
78                      "type": "ReturnStatement",
79                      "argument": {
80                        "type": "NumberLiteral",
81                        "value": 5
82                      }
83                    }
84                  ]
85                }
86              }
87            },
88            "overloads": [],
89            "decorators": []
90          },
91          {
92            "type": "MethodDefinition",
93            "key": {
94              "type": "Identifier",
95              "name": "constructor",
96              "decorators": []
97            },
98            "kind": "constructor",
99            "accessibility": "public",
100            "static": false,
101            "optional": false,
102            "computed": false,
103            "value": {
104              "type": "FunctionExpression",
105              "function": {
106                "type": "ScriptFunction",
107                "id": {
108                  "type": "Identifier",
109                  "name": "constructor",
110                  "decorators": []
111                },
112                "generator": false,
113                "async": false,
114                "expression": false,
115                "params": [],
116                "body": {
117                  "type": "BlockStatement",
118                  "statements": [
119                    {
120                      "type": "ExpressionStatement",
121                      "expression": {
122                        "type": "AssignmentExpression",
123                        "operator": "=",
124                        "left": {
125                          "type": "MemberExpression",
126                          "object": {
127                            "type": "ThisExpression"
128                          },
129                          "property": {
130                            "type": "Identifier",
131                            "name": "name",
132                            "decorators": []
133                          },
134                          "computed": false,
135                          "optional": false
136                        },
137                        "right": {
138                          "type": "StringLiteral",
139                          "value": "hello"
140                        }
141                      }
142                    }
143                  ]
144                }
145              }
146            },
147            "overloads": [],
148            "decorators": []
149          }
150        ]
151      }
152    },
153    {
154      "type": "VariableDeclaration",
155      "declarations": [
156        {
157          "type": "VariableDeclarator",
158          "id": {
159            "type": "Identifier",
160            "name": "a",
161            "decorators": []
162          },
163          "init": {
164            "type": "CallExpression",
165            "callee": {
166              "type": "Identifier",
167              "name": "GoodGreeter",
168              "decorators": []
169            },
170            "arguments": [],
171            "optional": false
172          }
173        }
174      ],
175      "kind": "let"
176    },
177    {
178      "type": "FunctionDeclaration",
179      "function": {
180        "type": "ScriptFunction",
181        "id": {
182          "type": "Identifier",
183          "name": "main",
184          "decorators": []
185        },
186        "generator": false,
187        "async": false,
188        "expression": false,
189        "params": [],
190        "body": {
191          "type": "BlockStatement",
192          "statements": [
193            {
194              "type": "VariableDeclaration",
195              "declarations": [
196                {
197                  "type": "VariableDeclarator",
198                  "id": {
199                    "type": "Identifier",
200                    "name": "m",
201                    "typeAnnotation": {
202                      "type": "ETSPrimitiveType"
203                    },
204                    "decorators": []
205                  },
206                  "init": {
207                    "type": "NumberLiteral",
208                    "value": 1
209                  }
210                }
211              ],
212              "kind": "let"
213            },
214            {
215              "type": "VariableDeclaration",
216              "declarations": [
217                {
218                  "type": "VariableDeclarator",
219                  "id": {
220                    "type": "Identifier",
221                    "name": "n",
222                    "typeAnnotation": {
223                      "type": "ETSPrimitiveType"
224                    },
225                    "decorators": []
226                  },
227                  "init": {
228                    "type": "NumberLiteral",
229                    "value": 2
230                  }
231                }
232              ],
233              "kind": "let"
234            },
235            {
236              "type": "ExpressionStatement",
237              "expression": {
238                "type": "CallExpression",
239                "callee": {
240                  "type": "MemberExpression",
241                  "object": {
242                    "type": "Identifier",
243                    "name": "console",
244                    "decorators": []
245                  },
246                  "property": {
247                    "type": "Identifier",
248                    "name": "log",
249                    "decorators": []
250                  },
251                  "computed": false,
252                  "optional": false
253                },
254                "arguments": [
255                  {
256                    "type": "BinaryExpression",
257                    "operator": "+",
258                    "left": {
259                      "type": "Identifier",
260                      "name": "m",
261                      "decorators": []
262                    },
263                    "right": {
264                      "type": "Identifier",
265                      "name": "n",
266                      "decorators": []
267                    }
268                  }
269                ],
270                "optional": false
271              }
272            }
273          ]
274        }
275      }
276    }
277  ]
278}
279---
280{
281  "type": "ClassDeclaration",
282  "definition": {
283    "id": {
284      "type": "Identifier",
285      "name": "GoodGreeter",
286      "decorators": []
287    },
288    "superClass": null,
289    "implements": [],
290    "body": [
291      {
292        "type": "ClassProperty",
293        "key": {
294          "type": "Identifier",
295          "name": "name",
296          "decorators": []
297        },
298        "accessibility": "public",
299        "static": false,
300        "readonly": false,
301        "declare": false,
302        "optional": false,
303        "computed": false,
304        "typeAnnotation": {
305          "type": "ETSTypeReference",
306          "part": {
307            "type": "ETSTypeReferencePart",
308            "name": {
309              "type": "Identifier",
310              "name": "string",
311              "decorators": []
312            }
313          }
314        },
315        "definite": false,
316        "decorators": []
317      },
318      {
319        "type": "MethodDefinition",
320        "key": {
321          "type": "Identifier",
322          "name": "invoke",
323          "decorators": []
324        },
325        "kind": "method",
326        "accessibility": "public",
327        "static": true,
328        "optional": false,
329        "computed": false,
330        "value": {
331          "type": "FunctionExpression",
332          "function": {
333            "type": "ScriptFunction",
334            "id": {
335              "type": "Identifier",
336              "name": "invoke",
337              "decorators": []
338            },
339            "generator": false,
340            "async": false,
341            "expression": false,
342            "params": [],
343            "returnType": {
344              "type": "ETSPrimitiveType"
345            },
346            "body": {
347              "type": "BlockStatement",
348              "statements": [
349                {
350                  "type": "ReturnStatement",
351                  "argument": {
352                    "type": "NumberLiteral",
353                    "value": 5
354                  }
355                }
356              ]
357            }
358          }
359        },
360        "overloads": [],
361        "decorators": []
362      },
363      {
364        "type": "MethodDefinition",
365        "key": {
366          "type": "Identifier",
367          "name": "constructor",
368          "decorators": []
369        },
370        "kind": "constructor",
371        "accessibility": "public",
372        "static": false,
373        "optional": false,
374        "computed": false,
375        "value": {
376          "type": "FunctionExpression",
377          "function": {
378            "type": "ScriptFunction",
379            "id": {
380              "type": "Identifier",
381              "name": "constructor",
382              "decorators": []
383            },
384            "generator": false,
385            "async": false,
386            "expression": false,
387            "params": [],
388            "body": {
389              "type": "BlockStatement",
390              "statements": [
391                {
392                  "type": "ExpressionStatement",
393                  "expression": {
394                    "type": "AssignmentExpression",
395                    "operator": "=",
396                    "left": {
397                      "type": "MemberExpression",
398                      "object": {
399                        "type": "ThisExpression"
400                      },
401                      "property": {
402                        "type": "Identifier",
403                        "name": "name",
404                        "decorators": []
405                      },
406                      "computed": false,
407                      "optional": false
408                    },
409                    "right": {
410                      "type": "StringLiteral",
411                      "value": "hello"
412                    }
413                  }
414                }
415              ]
416            }
417          }
418        },
419        "overloads": [],
420        "decorators": []
421      }
422    ]
423  }
424}
425---
426{
427  "id": {
428    "type": "Identifier",
429    "name": "GoodGreeter",
430    "decorators": []
431  },
432  "superClass": null,
433  "implements": [],
434  "body": [
435    {
436      "type": "ClassProperty",
437      "key": {
438        "type": "Identifier",
439        "name": "name",
440        "decorators": []
441      },
442      "accessibility": "public",
443      "static": false,
444      "readonly": false,
445      "declare": false,
446      "optional": false,
447      "computed": false,
448      "typeAnnotation": {
449        "type": "ETSTypeReference",
450        "part": {
451          "type": "ETSTypeReferencePart",
452          "name": {
453            "type": "Identifier",
454            "name": "string",
455            "decorators": []
456          }
457        }
458      },
459      "definite": false,
460      "decorators": []
461    },
462    {
463      "type": "MethodDefinition",
464      "key": {
465        "type": "Identifier",
466        "name": "invoke",
467        "decorators": []
468      },
469      "kind": "method",
470      "accessibility": "public",
471      "static": true,
472      "optional": false,
473      "computed": false,
474      "value": {
475        "type": "FunctionExpression",
476        "function": {
477          "type": "ScriptFunction",
478          "id": {
479            "type": "Identifier",
480            "name": "invoke",
481            "decorators": []
482          },
483          "generator": false,
484          "async": false,
485          "expression": false,
486          "params": [],
487          "returnType": {
488            "type": "ETSPrimitiveType"
489          },
490          "body": {
491            "type": "BlockStatement",
492            "statements": [
493              {
494                "type": "ReturnStatement",
495                "argument": {
496                  "type": "NumberLiteral",
497                  "value": 5
498                }
499              }
500            ]
501          }
502        }
503      },
504      "overloads": [],
505      "decorators": []
506    },
507    {
508      "type": "MethodDefinition",
509      "key": {
510        "type": "Identifier",
511        "name": "constructor",
512        "decorators": []
513      },
514      "kind": "constructor",
515      "accessibility": "public",
516      "static": false,
517      "optional": false,
518      "computed": false,
519      "value": {
520        "type": "FunctionExpression",
521        "function": {
522          "type": "ScriptFunction",
523          "id": {
524            "type": "Identifier",
525            "name": "constructor",
526            "decorators": []
527          },
528          "generator": false,
529          "async": false,
530          "expression": false,
531          "params": [],
532          "body": {
533            "type": "BlockStatement",
534            "statements": [
535              {
536                "type": "ExpressionStatement",
537                "expression": {
538                  "type": "AssignmentExpression",
539                  "operator": "=",
540                  "left": {
541                    "type": "MemberExpression",
542                    "object": {
543                      "type": "ThisExpression"
544                    },
545                    "property": {
546                      "type": "Identifier",
547                      "name": "name",
548                      "decorators": []
549                    },
550                    "computed": false,
551                    "optional": false
552                  },
553                  "right": {
554                    "type": "StringLiteral",
555                    "value": "hello"
556                  }
557                }
558              }
559            ]
560          }
561        }
562      },
563      "overloads": [],
564      "decorators": []
565    }
566  ]
567}
568---
569{
570  "type": "Identifier",
571  "name": "GoodGreeter",
572  "decorators": []
573}
574---
575{
576  "type": "ClassProperty",
577  "key": {
578    "type": "Identifier",
579    "name": "name",
580    "decorators": []
581  },
582  "accessibility": "public",
583  "static": false,
584  "readonly": false,
585  "declare": false,
586  "optional": false,
587  "computed": false,
588  "typeAnnotation": {
589    "type": "ETSTypeReference",
590    "part": {
591      "type": "ETSTypeReferencePart",
592      "name": {
593        "type": "Identifier",
594        "name": "string",
595        "decorators": []
596      }
597    }
598  },
599  "definite": false,
600  "decorators": []
601}
602---
603{
604  "type": "Identifier",
605  "name": "name",
606  "decorators": []
607}
608---
609{
610  "type": "ETSTypeReference",
611  "part": {
612    "type": "ETSTypeReferencePart",
613    "name": {
614      "type": "Identifier",
615      "name": "string",
616      "decorators": []
617    }
618  }
619}
620---
621{
622  "type": "ETSTypeReferencePart",
623  "name": {
624    "type": "Identifier",
625    "name": "string",
626    "decorators": []
627  }
628}
629---
630{
631  "type": "Identifier",
632  "name": "string",
633  "decorators": []
634}
635---
636{
637  "type": "MethodDefinition",
638  "key": {
639    "type": "Identifier",
640    "name": "invoke",
641    "decorators": []
642  },
643  "kind": "method",
644  "accessibility": "public",
645  "static": true,
646  "optional": false,
647  "computed": false,
648  "value": {
649    "type": "FunctionExpression",
650    "function": {
651      "type": "ScriptFunction",
652      "id": {
653        "type": "Identifier",
654        "name": "invoke",
655        "decorators": []
656      },
657      "generator": false,
658      "async": false,
659      "expression": false,
660      "params": [],
661      "returnType": {
662        "type": "ETSPrimitiveType"
663      },
664      "body": {
665        "type": "BlockStatement",
666        "statements": [
667          {
668            "type": "ReturnStatement",
669            "argument": {
670              "type": "NumberLiteral",
671              "value": 5
672            }
673          }
674        ]
675      }
676    }
677  },
678  "overloads": [],
679  "decorators": []
680}
681---
682{
683  "type": "Identifier",
684  "name": "invoke",
685  "decorators": []
686}
687---
688{
689  "type": "FunctionExpression",
690  "function": {
691    "type": "ScriptFunction",
692    "id": {
693      "type": "Identifier",
694      "name": "invoke",
695      "decorators": []
696    },
697    "generator": false,
698    "async": false,
699    "expression": false,
700    "params": [],
701    "returnType": {
702      "type": "ETSPrimitiveType"
703    },
704    "body": {
705      "type": "BlockStatement",
706      "statements": [
707        {
708          "type": "ReturnStatement",
709          "argument": {
710            "type": "NumberLiteral",
711            "value": 5
712          }
713        }
714      ]
715    }
716  }
717}
718---
719{
720  "type": "ScriptFunction",
721  "id": {
722    "type": "Identifier",
723    "name": "invoke",
724    "decorators": []
725  },
726  "generator": false,
727  "async": false,
728  "expression": false,
729  "params": [],
730  "returnType": {
731    "type": "ETSPrimitiveType"
732  },
733  "body": {
734    "type": "BlockStatement",
735    "statements": [
736      {
737        "type": "ReturnStatement",
738        "argument": {
739          "type": "NumberLiteral",
740          "value": 5
741        }
742      }
743    ]
744  }
745}
746---
747{
748  "type": "Identifier",
749  "name": "invoke",
750  "decorators": []
751}
752---
753{
754  "type": "ETSPrimitiveType"
755}
756---
757{
758  "type": "BlockStatement",
759  "statements": [
760    {
761      "type": "ReturnStatement",
762      "argument": {
763        "type": "NumberLiteral",
764        "value": 5
765      }
766    }
767  ]
768}
769---
770{
771  "type": "ReturnStatement",
772  "argument": {
773    "type": "NumberLiteral",
774    "value": 5
775  }
776}
777---
778{
779  "type": "NumberLiteral",
780  "value": 5
781}
782---
783{
784  "type": "MethodDefinition",
785  "key": {
786    "type": "Identifier",
787    "name": "constructor",
788    "decorators": []
789  },
790  "kind": "constructor",
791  "accessibility": "public",
792  "static": false,
793  "optional": false,
794  "computed": false,
795  "value": {
796    "type": "FunctionExpression",
797    "function": {
798      "type": "ScriptFunction",
799      "id": {
800        "type": "Identifier",
801        "name": "constructor",
802        "decorators": []
803      },
804      "generator": false,
805      "async": false,
806      "expression": false,
807      "params": [],
808      "body": {
809        "type": "BlockStatement",
810        "statements": [
811          {
812            "type": "ExpressionStatement",
813            "expression": {
814              "type": "AssignmentExpression",
815              "operator": "=",
816              "left": {
817                "type": "MemberExpression",
818                "object": {
819                  "type": "ThisExpression"
820                },
821                "property": {
822                  "type": "Identifier",
823                  "name": "name",
824                  "decorators": []
825                },
826                "computed": false,
827                "optional": false
828              },
829              "right": {
830                "type": "StringLiteral",
831                "value": "hello"
832              }
833            }
834          }
835        ]
836      }
837    }
838  },
839  "overloads": [],
840  "decorators": []
841}
842---
843{
844  "type": "Identifier",
845  "name": "constructor",
846  "decorators": []
847}
848---
849{
850  "type": "FunctionExpression",
851  "function": {
852    "type": "ScriptFunction",
853    "id": {
854      "type": "Identifier",
855      "name": "constructor",
856      "decorators": []
857    },
858    "generator": false,
859    "async": false,
860    "expression": false,
861    "params": [],
862    "body": {
863      "type": "BlockStatement",
864      "statements": [
865        {
866          "type": "ExpressionStatement",
867          "expression": {
868            "type": "AssignmentExpression",
869            "operator": "=",
870            "left": {
871              "type": "MemberExpression",
872              "object": {
873                "type": "ThisExpression"
874              },
875              "property": {
876                "type": "Identifier",
877                "name": "name",
878                "decorators": []
879              },
880              "computed": false,
881              "optional": false
882            },
883            "right": {
884              "type": "StringLiteral",
885              "value": "hello"
886            }
887          }
888        }
889      ]
890    }
891  }
892}
893---
894{
895  "type": "ScriptFunction",
896  "id": {
897    "type": "Identifier",
898    "name": "constructor",
899    "decorators": []
900  },
901  "generator": false,
902  "async": false,
903  "expression": false,
904  "params": [],
905  "body": {
906    "type": "BlockStatement",
907    "statements": [
908      {
909        "type": "ExpressionStatement",
910        "expression": {
911          "type": "AssignmentExpression",
912          "operator": "=",
913          "left": {
914            "type": "MemberExpression",
915            "object": {
916              "type": "ThisExpression"
917            },
918            "property": {
919              "type": "Identifier",
920              "name": "name",
921              "decorators": []
922            },
923            "computed": false,
924            "optional": false
925          },
926          "right": {
927            "type": "StringLiteral",
928            "value": "hello"
929          }
930        }
931      }
932    ]
933  }
934}
935---
936{
937  "type": "Identifier",
938  "name": "constructor",
939  "decorators": []
940}
941---
942{
943  "type": "BlockStatement",
944  "statements": [
945    {
946      "type": "ExpressionStatement",
947      "expression": {
948        "type": "AssignmentExpression",
949        "operator": "=",
950        "left": {
951          "type": "MemberExpression",
952          "object": {
953            "type": "ThisExpression"
954          },
955          "property": {
956            "type": "Identifier",
957            "name": "name",
958            "decorators": []
959          },
960          "computed": false,
961          "optional": false
962        },
963        "right": {
964          "type": "StringLiteral",
965          "value": "hello"
966        }
967      }
968    }
969  ]
970}
971---
972{
973  "type": "ExpressionStatement",
974  "expression": {
975    "type": "AssignmentExpression",
976    "operator": "=",
977    "left": {
978      "type": "MemberExpression",
979      "object": {
980        "type": "ThisExpression"
981      },
982      "property": {
983        "type": "Identifier",
984        "name": "name",
985        "decorators": []
986      },
987      "computed": false,
988      "optional": false
989    },
990    "right": {
991      "type": "StringLiteral",
992      "value": "hello"
993    }
994  }
995}
996---
997{
998  "type": "AssignmentExpression",
999  "operator": "=",
1000  "left": {
1001    "type": "MemberExpression",
1002    "object": {
1003      "type": "ThisExpression"
1004    },
1005    "property": {
1006      "type": "Identifier",
1007      "name": "name",
1008      "decorators": []
1009    },
1010    "computed": false,
1011    "optional": false
1012  },
1013  "right": {
1014    "type": "StringLiteral",
1015    "value": "hello"
1016  }
1017}
1018---
1019{
1020  "type": "MemberExpression",
1021  "object": {
1022    "type": "ThisExpression"
1023  },
1024  "property": {
1025    "type": "Identifier",
1026    "name": "name",
1027    "decorators": []
1028  },
1029  "computed": false,
1030  "optional": false
1031}
1032---
1033{
1034  "type": "ThisExpression"
1035}
1036---
1037{
1038  "type": "Identifier",
1039  "name": "name",
1040  "decorators": []
1041}
1042---
1043{
1044  "type": "StringLiteral",
1045  "value": "hello"
1046}
1047---
1048{
1049  "type": "VariableDeclaration",
1050  "declarations": [
1051    {
1052      "type": "VariableDeclarator",
1053      "id": {
1054        "type": "Identifier",
1055        "name": "a",
1056        "decorators": []
1057      },
1058      "init": {
1059        "type": "CallExpression",
1060        "callee": {
1061          "type": "Identifier",
1062          "name": "GoodGreeter",
1063          "decorators": []
1064        },
1065        "arguments": [],
1066        "optional": false
1067      }
1068    }
1069  ],
1070  "kind": "let"
1071}
1072---
1073{
1074  "type": "VariableDeclarator",
1075  "id": {
1076    "type": "Identifier",
1077    "name": "a",
1078    "decorators": []
1079  },
1080  "init": {
1081    "type": "CallExpression",
1082    "callee": {
1083      "type": "Identifier",
1084      "name": "GoodGreeter",
1085      "decorators": []
1086    },
1087    "arguments": [],
1088    "optional": false
1089  }
1090}
1091---
1092{
1093  "type": "Identifier",
1094  "name": "a",
1095  "decorators": []
1096}
1097---
1098{
1099  "type": "CallExpression",
1100  "callee": {
1101    "type": "Identifier",
1102    "name": "GoodGreeter",
1103    "decorators": []
1104  },
1105  "arguments": [],
1106  "optional": false
1107}
1108---
1109{
1110  "type": "Identifier",
1111  "name": "GoodGreeter",
1112  "decorators": []
1113}
1114---
1115{
1116  "type": "FunctionDeclaration",
1117  "function": {
1118    "type": "ScriptFunction",
1119    "id": {
1120      "type": "Identifier",
1121      "name": "main",
1122      "decorators": []
1123    },
1124    "generator": false,
1125    "async": false,
1126    "expression": false,
1127    "params": [],
1128    "body": {
1129      "type": "BlockStatement",
1130      "statements": [
1131        {
1132          "type": "VariableDeclaration",
1133          "declarations": [
1134            {
1135              "type": "VariableDeclarator",
1136              "id": {
1137                "type": "Identifier",
1138                "name": "m",
1139                "typeAnnotation": {
1140                  "type": "ETSPrimitiveType"
1141                },
1142                "decorators": []
1143              },
1144              "init": {
1145                "type": "NumberLiteral",
1146                "value": 1
1147              }
1148            }
1149          ],
1150          "kind": "let"
1151        },
1152        {
1153          "type": "VariableDeclaration",
1154          "declarations": [
1155            {
1156              "type": "VariableDeclarator",
1157              "id": {
1158                "type": "Identifier",
1159                "name": "n",
1160                "typeAnnotation": {
1161                  "type": "ETSPrimitiveType"
1162                },
1163                "decorators": []
1164              },
1165              "init": {
1166                "type": "NumberLiteral",
1167                "value": 2
1168              }
1169            }
1170          ],
1171          "kind": "let"
1172        },
1173        {
1174          "type": "ExpressionStatement",
1175          "expression": {
1176            "type": "CallExpression",
1177            "callee": {
1178              "type": "MemberExpression",
1179              "object": {
1180                "type": "Identifier",
1181                "name": "console",
1182                "decorators": []
1183              },
1184              "property": {
1185                "type": "Identifier",
1186                "name": "log",
1187                "decorators": []
1188              },
1189              "computed": false,
1190              "optional": false
1191            },
1192            "arguments": [
1193              {
1194                "type": "BinaryExpression",
1195                "operator": "+",
1196                "left": {
1197                  "type": "Identifier",
1198                  "name": "m",
1199                  "decorators": []
1200                },
1201                "right": {
1202                  "type": "Identifier",
1203                  "name": "n",
1204                  "decorators": []
1205                }
1206              }
1207            ],
1208            "optional": false
1209          }
1210        }
1211      ]
1212    }
1213  }
1214}
1215---
1216{
1217  "type": "ScriptFunction",
1218  "id": {
1219    "type": "Identifier",
1220    "name": "main",
1221    "decorators": []
1222  },
1223  "generator": false,
1224  "async": false,
1225  "expression": false,
1226  "params": [],
1227  "body": {
1228    "type": "BlockStatement",
1229    "statements": [
1230      {
1231        "type": "VariableDeclaration",
1232        "declarations": [
1233          {
1234            "type": "VariableDeclarator",
1235            "id": {
1236              "type": "Identifier",
1237              "name": "m",
1238              "typeAnnotation": {
1239                "type": "ETSPrimitiveType"
1240              },
1241              "decorators": []
1242            },
1243            "init": {
1244              "type": "NumberLiteral",
1245              "value": 1
1246            }
1247          }
1248        ],
1249        "kind": "let"
1250      },
1251      {
1252        "type": "VariableDeclaration",
1253        "declarations": [
1254          {
1255            "type": "VariableDeclarator",
1256            "id": {
1257              "type": "Identifier",
1258              "name": "n",
1259              "typeAnnotation": {
1260                "type": "ETSPrimitiveType"
1261              },
1262              "decorators": []
1263            },
1264            "init": {
1265              "type": "NumberLiteral",
1266              "value": 2
1267            }
1268          }
1269        ],
1270        "kind": "let"
1271      },
1272      {
1273        "type": "ExpressionStatement",
1274        "expression": {
1275          "type": "CallExpression",
1276          "callee": {
1277            "type": "MemberExpression",
1278            "object": {
1279              "type": "Identifier",
1280              "name": "console",
1281              "decorators": []
1282            },
1283            "property": {
1284              "type": "Identifier",
1285              "name": "log",
1286              "decorators": []
1287            },
1288            "computed": false,
1289            "optional": false
1290          },
1291          "arguments": [
1292            {
1293              "type": "BinaryExpression",
1294              "operator": "+",
1295              "left": {
1296                "type": "Identifier",
1297                "name": "m",
1298                "decorators": []
1299              },
1300              "right": {
1301                "type": "Identifier",
1302                "name": "n",
1303                "decorators": []
1304              }
1305            }
1306          ],
1307          "optional": false
1308        }
1309      }
1310    ]
1311  }
1312}
1313---
1314{
1315  "type": "Identifier",
1316  "name": "main",
1317  "decorators": []
1318}
1319---
1320{
1321  "type": "BlockStatement",
1322  "statements": [
1323    {
1324      "type": "VariableDeclaration",
1325      "declarations": [
1326        {
1327          "type": "VariableDeclarator",
1328          "id": {
1329            "type": "Identifier",
1330            "name": "m",
1331            "typeAnnotation": {
1332              "type": "ETSPrimitiveType"
1333            },
1334            "decorators": []
1335          },
1336          "init": {
1337            "type": "NumberLiteral",
1338            "value": 1
1339          }
1340        }
1341      ],
1342      "kind": "let"
1343    },
1344    {
1345      "type": "VariableDeclaration",
1346      "declarations": [
1347        {
1348          "type": "VariableDeclarator",
1349          "id": {
1350            "type": "Identifier",
1351            "name": "n",
1352            "typeAnnotation": {
1353              "type": "ETSPrimitiveType"
1354            },
1355            "decorators": []
1356          },
1357          "init": {
1358            "type": "NumberLiteral",
1359            "value": 2
1360          }
1361        }
1362      ],
1363      "kind": "let"
1364    },
1365    {
1366      "type": "ExpressionStatement",
1367      "expression": {
1368        "type": "CallExpression",
1369        "callee": {
1370          "type": "MemberExpression",
1371          "object": {
1372            "type": "Identifier",
1373            "name": "console",
1374            "decorators": []
1375          },
1376          "property": {
1377            "type": "Identifier",
1378            "name": "log",
1379            "decorators": []
1380          },
1381          "computed": false,
1382          "optional": false
1383        },
1384        "arguments": [
1385          {
1386            "type": "BinaryExpression",
1387            "operator": "+",
1388            "left": {
1389              "type": "Identifier",
1390              "name": "m",
1391              "decorators": []
1392            },
1393            "right": {
1394              "type": "Identifier",
1395              "name": "n",
1396              "decorators": []
1397            }
1398          }
1399        ],
1400        "optional": false
1401      }
1402    }
1403  ]
1404}
1405---
1406{
1407  "type": "VariableDeclaration",
1408  "declarations": [
1409    {
1410      "type": "VariableDeclarator",
1411      "id": {
1412        "type": "Identifier",
1413        "name": "m",
1414        "typeAnnotation": {
1415          "type": "ETSPrimitiveType"
1416        },
1417        "decorators": []
1418      },
1419      "init": {
1420        "type": "NumberLiteral",
1421        "value": 1
1422      }
1423    }
1424  ],
1425  "kind": "let"
1426}
1427---
1428{
1429  "type": "VariableDeclarator",
1430  "id": {
1431    "type": "Identifier",
1432    "name": "m",
1433    "typeAnnotation": {
1434      "type": "ETSPrimitiveType"
1435    },
1436    "decorators": []
1437  },
1438  "init": {
1439    "type": "NumberLiteral",
1440    "value": 1
1441  }
1442}
1443---
1444{
1445  "type": "Identifier",
1446  "name": "m",
1447  "typeAnnotation": {
1448    "type": "ETSPrimitiveType"
1449  },
1450  "decorators": []
1451}
1452---
1453{
1454  "type": "ETSPrimitiveType"
1455}
1456---
1457{
1458  "type": "NumberLiteral",
1459  "value": 1
1460}
1461---
1462{
1463  "type": "VariableDeclaration",
1464  "declarations": [
1465    {
1466      "type": "VariableDeclarator",
1467      "id": {
1468        "type": "Identifier",
1469        "name": "n",
1470        "typeAnnotation": {
1471          "type": "ETSPrimitiveType"
1472        },
1473        "decorators": []
1474      },
1475      "init": {
1476        "type": "NumberLiteral",
1477        "value": 2
1478      }
1479    }
1480  ],
1481  "kind": "let"
1482}
1483---
1484{
1485  "type": "VariableDeclarator",
1486  "id": {
1487    "type": "Identifier",
1488    "name": "n",
1489    "typeAnnotation": {
1490      "type": "ETSPrimitiveType"
1491    },
1492    "decorators": []
1493  },
1494  "init": {
1495    "type": "NumberLiteral",
1496    "value": 2
1497  }
1498}
1499---
1500{
1501  "type": "Identifier",
1502  "name": "n",
1503  "typeAnnotation": {
1504    "type": "ETSPrimitiveType"
1505  },
1506  "decorators": []
1507}
1508---
1509{
1510  "type": "ETSPrimitiveType"
1511}
1512---
1513{
1514  "type": "NumberLiteral",
1515  "value": 2
1516}
1517---
1518{
1519  "type": "ExpressionStatement",
1520  "expression": {
1521    "type": "CallExpression",
1522    "callee": {
1523      "type": "MemberExpression",
1524      "object": {
1525        "type": "Identifier",
1526        "name": "console",
1527        "decorators": []
1528      },
1529      "property": {
1530        "type": "Identifier",
1531        "name": "log",
1532        "decorators": []
1533      },
1534      "computed": false,
1535      "optional": false
1536    },
1537    "arguments": [
1538      {
1539        "type": "BinaryExpression",
1540        "operator": "+",
1541        "left": {
1542          "type": "Identifier",
1543          "name": "m",
1544          "decorators": []
1545        },
1546        "right": {
1547          "type": "Identifier",
1548          "name": "n",
1549          "decorators": []
1550        }
1551      }
1552    ],
1553    "optional": false
1554  }
1555}
1556---
1557{
1558  "type": "CallExpression",
1559  "callee": {
1560    "type": "MemberExpression",
1561    "object": {
1562      "type": "Identifier",
1563      "name": "console",
1564      "decorators": []
1565    },
1566    "property": {
1567      "type": "Identifier",
1568      "name": "log",
1569      "decorators": []
1570    },
1571    "computed": false,
1572    "optional": false
1573  },
1574  "arguments": [
1575    {
1576      "type": "BinaryExpression",
1577      "operator": "+",
1578      "left": {
1579        "type": "Identifier",
1580        "name": "m",
1581        "decorators": []
1582      },
1583      "right": {
1584        "type": "Identifier",
1585        "name": "n",
1586        "decorators": []
1587      }
1588    }
1589  ],
1590  "optional": false
1591}
1592---
1593{
1594  "type": "MemberExpression",
1595  "object": {
1596    "type": "Identifier",
1597    "name": "console",
1598    "decorators": []
1599  },
1600  "property": {
1601    "type": "Identifier",
1602    "name": "log",
1603    "decorators": []
1604  },
1605  "computed": false,
1606  "optional": false
1607}
1608---
1609{
1610  "type": "Identifier",
1611  "name": "console",
1612  "decorators": []
1613}
1614---
1615{
1616  "type": "Identifier",
1617  "name": "log",
1618  "decorators": []
1619}
1620---
1621{
1622  "type": "BinaryExpression",
1623  "operator": "+",
1624  "left": {
1625    "type": "Identifier",
1626    "name": "m",
1627    "decorators": []
1628  },
1629  "right": {
1630    "type": "Identifier",
1631    "name": "n",
1632    "decorators": []
1633  }
1634}
1635---
1636{
1637  "type": "Identifier",
1638  "name": "m",
1639  "decorators": []
1640}
1641---
1642{
1643  "type": "Identifier",
1644  "name": "n",
1645  "decorators": []
1646}
1647---
1648After check:
1649---
1650After lowerings:
1651---
1652