biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: ABSTRACT_KW@0..9 "abstract" [] [Whitespace(" ")],
            class_token: CLASS_KW@9..15 "class" [] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@15..17 "A" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@17..18 "{" [] [],
            members: JsClassMemberList [],
            r_curly_token: R_CURLY@18..19 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: ABSTRACT_KW@19..29 "abstract" [Newline("\n")] [Whitespace(" ")],
            class_token: CLASS_KW@29..35 "class" [] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@35..51 "ConcreteMembers" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@51..52 "{" [] [],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsLiteralMemberName {
                        value: IDENT@52..61 "name" [Newline("\n"), Whitespace("    ")] [],
                    },
                    property_annotation: TsTypeAnnotation {
                        colon_token: COLON@61..63 ":" [] [Whitespace(" ")],
                        ty: TsStringType {
                            string_token: STRING_KW@63..69 "string" [] [],
                        },
                    },
                    value: missing (optional),
                    semicolon_token: SEMICOLON@69..70 ";" [] [],
                },
                JsConstructorClassMember {
                    modifiers: JsConstructorModifierList [],
                    name: JsLiteralMemberName {
                        value: IDENT@70..86 "constructor" [Newline("\n"), Whitespace("    ")] [],
                    },
                    parameters: JsConstructorParameters {
                        l_paren_token: L_PAREN@86..87 "(" [] [],
                        parameters: JsConstructorParameterList [
                            JsFormalParameter {
                                decorators: JsDecoratorList [],
                                binding: JsIdentifierBinding {
                                    name_token: IDENT@87..91 "name" [] [],
                                },
                                question_mark_token: missing (optional),
                                type_annotation: TsTypeAnnotation {
                                    colon_token: COLON@91..93 ":" [] [Whitespace(" ")],
                                    ty: TsStringType {
                                        string_token: STRING_KW@93..99 "string" [] [],
                                    },
                                },
                                initializer: missing (optional),
                            },
                        ],
                        r_paren_token: R_PAREN@99..101 ")" [] [Whitespace(" ")],
                    },
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@101..103 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsAssignmentExpression {
                                    left: JsStaticMemberAssignment {
                                        object: JsThisExpression {
                                            this_token: THIS_KW@103..107 "this" [] [],
                                        },
                                        dot_token: DOT@107..108 "." [] [],
                                        member: JsName {
                                            value_token: IDENT@108..113 "name" [] [Whitespace(" ")],
                                        },
                                    },
                                    operator_token: EQ@113..115 "=" [] [Whitespace(" ")],
                                    right: JsIdentifierExpression {
                                        name: JsReferenceIdentifier {
                                            value_token: IDENT@115..119 "name" [] [],
                                        },
                                    },
                                },
                                semicolon_token: SEMICOLON@119..121 ";" [] [Whitespace(" ")],
                            },
                        ],
                        r_curly_token: R_CURLY@121..122 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@122..134 "display" [Newline("\n"), Whitespace("    ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@134..135 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@135..136 ")" [] [],
                    },
                    return_type_annotation: TsReturnTypeAnnotation {
                        colon_token: COLON@136..138 ":" [] [Whitespace(" ")],
                        ty: TsVoidType {
                            void_token: VOID_KW@138..143 "void" [] [Whitespace(" ")],
                        },
                    },
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@143..145 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsCallExpression {
                                    callee: JsStaticMemberExpression {
                                        object: JsIdentifierExpression {
                                            name: JsReferenceIdentifier {
                                                value_token: IDENT@145..152 "console" [] [],
                                            },
                                        },
                                        operator_token: DOT@152..153 "." [] [],
                                        member: JsName {
                                            value_token: IDENT@153..156 "log" [] [],
                                        },
                                    },
                                    optional_chain_token: missing (optional),
                                    type_arguments: missing (optional),
                                    arguments: JsCallArguments {
                                        l_paren_token: L_PAREN@156..157 "(" [] [],
                                        args: JsCallArgumentList [
                                            JsStaticMemberExpression {
                                                object: JsThisExpression {
                                                    this_token: THIS_KW@157..161 "this" [] [],
                                                },
                                                operator_token: DOT@161..162 "." [] [],
                                                member: JsName {
                                                    value_token: IDENT@162..166 "name" [] [],
                                                },
                                            },
                                        ],
                                        r_paren_token: R_PAREN@166..167 ")" [] [],
                                    },
                                },
                                semicolon_token: SEMICOLON@167..169 ";" [] [Whitespace(" ")],
                            },
                        ],
                        r_curly_token: R_CURLY@169..170 "}" [] [],
                    },
                },
                JsGetterClassMember {
                    modifiers: JsMethodModifierList [
                        TsAccessibilityModifier {
                            modifier_token: PUBLIC_KW@170..182 "public" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                        },
                    ],
                    get_token: GET_KW@182..186 "get" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@186..193 "my_name" [] [],
                    },
                    l_paren_token: L_PAREN@193..194 "(" [] [],
                    r_paren_token: R_PAREN@194..196 ")" [] [Whitespace(" ")],
                    return_type: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@196..198 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsReturnStatement {
                                return_token: RETURN_KW@198..205 "return" [] [Whitespace(" ")],
                                argument: JsStaticMemberExpression {
                                    object: JsThisExpression {
                                        this_token: THIS_KW@205..209 "this" [] [],
                                    },
                                    operator_token: DOT@209..210 "." [] [],
                                    member: JsName {
                                        value_token: IDENT@210..214 "name" [] [],
                                    },
                                },
                                semicolon_token: SEMICOLON@214..216 ";" [] [Whitespace(" ")],
                            },
                        ],
                        r_curly_token: R_CURLY@216..217 "}" [] [],
                    },
                },
                JsSetterClassMember {
                    modifiers: JsMethodModifierList [
                        TsAccessibilityModifier {
                            modifier_token: PUBLIC_KW@217..229 "public" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                        },
                    ],
                    set_token: SET_KW@229..233 "set" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@233..240 "my_name" [] [],
                    },
                    l_paren_token: L_PAREN@240..241 "(" [] [],
                    parameter: JsFormalParameter {
                        decorators: JsDecoratorList [],
                        binding: JsIdentifierBinding {
                            name_token: IDENT@241..245 "name" [] [],
                        },
                        question_mark_token: missing (optional),
                        type_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    r_paren_token: R_PAREN@245..247 ")" [] [Whitespace(" ")],
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@247..249 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsAssignmentExpression {
                                    left: JsStaticMemberAssignment {
                                        object: JsThisExpression {
                                            this_token: THIS_KW@249..253 "this" [] [],
                                        },
                                        dot_token: DOT@253..254 "." [] [],
                                        member: JsName {
                                            value_token: IDENT@254..259 "name" [] [Whitespace(" ")],
                                        },
                                    },
                                    operator_token: EQ@259..261 "=" [] [Whitespace(" ")],
                                    right: JsIdentifierExpression {
                                        name: JsReferenceIdentifier {
                                            value_token: IDENT@261..265 "name" [] [],
                                        },
                                    },
                                },
                                semicolon_token: SEMICOLON@265..267 ";" [] [Whitespace(" ")],
                            },
                        ],
                        r_curly_token: R_CURLY@267..268 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@268..274 "#" [Newline("\n"), Whitespace("    ")] [],
                        id_token: IDENT@274..288 "private_method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@288..289 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@289..291 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@291..293 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@293..294 "}" [] [],
                    },
                },
            ],
            r_curly_token: R_CURLY@294..296 "}" [Newline("\n")] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: ABSTRACT_KW@296..306 "abstract" [Newline("\n")] [Whitespace(" ")],
            class_token: CLASS_KW@306..312 "class" [] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@312..328 "AbstractMembers" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@328..329 "{" [] [],
            members: JsClassMemberList [
                TsPropertySignatureClassMember {
                    modifiers: TsPropertySignatureModifierList [
                        TsAbstractModifier {
                            modifier_token: ABSTRACT_KW@329..343 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                        },
                    ],
                    name: JsLiteralMemberName {
                        value: IDENT@343..347 "name" [] [],
                    },
                    property_annotation: TsTypeAnnotation {
                        colon_token: COLON@347..349 ":" [] [Whitespace(" ")],
                        ty: TsStringType {
                            string_token: STRING_KW@349..355 "string" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@355..356 ";" [] [],
                },
                TsMethodSignatureClassMember {
                    modifiers: TsMethodSignatureModifierList [
                        TsAbstractModifier {
                            modifier_token: ABSTRACT_KW@356..370 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@370..377 "display" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@377..378 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@378..379 ")" [] [],
                    },
                    return_type_annotation: missing (optional),
                    semicolon_token: SEMICOLON@379..380 ";" [] [],
                },
                TsGetterSignatureClassMember {
                    modifiers: TsMethodSignatureModifierList [
                        TsAbstractModifier {
                            modifier_token: ABSTRACT_KW@380..394 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                        },
                    ],
                    get_token: GET_KW@394..398 "get" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@398..405 "my_name" [] [],
                    },
                    l_paren_token: L_PAREN@405..406 "(" [] [],
                    r_paren_token: R_PAREN@406..407 ")" [] [],
                    return_type: missing (optional),
                    semicolon_token: SEMICOLON@407..408 ";" [] [],
                },
                TsSetterSignatureClassMember {
                    modifiers: TsMethodSignatureModifierList [
                        TsAbstractModifier {
                            modifier_token: ABSTRACT_KW@408..422 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                        },
                    ],
                    set_token: SET_KW@422..426 "set" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@426..433 "my_name" [] [],
                    },
                    l_paren_token: L_PAREN@433..434 "(" [] [],
                    parameter: JsFormalParameter {
                        decorators: JsDecoratorList [],
                        binding: JsIdentifierBinding {
                            name_token: IDENT@434..437 "val" [] [],
                        },
                        question_mark_token: missing (optional),
                        type_annotation: missing (optional),
                        initializer: missing (optional),
                    },
                    r_paren_token: R_PAREN@437..438 ")" [] [],
                    semicolon_token: SEMICOLON@438..439 ";" [] [],
                },
            ],
            r_curly_token: R_CURLY@439..441 "}" [Newline("\n")] [],
        },
    ],
    eof_token: EOF@441..442 "" [Newline("\n")] [],
}

