1Hi there!
2---
3After parse:
4---
5Found Expression:
6{
7  "type": "Identifier",
8  "name": "GoodGreeter",
9  "decorators": []
10}
11---
12Found Expression:
13{
14  "type": "Identifier",
15  "name": "name",
16  "decorators": []
17}
18---
19Found Expression:
20{
21  "type": "ETSTypeReference",
22  "part": {
23    "type": "ETSTypeReferencePart",
24    "name": {
25      "type": "Identifier",
26      "name": "string",
27      "decorators": []
28    }
29  }
30}
31---
32Found Expression:
33{
34  "type": "ETSTypeReferencePart",
35  "name": {
36    "type": "Identifier",
37    "name": "string",
38    "decorators": []
39  }
40}
41---
42Found Expression:
43{
44  "type": "Identifier",
45  "name": "string",
46  "decorators": []
47}
48---
49Found Expression:
50{
51  "type": "Identifier",
52  "name": "invoke",
53  "decorators": []
54}
55---
56Found Expression:
57{
58  "type": "FunctionExpression",
59  "function": {
60    "type": "ScriptFunction",
61    "id": {
62      "type": "Identifier",
63      "name": "invoke",
64      "decorators": []
65    },
66    "generator": false,
67    "async": false,
68    "expression": false,
69    "params": [],
70    "returnType": {
71      "type": "ETSPrimitiveType"
72    },
73    "body": {
74      "type": "BlockStatement",
75      "statements": [
76        {
77          "type": "ReturnStatement",
78          "argument": {
79            "type": "NumberLiteral",
80            "value": 5
81          }
82        }
83      ]
84    }
85  }
86}
87---
88Found Expression:
89{
90  "type": "Identifier",
91  "name": "invoke",
92  "decorators": []
93}
94---
95Found Expression:
96{
97  "type": "ETSPrimitiveType"
98}
99---
100Found Expression:
101{
102  "type": "NumberLiteral",
103  "value": 5
104}
105---
106Found Expression:
107{
108  "type": "Identifier",
109  "name": "constructor",
110  "decorators": []
111}
112---
113Found Expression:
114{
115  "type": "FunctionExpression",
116  "function": {
117    "type": "ScriptFunction",
118    "id": {
119      "type": "Identifier",
120      "name": "constructor",
121      "decorators": []
122    },
123    "generator": false,
124    "async": false,
125    "expression": false,
126    "params": [],
127    "body": {
128      "type": "BlockStatement",
129      "statements": [
130        {
131          "type": "ExpressionStatement",
132          "expression": {
133            "type": "AssignmentExpression",
134            "operator": "=",
135            "left": {
136              "type": "MemberExpression",
137              "object": {
138                "type": "ThisExpression"
139              },
140              "property": {
141                "type": "Identifier",
142                "name": "name",
143                "decorators": []
144              },
145              "computed": false,
146              "optional": false
147            },
148            "right": {
149              "type": "StringLiteral",
150              "value": "hello"
151            }
152          }
153        }
154      ]
155    }
156  }
157}
158---
159Found Expression:
160{
161  "type": "Identifier",
162  "name": "constructor",
163  "decorators": []
164}
165---
166Found Expression:
167{
168  "type": "AssignmentExpression",
169  "operator": "=",
170  "left": {
171    "type": "MemberExpression",
172    "object": {
173      "type": "ThisExpression"
174    },
175    "property": {
176      "type": "Identifier",
177      "name": "name",
178      "decorators": []
179    },
180    "computed": false,
181    "optional": false
182  },
183  "right": {
184    "type": "StringLiteral",
185    "value": "hello"
186  }
187}
188---
189Found Expression:
190{
191  "type": "MemberExpression",
192  "object": {
193    "type": "ThisExpression"
194  },
195  "property": {
196    "type": "Identifier",
197    "name": "name",
198    "decorators": []
199  },
200  "computed": false,
201  "optional": false
202}
203---
204Found Expression:
205{
206  "type": "ThisExpression"
207}
208---
209Found Expression:
210{
211  "type": "Identifier",
212  "name": "name",
213  "decorators": []
214}
215---
216Found Expression:
217{
218  "type": "StringLiteral",
219  "value": "hello"
220}
221---
222Found Expression:
223{
224  "type": "Identifier",
225  "name": "a",
226  "decorators": []
227}
228---
229Found Expression:
230{
231  "type": "CallExpression",
232  "callee": {
233    "type": "Identifier",
234    "name": "GoodGreeter",
235    "decorators": []
236  },
237  "arguments": [],
238  "optional": false
239}
240---
241Found Expression:
242{
243  "type": "Identifier",
244  "name": "GoodGreeter",
245  "decorators": []
246}
247---
248Found Expression:
249{
250  "type": "Identifier",
251  "name": "main",
252  "decorators": []
253}
254---
255Found Expression:
256{
257  "type": "Identifier",
258  "name": "m",
259  "typeAnnotation": {
260    "type": "ETSPrimitiveType"
261  },
262  "decorators": []
263}
264---
265Found Expression:
266{
267  "type": "ETSPrimitiveType"
268}
269---
270Found Expression:
271{
272  "type": "NumberLiteral",
273  "value": 1
274}
275---
276Found Expression:
277{
278  "type": "Identifier",
279  "name": "n",
280  "typeAnnotation": {
281    "type": "ETSPrimitiveType"
282  },
283  "decorators": []
284}
285---
286Found Expression:
287{
288  "type": "ETSPrimitiveType"
289}
290---
291Found Expression:
292{
293  "type": "NumberLiteral",
294  "value": 2
295}
296---
297Found Expression:
298{
299  "type": "CallExpression",
300  "callee": {
301    "type": "MemberExpression",
302    "object": {
303      "type": "Identifier",
304      "name": "console",
305      "decorators": []
306    },
307    "property": {
308      "type": "Identifier",
309      "name": "log",
310      "decorators": []
311    },
312    "computed": false,
313    "optional": false
314  },
315  "arguments": [
316    {
317      "type": "BinaryExpression",
318      "operator": "+",
319      "left": {
320        "type": "Identifier",
321        "name": "m",
322        "decorators": []
323      },
324      "right": {
325        "type": "Identifier",
326        "name": "n",
327        "decorators": []
328      }
329    }
330  ],
331  "optional": false
332}
333---
334Found Expression:
335{
336  "type": "MemberExpression",
337  "object": {
338    "type": "Identifier",
339    "name": "console",
340    "decorators": []
341  },
342  "property": {
343    "type": "Identifier",
344    "name": "log",
345    "decorators": []
346  },
347  "computed": false,
348  "optional": false
349}
350---
351Found Expression:
352{
353  "type": "Identifier",
354  "name": "console",
355  "decorators": []
356}
357---
358Found Expression:
359{
360  "type": "Identifier",
361  "name": "log",
362  "decorators": []
363}
364---
365Found Expression:
366{
367  "type": "BinaryExpression",
368  "operator": "+",
369  "left": {
370    "type": "Identifier",
371    "name": "m",
372    "decorators": []
373  },
374  "right": {
375    "type": "Identifier",
376    "name": "n",
377    "decorators": []
378  }
379}
380---
381Found Expression:
382{
383  "type": "Identifier",
384  "name": "m",
385  "decorators": []
386}
387---
388Found Expression:
389{
390  "type": "Identifier",
391  "name": "n",
392  "decorators": []
393}
394---
395After check:
396---
397After lowerings:
398---
399