0: JS_MODULE@0..442
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..441
    0: JS_CLASS_DECLARATION@0..19
      0: JS_DECORATOR_LIST@0..0
      1: ABSTRACT_KW@0..9 "abstract" [] [Whitespace(" ")]
      2: CLASS_KW@9..15 "class" [] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@15..17
        0: IDENT@15..17 "A" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@17..18 "{" [] []
      8: JS_CLASS_MEMBER_LIST@18..18
      9: R_CURLY@18..19 "}" [] []
    1: JS_CLASS_DECLARATION@19..296
      0: JS_DECORATOR_LIST@19..19
      1: ABSTRACT_KW@19..29 "abstract" [Newline("\n")] [Whitespace(" ")]
      2: CLASS_KW@29..35 "class" [] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@35..51
        0: IDENT@35..51 "ConcreteMembers" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@51..52 "{" [] []
      8: JS_CLASS_MEMBER_LIST@52..294
        0: JS_PROPERTY_CLASS_MEMBER@52..70
          0: JS_PROPERTY_MODIFIER_LIST@52..52
          1: JS_LITERAL_MEMBER_NAME@52..61
            0: IDENT@52..61 "name" [Newline("\n"), Whitespace("    ")] []
          2: TS_TYPE_ANNOTATION@61..69
            0: COLON@61..63 ":" [] [Whitespace(" ")]
            1: TS_STRING_TYPE@63..69
              0: STRING_KW@63..69 "string" [] []
          3: (empty)
          4: SEMICOLON@69..70 ";" [] []
        1: JS_CONSTRUCTOR_CLASS_MEMBER@70..122
          0: JS_CONSTRUCTOR_MODIFIER_LIST@70..70
          1: JS_LITERAL_MEMBER_NAME@70..86
            0: IDENT@70..86 "constructor" [Newline("\n"), Whitespace("    ")] []
          2: JS_CONSTRUCTOR_PARAMETERS@86..101
            0: L_PAREN@86..87 "(" [] []
            1: JS_CONSTRUCTOR_PARAMETER_LIST@87..99
              0: JS_FORMAL_PARAMETER@87..99
                0: JS_DECORATOR_LIST@87..87
                1: JS_IDENTIFIER_BINDING@87..91
                  0: IDENT@87..91 "name" [] []
                2: (empty)
                3: TS_TYPE_ANNOTATION@91..99
                  0: COLON@91..93 ":" [] [Whitespace(" ")]
                  1: TS_STRING_TYPE@93..99
                    0: STRING_KW@93..99 "string" [] []
                4: (empty)
            2: R_PAREN@99..101 ")" [] [Whitespace(" ")]
          3: JS_FUNCTION_BODY@101..122
            0: L_CURLY@101..103 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@103..103
            2: JS_STATEMENT_LIST@103..121
              0: JS_EXPRESSION_STATEMENT@103..121
                0: JS_ASSIGNMENT_EXPRESSION@103..119
                  0: JS_STATIC_MEMBER_ASSIGNMENT@103..113
                    0: JS_THIS_EXPRESSION@103..107
                      0: THIS_KW@103..107 "this" [] []
                    1: DOT@107..108 "." [] []
                    2: JS_NAME@108..113
                      0: IDENT@108..113 "name" [] [Whitespace(" ")]
                  1: EQ@113..115 "=" [] [Whitespace(" ")]
                  2: JS_IDENTIFIER_EXPRESSION@115..119
                    0: JS_REFERENCE_IDENTIFIER@115..119
                      0: IDENT@115..119 "name" [] []
                1: SEMICOLON@119..121 ";" [] [Whitespace(" ")]
            3: R_CURLY@121..122 "}" [] []
        2: JS_METHOD_CLASS_MEMBER@122..170
          0: JS_METHOD_MODIFIER_LIST@122..122
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@122..134
            0: IDENT@122..134 "display" [Newline("\n"), Whitespace("    ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@134..136
            0: L_PAREN@134..135 "(" [] []
            1: JS_PARAMETER_LIST@135..135
            2: R_PAREN@135..136 ")" [] []
          7: TS_RETURN_TYPE_ANNOTATION@136..143
            0: COLON@136..138 ":" [] [Whitespace(" ")]
            1: TS_VOID_TYPE@138..143
              0: VOID_KW@138..143 "void" [] [Whitespace(" ")]
          8: JS_FUNCTION_BODY@143..170
            0: L_CURLY@143..145 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@145..145
            2: JS_STATEMENT_LIST@145..169
              0: JS_EXPRESSION_STATEMENT@145..169
                0: JS_CALL_EXPRESSION@145..167
                  0: JS_STATIC_MEMBER_EXPRESSION@145..156
                    0: JS_IDENTIFIER_EXPRESSION@145..152
                      0: JS_REFERENCE_IDENTIFIER@145..152
                        0: IDENT@145..152 "console" [] []
                    1: DOT@152..153 "." [] []
                    2: JS_NAME@153..156
                      0: IDENT@153..156 "log" [] []
                  1: (empty)
                  2: (empty)
                  3: JS_CALL_ARGUMENTS@156..167
                    0: L_PAREN@156..157 "(" [] []
                    1: JS_CALL_ARGUMENT_LIST@157..166
                      0: JS_STATIC_MEMBER_EXPRESSION@157..166
                        0: JS_THIS_EXPRESSION@157..161
                          0: THIS_KW@157..161 "this" [] []
                        1: DOT@161..162 "." [] []
                        2: JS_NAME@162..166
                          0: IDENT@162..166 "name" [] []
                    2: R_PAREN@166..167 ")" [] []
                1: SEMICOLON@167..169 ";" [] [Whitespace(" ")]
            3: R_CURLY@169..170 "}" [] []
        3: JS_GETTER_CLASS_MEMBER@170..217
          0: JS_METHOD_MODIFIER_LIST@170..182
            0: TS_ACCESSIBILITY_MODIFIER@170..182
              0: PUBLIC_KW@170..182 "public" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
          1: GET_KW@182..186 "get" [] [Whitespace(" ")]
          2: JS_LITERAL_MEMBER_NAME@186..193
            0: IDENT@186..193 "my_name" [] []
          3: L_PAREN@193..194 "(" [] []
          4: R_PAREN@194..196 ")" [] [Whitespace(" ")]
          5: (empty)
          6: JS_FUNCTION_BODY@196..217
            0: L_CURLY@196..198 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@198..198
            2: JS_STATEMENT_LIST@198..216
              0: JS_RETURN_STATEMENT@198..216
                0: RETURN_KW@198..205 "return" [] [Whitespace(" ")]
                1: JS_STATIC_MEMBER_EXPRESSION@205..214
                  0: JS_THIS_EXPRESSION@205..209
                    0: THIS_KW@205..209 "this" [] []
                  1: DOT@209..210 "." [] []
                  2: JS_NAME@210..214
                    0: IDENT@210..214 "name" [] []
                2: SEMICOLON@214..216 ";" [] [Whitespace(" ")]
            3: R_CURLY@216..217 "}" [] []
        4: JS_SETTER_CLASS_MEMBER@217..268
          0: JS_METHOD_MODIFIER_LIST@217..229
            0: TS_ACCESSIBILITY_MODIFIER@217..229
              0: PUBLIC_KW@217..229 "public" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
          1: SET_KW@229..233 "set" [] [Whitespace(" ")]
          2: JS_LITERAL_MEMBER_NAME@233..240
            0: IDENT@233..240 "my_name" [] []
          3: L_PAREN@240..241 "(" [] []
          4: JS_FORMAL_PARAMETER@241..245
            0: JS_DECORATOR_LIST@241..241
            1: JS_IDENTIFIER_BINDING@241..245
              0: IDENT@241..245 "name" [] []
            2: (empty)
            3: (empty)
            4: (empty)
          5: R_PAREN@245..247 ")" [] [Whitespace(" ")]
          6: JS_FUNCTION_BODY@247..268
            0: L_CURLY@247..249 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@249..249
            2: JS_STATEMENT_LIST@249..267
              0: JS_EXPRESSION_STATEMENT@249..267
                0: JS_ASSIGNMENT_EXPRESSION@249..265
                  0: JS_STATIC_MEMBER_ASSIGNMENT@249..259
                    0: JS_THIS_EXPRESSION@249..253
                      0: THIS_KW@249..253 "this" [] []
                    1: DOT@253..254 "." [] []
                    2: JS_NAME@254..259
                      0: IDENT@254..259 "name" [] [Whitespace(" ")]
                  1: EQ@259..261 "=" [] [Whitespace(" ")]
                  2: JS_IDENTIFIER_EXPRESSION@261..265
                    0: JS_REFERENCE_IDENTIFIER@261..265
                      0: IDENT@261..265 "name" [] []
                1: SEMICOLON@265..267 ";" [] [Whitespace(" ")]
            3: R_CURLY@267..268 "}" [] []
        5: JS_METHOD_CLASS_MEMBER@268..294
          0: JS_METHOD_MODIFIER_LIST@268..268
          1: (empty)
          2: (empty)
          3: JS_PRIVATE_CLASS_MEMBER_NAME@268..288
            0: HASH@268..274 "#" [Newline("\n"), Whitespace("    ")] []
            1: IDENT@274..288 "private_method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@288..291
            0: L_PAREN@288..289 "(" [] []
            1: JS_PARAMETER_LIST@289..289
            2: R_PAREN@289..291 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@291..294
            0: L_CURLY@291..293 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@293..293
            2: JS_STATEMENT_LIST@293..293
            3: R_CURLY@293..294 "}" [] []
      9: R_CURLY@294..296 "}" [Newline("\n")] []
    2: JS_CLASS_DECLARATION@296..441
      0: JS_DECORATOR_LIST@296..296
      1: ABSTRACT_KW@296..306 "abstract" [Newline("\n")] [Whitespace(" ")]
      2: CLASS_KW@306..312 "class" [] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@312..328
        0: IDENT@312..328 "AbstractMembers" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@328..329 "{" [] []
      8: JS_CLASS_MEMBER_LIST@329..439
        0: TS_PROPERTY_SIGNATURE_CLASS_MEMBER@329..356
          0: TS_PROPERTY_SIGNATURE_MODIFIER_LIST@329..343
            0: TS_ABSTRACT_MODIFIER@329..343
              0: ABSTRACT_KW@329..343 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
          1: JS_LITERAL_MEMBER_NAME@343..347
            0: IDENT@343..347 "name" [] []
          2: TS_TYPE_ANNOTATION@347..355
            0: COLON@347..349 ":" [] [Whitespace(" ")]
            1: TS_STRING_TYPE@349..355
              0: STRING_KW@349..355 "string" [] []
          3: SEMICOLON@355..356 ";" [] []
        1: TS_METHOD_SIGNATURE_CLASS_MEMBER@356..380
          0: TS_METHOD_SIGNATURE_MODIFIER_LIST@356..370
            0: TS_ABSTRACT_MODIFIER@356..370
              0: ABSTRACT_KW@356..370 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
          1: (empty)
          2: JS_LITERAL_MEMBER_NAME@370..377
            0: IDENT@370..377 "display" [] []
          3: (empty)
          4: (empty)
          5: JS_PARAMETERS@377..379
            0: L_PAREN@377..378 "(" [] []
            1: JS_PARAMETER_LIST@378..378
            2: R_PAREN@378..379 ")" [] []
          6: (empty)
          7: SEMICOLON@379..380 ";" [] []
        2: TS_GETTER_SIGNATURE_CLASS_MEMBER@380..408
          0: TS_METHOD_SIGNATURE_MODIFIER_LIST@380..394
            0: TS_ABSTRACT_MODIFIER@380..394
              0: ABSTRACT_KW@380..394 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
          1: GET_KW@394..398 "get" [] [Whitespace(" ")]
          2: JS_LITERAL_MEMBER_NAME@398..405
            0: IDENT@398..405 "my_name" [] []
          3: L_PAREN@405..406 "(" [] []
          4: R_PAREN@406..407 ")" [] []
          5: (empty)
          6: SEMICOLON@407..408 ";" [] []
        3: TS_SETTER_SIGNATURE_CLASS_MEMBER@408..439
          0: TS_METHOD_SIGNATURE_MODIFIER_LIST@408..422
            0: TS_ABSTRACT_MODIFIER@408..422
              0: ABSTRACT_KW@408..422 "abstract" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
          1: SET_KW@422..426 "set" [] [Whitespace(" ")]
          2: JS_LITERAL_MEMBER_NAME@426..433
            0: IDENT@426..433 "my_name" [] []
          3: L_PAREN@433..434 "(" [] []
          4: JS_FORMAL_PARAMETER@434..437
            0: JS_DECORATOR_LIST@434..434
            1: JS_IDENTIFIER_BINDING@434..437
              0: IDENT@434..437 "val" [] []
            2: (empty)
            3: (empty)
            4: (empty)
          5: R_PAREN@437..438 ")" [] []
          6: SEMICOLON@438..439 ";" [] []
      9: R_CURLY@439..441 "}" [Newline("\n")] []
  4: EOF@441..442 "" [Newline("\n")] []