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
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@6..16 "TestClass" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@16..18 "{" [] [Whitespace(" ")],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@18..19 "#" [] [],
                        id_token: IDENT@19..26 "member" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@26..28 "=" [] [Whitespace(" ")],
                        expression: JsBooleanLiteralExpression {
                            value_token: TRUE_KW@28..32 "true" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@32..34 ";" [] [Whitespace(" ")],
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@34..40 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@40..41 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@41..43 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@43..45 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsUnaryExpression {
                                    operator_token: DELETE_KW@45..52 "delete" [] [Whitespace(" ")],
                                    argument: JsCallExpression {
                                        callee: JsIdentifierExpression {
                                            name: JsReferenceIdentifier {
                                                value_token: IDENT@52..56 "func" [] [],
                                            },
                                        },
                                        optional_chain_token: missing (optional),
                                        type_arguments: missing (optional),
                                        arguments: JsCallArguments {
                                            l_paren_token: L_PAREN@56..57 "(" [] [],
                                            args: JsCallArgumentList [
                                                JsStaticMemberExpression {
                                                    object: JsThisExpression {
                                                        this_token: THIS_KW@57..61 "this" [] [],
                                                    },
                                                    operator_token: DOT@61..62 "." [] [],
                                                    member: JsPrivateName {
                                                        hash_token: HASH@62..63 "#" [] [],
                                                        value_token: IDENT@63..69 "member" [] [],
                                                    },
                                                },
                                            ],
                                            r_paren_token: R_PAREN@69..71 ")" [] [Whitespace(" ")],
                                        },
                                    },
                                },
                                semicolon_token: missing (optional),
                            },
                        ],
                        r_curly_token: R_CURLY@71..73 "}" [] [Whitespace(" ")],
                    },
                },
            ],
            r_curly_token: R_CURLY@73..74 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@74..81 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@81..91 "TestClass" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@91..93 "{" [] [Whitespace(" ")],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@93..94 "#" [] [],
                        id_token: IDENT@94..101 "member" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@101..103 "=" [] [Whitespace(" ")],
                        expression: JsBooleanLiteralExpression {
                            value_token: TRUE_KW@103..107 "true" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@107..109 ";" [] [Whitespace(" ")],
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@109..115 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@115..116 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@116..118 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@118..120 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsUnaryExpression {
                                    operator_token: DELETE_KW@120..127 "delete" [] [Whitespace(" ")],
                                    argument: JsArrayExpression {
                                        l_brack_token: L_BRACK@127..128 "[" [] [],
                                        elements: JsArrayElementList [
                                            JsStaticMemberExpression {
                                                object: JsThisExpression {
                                                    this_token: THIS_KW@128..132 "this" [] [],
                                                },
                                                operator_token: DOT@132..133 "." [] [],
                                                member: JsPrivateName {
                                                    hash_token: HASH@133..134 "#" [] [],
                                                    value_token: IDENT@134..140 "member" [] [],
                                                },
                                            },
                                        ],
                                        r_brack_token: R_BRACK@140..142 "]" [] [Whitespace(" ")],
                                    },
                                },
                                semicolon_token: missing (optional),
                            },
                        ],
                        r_curly_token: R_CURLY@142..144 "}" [] [Whitespace(" ")],
                    },
                },
            ],
            r_curly_token: R_CURLY@144..145 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@145..152 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@152..162 "TestClass" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@162..164 "{" [] [Whitespace(" ")],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@164..165 "#" [] [],
                        id_token: IDENT@165..172 "member" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@172..174 "=" [] [Whitespace(" ")],
                        expression: JsBooleanLiteralExpression {
                            value_token: TRUE_KW@174..178 "true" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@178..180 ";" [] [Whitespace(" ")],
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@180..186 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@186..187 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@187..189 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@189..191 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsUnaryExpression {
                                    operator_token: DELETE_KW@191..198 "delete" [] [Whitespace(" ")],
                                    argument: JsObjectExpression {
                                        l_curly_token: L_CURLY@198..200 "{" [] [Whitespace(" ")],
                                        members: JsObjectMemberList [
                                            JsPropertyObjectMember {
                                                name: JsLiteralMemberName {
                                                    value: IDENT@200..203 "key" [] [],
                                                },
                                                colon_token: COLON@203..205 ":" [] [Whitespace(" ")],
                                                value: JsStaticMemberExpression {
                                                    object: JsThisExpression {
                                                        this_token: THIS_KW@205..209 "this" [] [],
                                                    },
                                                    operator_token: DOT@209..210 "." [] [],
                                                    member: JsPrivateName {
                                                        hash_token: HASH@210..211 "#" [] [],
                                                        value_token: IDENT@211..218 "member" [] [Whitespace(" ")],
                                                    },
                                                },
                                            },
                                        ],
                                        r_curly_token: R_CURLY@218..220 "}" [] [Whitespace(" ")],
                                    },
                                },
                                semicolon_token: missing (optional),
                            },
                        ],
                        r_curly_token: R_CURLY@220..222 "}" [] [Whitespace(" ")],
                    },
                },
            ],
            r_curly_token: R_CURLY@222..223 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@223..230 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@230..240 "TestClass" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@240..242 "{" [] [Whitespace(" ")],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@242..243 "#" [] [],
                        id_token: IDENT@243..250 "member" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@250..252 "=" [] [Whitespace(" ")],
                        expression: JsBooleanLiteralExpression {
                            value_token: TRUE_KW@252..256 "true" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@256..258 ";" [] [Whitespace(" ")],
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@258..264 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@264..265 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@265..267 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@267..269 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsUnaryExpression {
                                    operator_token: DELETE_KW@269..276 "delete" [] [Whitespace(" ")],
                                    argument: JsParenthesizedExpression {
                                        l_paren_token: L_PAREN@276..277 "(" [] [],
                                        expression: JsArrowFunctionExpression {
                                            async_token: missing (optional),
                                            type_parameters: missing (optional),
                                            parameters: JsParameters {
                                                l_paren_token: L_PAREN@277..278 "(" [] [],
                                                items: JsParameterList [],
                                                r_paren_token: R_PAREN@278..280 ")" [] [Whitespace(" ")],
                                            },
                                            return_type_annotation: missing (optional),
                                            fat_arrow_token: FAT_ARROW@280..283 "=>" [] [Whitespace(" ")],
                                            body: JsFunctionBody {
                                                l_curly_token: L_CURLY@283..285 "{" [] [Whitespace(" ")],
                                                directives: JsDirectiveList [],
                                                statements: JsStatementList [
                                                    JsExpressionStatement {
                                                        expression: JsStaticMemberExpression {
                                                            object: JsThisExpression {
                                                                this_token: THIS_KW@285..289 "this" [] [],
                                                            },
                                                            operator_token: DOT@289..290 "." [] [],
                                                            member: JsPrivateName {
                                                                hash_token: HASH@290..291 "#" [] [],
                                                                value_token: IDENT@291..297 "member" [] [],
                                                            },
                                                        },
                                                        semicolon_token: SEMICOLON@297..299 ";" [] [Whitespace(" ")],
                                                    },
                                                ],
                                                r_curly_token: R_CURLY@299..300 "}" [] [],
                                            },
                                        },
                                        r_paren_token: R_PAREN@300..302 ")" [] [Whitespace(" ")],
                                    },
                                },
                                semicolon_token: missing (optional),
                            },
                        ],
                        r_curly_token: R_CURLY@302..304 "}" [] [Whitespace(" ")],
                    },
                },
            ],
            r_curly_token: R_CURLY@304..305 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@305..312 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@312..322 "TestClass" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@322..324 "{" [] [Whitespace(" ")],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@324..325 "#" [] [],
                        id_token: IDENT@325..332 "member" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@332..334 "=" [] [Whitespace(" ")],
                        expression: JsBooleanLiteralExpression {
                            value_token: TRUE_KW@334..338 "true" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@338..340 ";" [] [Whitespace(" ")],
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@340..346 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@346..347 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@347..349 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@349..351 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsUnaryExpression {
                                    operator_token: DELETE_KW@351..358 "delete" [] [Whitespace(" ")],
                                    argument: JsParenthesizedExpression {
                                        l_paren_token: L_PAREN@358..359 "(" [] [],
                                        expression: JsArrowFunctionExpression {
                                            async_token: missing (optional),
                                            type_parameters: missing (optional),
                                            parameters: JsIdentifierBinding {
                                                name_token: IDENT@359..365 "param" [] [Whitespace(" ")],
                                            },
                                            return_type_annotation: missing (optional),
                                            fat_arrow_token: FAT_ARROW@365..368 "=>" [] [Whitespace(" ")],
                                            body: JsFunctionBody {
                                                l_curly_token: L_CURLY@368..370 "{" [] [Whitespace(" ")],
                                                directives: JsDirectiveList [],
                                                statements: JsStatementList [
                                                    JsExpressionStatement {
                                                        expression: JsStaticMemberExpression {
                                                            object: JsThisExpression {
                                                                this_token: THIS_KW@370..374 "this" [] [],
                                                            },
                                                            operator_token: DOT@374..375 "." [] [],
                                                            member: JsPrivateName {
                                                                hash_token: HASH@375..376 "#" [] [],
                                                                value_token: IDENT@376..382 "member" [] [],
                                                            },
                                                        },
                                                        semicolon_token: SEMICOLON@382..384 ";" [] [Whitespace(" ")],
                                                    },
                                                ],
                                                r_curly_token: R_CURLY@384..385 "}" [] [],
                                            },
                                        },
                                        r_paren_token: R_PAREN@385..387 ")" [] [Whitespace(" ")],
                                    },
                                },
                                semicolon_token: missing (optional),
                            },
                        ],
                        r_curly_token: R_CURLY@387..389 "}" [] [Whitespace(" ")],
                    },
                },
            ],
            r_curly_token: R_CURLY@389..390 "}" [] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@390..397 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@397..407 "TestClass" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@407..409 "{" [] [Whitespace(" ")],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@409..410 "#" [] [],
                        id_token: IDENT@410..417 "member" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@417..419 "=" [] [Whitespace(" ")],
                        expression: JsBooleanLiteralExpression {
                            value_token: TRUE_KW@419..423 "true" [] [],
                        },
                    },
                    semicolon_token: SEMICOLON@423..425 ";" [] [Whitespace(" ")],
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@425..431 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@431..432 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@432..434 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@434..436 "{" [] [Whitespace(" ")],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [
                            JsExpressionStatement {
                                expression: JsUnaryExpression {
                                    operator_token: DELETE_KW@436..443 "delete" [] [Whitespace(" ")],
                                    argument: JsParenthesizedExpression {
                                        l_paren_token: L_PAREN@443..444 "(" [] [],
                                        expression: JsArrowFunctionExpression {
                                            async_token: ASYNC_KW@444..450 "async" [] [Whitespace(" ")],
                                            type_parameters: missing (optional),
                                            parameters: JsParameters {
                                                l_paren_token: L_PAREN@450..451 "(" [] [],
                                                items: JsParameterList [],
                                                r_paren_token: R_PAREN@451..453 ")" [] [Whitespace(" ")],
                                            },
                                            return_type_annotation: missing (optional),
                                            fat_arrow_token: FAT_ARROW@453..456 "=>" [] [Whitespace(" ")],
                                            body: JsFunctionBody {
                                                l_curly_token: L_CURLY@456..458 "{" [] [Whitespace(" ")],
                                                directives: JsDirectiveList [],
                                                statements: JsStatementList [
                                                    JsExpressionStatement {
                                                        expression: JsStaticMemberExpression {
                                                            object: JsThisExpression {
                                                                this_token: THIS_KW@458..462 "this" [] [],
                                                            },
                                                            operator_token: DOT@462..463 "." [] [],
                                                            member: JsPrivateName {
                                                                hash_token: HASH@463..464 "#" [] [],
                                                                value_token: IDENT@464..470 "member" [] [],
                                                            },
                                                        },
                                                        semicolon_token: SEMICOLON@470..472 ";" [] [Whitespace(" ")],
                                                    },
                                                ],
                                                r_curly_token: R_CURLY@472..473 "}" [] [],
                                            },
                                        },
                                        r_paren_token: R_PAREN@473..475 ")" [] [Whitespace(" ")],
                                    },
                                },
                                semicolon_token: missing (optional),
                            },
                        ],
                        r_curly_token: R_CURLY@475..477 "}" [] [Whitespace(" ")],
                    },
                },
            ],
            r_curly_token: R_CURLY@477..478 "}" [] [],
        },
    ],
    eof_token: EOF@478..479 "" [Newline("\n")] [],
}

0: JS_MODULE@0..479
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..478
    0: JS_CLASS_DECLARATION@0..74
      0: JS_DECORATOR_LIST@0..0
      1: (empty)
      2: CLASS_KW@0..6 "class" [] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@6..16
        0: IDENT@6..16 "TestClass" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@16..18 "{" [] [Whitespace(" ")]
      8: JS_CLASS_MEMBER_LIST@18..73
        0: JS_PROPERTY_CLASS_MEMBER@18..34
          0: JS_PROPERTY_MODIFIER_LIST@18..18
          1: JS_PRIVATE_CLASS_MEMBER_NAME@18..26
            0: HASH@18..19 "#" [] []
            1: IDENT@19..26 "member" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@26..32
            0: EQ@26..28 "=" [] [Whitespace(" ")]
            1: JS_BOOLEAN_LITERAL_EXPRESSION@28..32
              0: TRUE_KW@28..32 "true" [] []
          4: SEMICOLON@32..34 ";" [] [Whitespace(" ")]
        1: JS_METHOD_CLASS_MEMBER@34..73
          0: JS_METHOD_MODIFIER_LIST@34..34
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@34..40
            0: IDENT@34..40 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@40..43
            0: L_PAREN@40..41 "(" [] []
            1: JS_PARAMETER_LIST@41..41
            2: R_PAREN@41..43 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@43..73
            0: L_CURLY@43..45 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@45..45
            2: JS_STATEMENT_LIST@45..71
              0: JS_EXPRESSION_STATEMENT@45..71
                0: JS_UNARY_EXPRESSION@45..71
                  0: DELETE_KW@45..52 "delete" [] [Whitespace(" ")]
                  1: JS_CALL_EXPRESSION@52..71
                    0: JS_IDENTIFIER_EXPRESSION@52..56
                      0: JS_REFERENCE_IDENTIFIER@52..56
                        0: IDENT@52..56 "func" [] []
                    1: (empty)
                    2: (empty)
                    3: JS_CALL_ARGUMENTS@56..71
                      0: L_PAREN@56..57 "(" [] []
                      1: JS_CALL_ARGUMENT_LIST@57..69
                        0: JS_STATIC_MEMBER_EXPRESSION@57..69
                          0: JS_THIS_EXPRESSION@57..61
                            0: THIS_KW@57..61 "this" [] []
                          1: DOT@61..62 "." [] []
                          2: JS_PRIVATE_NAME@62..69
                            0: HASH@62..63 "#" [] []
                            1: IDENT@63..69 "member" [] []
                      2: R_PAREN@69..71 ")" [] [Whitespace(" ")]
                1: (empty)
            3: R_CURLY@71..73 "}" [] [Whitespace(" ")]
      9: R_CURLY@73..74 "}" [] []
    1: JS_CLASS_DECLARATION@74..145
      0: JS_DECORATOR_LIST@74..74
      1: (empty)
      2: CLASS_KW@74..81 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@81..91
        0: IDENT@81..91 "TestClass" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@91..93 "{" [] [Whitespace(" ")]
      8: JS_CLASS_MEMBER_LIST@93..144
        0: JS_PROPERTY_CLASS_MEMBER@93..109
          0: JS_PROPERTY_MODIFIER_LIST@93..93
          1: JS_PRIVATE_CLASS_MEMBER_NAME@93..101
            0: HASH@93..94 "#" [] []
            1: IDENT@94..101 "member" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@101..107
            0: EQ@101..103 "=" [] [Whitespace(" ")]
            1: JS_BOOLEAN_LITERAL_EXPRESSION@103..107
              0: TRUE_KW@103..107 "true" [] []
          4: SEMICOLON@107..109 ";" [] [Whitespace(" ")]
        1: JS_METHOD_CLASS_MEMBER@109..144
          0: JS_METHOD_MODIFIER_LIST@109..109
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@109..115
            0: IDENT@109..115 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@115..118
            0: L_PAREN@115..116 "(" [] []
            1: JS_PARAMETER_LIST@116..116
            2: R_PAREN@116..118 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@118..144
            0: L_CURLY@118..120 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@120..120
            2: JS_STATEMENT_LIST@120..142
              0: JS_EXPRESSION_STATEMENT@120..142
                0: JS_UNARY_EXPRESSION@120..142
                  0: DELETE_KW@120..127 "delete" [] [Whitespace(" ")]
                  1: JS_ARRAY_EXPRESSION@127..142
                    0: L_BRACK@127..128 "[" [] []
                    1: JS_ARRAY_ELEMENT_LIST@128..140
                      0: JS_STATIC_MEMBER_EXPRESSION@128..140
                        0: JS_THIS_EXPRESSION@128..132
                          0: THIS_KW@128..132 "this" [] []
                        1: DOT@132..133 "." [] []
                        2: JS_PRIVATE_NAME@133..140
                          0: HASH@133..134 "#" [] []
                          1: IDENT@134..140 "member" [] []
                    2: R_BRACK@140..142 "]" [] [Whitespace(" ")]
                1: (empty)
            3: R_CURLY@142..144 "}" [] [Whitespace(" ")]
      9: R_CURLY@144..145 "}" [] []
    2: JS_CLASS_DECLARATION@145..223
      0: JS_DECORATOR_LIST@145..145
      1: (empty)
      2: CLASS_KW@145..152 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@152..162
        0: IDENT@152..162 "TestClass" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@162..164 "{" [] [Whitespace(" ")]
      8: JS_CLASS_MEMBER_LIST@164..222
        0: JS_PROPERTY_CLASS_MEMBER@164..180
          0: JS_PROPERTY_MODIFIER_LIST@164..164
          1: JS_PRIVATE_CLASS_MEMBER_NAME@164..172
            0: HASH@164..165 "#" [] []
            1: IDENT@165..172 "member" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@172..178
            0: EQ@172..174 "=" [] [Whitespace(" ")]
            1: JS_BOOLEAN_LITERAL_EXPRESSION@174..178
              0: TRUE_KW@174..178 "true" [] []
          4: SEMICOLON@178..180 ";" [] [Whitespace(" ")]
        1: JS_METHOD_CLASS_MEMBER@180..222
          0: JS_METHOD_MODIFIER_LIST@180..180
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@180..186
            0: IDENT@180..186 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@186..189
            0: L_PAREN@186..187 "(" [] []
            1: JS_PARAMETER_LIST@187..187
            2: R_PAREN@187..189 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@189..222
            0: L_CURLY@189..191 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@191..191
            2: JS_STATEMENT_LIST@191..220
              0: JS_EXPRESSION_STATEMENT@191..220
                0: JS_UNARY_EXPRESSION@191..220
                  0: DELETE_KW@191..198 "delete" [] [Whitespace(" ")]
                  1: JS_OBJECT_EXPRESSION@198..220
                    0: L_CURLY@198..200 "{" [] [Whitespace(" ")]
                    1: JS_OBJECT_MEMBER_LIST@200..218
                      0: JS_PROPERTY_OBJECT_MEMBER@200..218
                        0: JS_LITERAL_MEMBER_NAME@200..203
                          0: IDENT@200..203 "key" [] []
                        1: COLON@203..205 ":" [] [Whitespace(" ")]
                        2: JS_STATIC_MEMBER_EXPRESSION@205..218
                          0: JS_THIS_EXPRESSION@205..209
                            0: THIS_KW@205..209 "this" [] []
                          1: DOT@209..210 "." [] []
                          2: JS_PRIVATE_NAME@210..218
                            0: HASH@210..211 "#" [] []
                            1: IDENT@211..218 "member" [] [Whitespace(" ")]
                    2: R_CURLY@218..220 "}" [] [Whitespace(" ")]
                1: (empty)
            3: R_CURLY@220..222 "}" [] [Whitespace(" ")]
      9: R_CURLY@222..223 "}" [] []
    3: JS_CLASS_DECLARATION@223..305
      0: JS_DECORATOR_LIST@223..223
      1: (empty)
      2: CLASS_KW@223..230 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@230..240
        0: IDENT@230..240 "TestClass" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@240..242 "{" [] [Whitespace(" ")]
      8: JS_CLASS_MEMBER_LIST@242..304
        0: JS_PROPERTY_CLASS_MEMBER@242..258
          0: JS_PROPERTY_MODIFIER_LIST@242..242
          1: JS_PRIVATE_CLASS_MEMBER_NAME@242..250
            0: HASH@242..243 "#" [] []
            1: IDENT@243..250 "member" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@250..256
            0: EQ@250..252 "=" [] [Whitespace(" ")]
            1: JS_BOOLEAN_LITERAL_EXPRESSION@252..256
              0: TRUE_KW@252..256 "true" [] []
          4: SEMICOLON@256..258 ";" [] [Whitespace(" ")]
        1: JS_METHOD_CLASS_MEMBER@258..304
          0: JS_METHOD_MODIFIER_LIST@258..258
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@258..264
            0: IDENT@258..264 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@264..267
            0: L_PAREN@264..265 "(" [] []
            1: JS_PARAMETER_LIST@265..265
            2: R_PAREN@265..267 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@267..304
            0: L_CURLY@267..269 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@269..269
            2: JS_STATEMENT_LIST@269..302
              0: JS_EXPRESSION_STATEMENT@269..302
                0: JS_UNARY_EXPRESSION@269..302
                  0: DELETE_KW@269..276 "delete" [] [Whitespace(" ")]
                  1: JS_PARENTHESIZED_EXPRESSION@276..302
                    0: L_PAREN@276..277 "(" [] []
                    1: JS_ARROW_FUNCTION_EXPRESSION@277..300
                      0: (empty)
                      1: (empty)
                      2: JS_PARAMETERS@277..280
                        0: L_PAREN@277..278 "(" [] []
                        1: JS_PARAMETER_LIST@278..278
                        2: R_PAREN@278..280 ")" [] [Whitespace(" ")]
                      3: (empty)
                      4: FAT_ARROW@280..283 "=>" [] [Whitespace(" ")]
                      5: JS_FUNCTION_BODY@283..300
                        0: L_CURLY@283..285 "{" [] [Whitespace(" ")]
                        1: JS_DIRECTIVE_LIST@285..285
                        2: JS_STATEMENT_LIST@285..299
                          0: JS_EXPRESSION_STATEMENT@285..299
                            0: JS_STATIC_MEMBER_EXPRESSION@285..297
                              0: JS_THIS_EXPRESSION@285..289
                                0: THIS_KW@285..289 "this" [] []
                              1: DOT@289..290 "." [] []
                              2: JS_PRIVATE_NAME@290..297
                                0: HASH@290..291 "#" [] []
                                1: IDENT@291..297 "member" [] []
                            1: SEMICOLON@297..299 ";" [] [Whitespace(" ")]
                        3: R_CURLY@299..300 "}" [] []
                    2: R_PAREN@300..302 ")" [] [Whitespace(" ")]
                1: (empty)
            3: R_CURLY@302..304 "}" [] [Whitespace(" ")]
      9: R_CURLY@304..305 "}" [] []
    4: JS_CLASS_DECLARATION@305..390
      0: JS_DECORATOR_LIST@305..305
      1: (empty)
      2: CLASS_KW@305..312 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@312..322
        0: IDENT@312..322 "TestClass" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@322..324 "{" [] [Whitespace(" ")]
      8: JS_CLASS_MEMBER_LIST@324..389
        0: JS_PROPERTY_CLASS_MEMBER@324..340
          0: JS_PROPERTY_MODIFIER_LIST@324..324
          1: JS_PRIVATE_CLASS_MEMBER_NAME@324..332
            0: HASH@324..325 "#" [] []
            1: IDENT@325..332 "member" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@332..338
            0: EQ@332..334 "=" [] [Whitespace(" ")]
            1: JS_BOOLEAN_LITERAL_EXPRESSION@334..338
              0: TRUE_KW@334..338 "true" [] []
          4: SEMICOLON@338..340 ";" [] [Whitespace(" ")]
        1: JS_METHOD_CLASS_MEMBER@340..389
          0: JS_METHOD_MODIFIER_LIST@340..340
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@340..346
            0: IDENT@340..346 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@346..349
            0: L_PAREN@346..347 "(" [] []
            1: JS_PARAMETER_LIST@347..347
            2: R_PAREN@347..349 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@349..389
            0: L_CURLY@349..351 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@351..351
            2: JS_STATEMENT_LIST@351..387
              0: JS_EXPRESSION_STATEMENT@351..387
                0: JS_UNARY_EXPRESSION@351..387
                  0: DELETE_KW@351..358 "delete" [] [Whitespace(" ")]
                  1: JS_PARENTHESIZED_EXPRESSION@358..387
                    0: L_PAREN@358..359 "(" [] []
                    1: JS_ARROW_FUNCTION_EXPRESSION@359..385
                      0: (empty)
                      1: (empty)
                      2: JS_IDENTIFIER_BINDING@359..365
                        0: IDENT@359..365 "param" [] [Whitespace(" ")]
                      3: (empty)
                      4: FAT_ARROW@365..368 "=>" [] [Whitespace(" ")]
                      5: JS_FUNCTION_BODY@368..385
                        0: L_CURLY@368..370 "{" [] [Whitespace(" ")]
                        1: JS_DIRECTIVE_LIST@370..370
                        2: JS_STATEMENT_LIST@370..384
                          0: JS_EXPRESSION_STATEMENT@370..384
                            0: JS_STATIC_MEMBER_EXPRESSION@370..382
                              0: JS_THIS_EXPRESSION@370..374
                                0: THIS_KW@370..374 "this" [] []
                              1: DOT@374..375 "." [] []
                              2: JS_PRIVATE_NAME@375..382
                                0: HASH@375..376 "#" [] []
                                1: IDENT@376..382 "member" [] []
                            1: SEMICOLON@382..384 ";" [] [Whitespace(" ")]
                        3: R_CURLY@384..385 "}" [] []
                    2: R_PAREN@385..387 ")" [] [Whitespace(" ")]
                1: (empty)
            3: R_CURLY@387..389 "}" [] [Whitespace(" ")]
      9: R_CURLY@389..390 "}" [] []
    5: JS_CLASS_DECLARATION@390..478
      0: JS_DECORATOR_LIST@390..390
      1: (empty)
      2: CLASS_KW@390..397 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@397..407
        0: IDENT@397..407 "TestClass" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@407..409 "{" [] [Whitespace(" ")]
      8: JS_CLASS_MEMBER_LIST@409..477
        0: JS_PROPERTY_CLASS_MEMBER@409..425
          0: JS_PROPERTY_MODIFIER_LIST@409..409
          1: JS_PRIVATE_CLASS_MEMBER_NAME@409..417
            0: HASH@409..410 "#" [] []
            1: IDENT@410..417 "member" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@417..423
            0: EQ@417..419 "=" [] [Whitespace(" ")]
            1: JS_BOOLEAN_LITERAL_EXPRESSION@419..423
              0: TRUE_KW@419..423 "true" [] []
          4: SEMICOLON@423..425 ";" [] [Whitespace(" ")]
        1: JS_METHOD_CLASS_MEMBER@425..477
          0: JS_METHOD_MODIFIER_LIST@425..425
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@425..431
            0: IDENT@425..431 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@431..434
            0: L_PAREN@431..432 "(" [] []
            1: JS_PARAMETER_LIST@432..432
            2: R_PAREN@432..434 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@434..477
            0: L_CURLY@434..436 "{" [] [Whitespace(" ")]
            1: JS_DIRECTIVE_LIST@436..436
            2: JS_STATEMENT_LIST@436..475
              0: JS_EXPRESSION_STATEMENT@436..475
                0: JS_UNARY_EXPRESSION@436..475
                  0: DELETE_KW@436..443 "delete" [] [Whitespace(" ")]
                  1: JS_PARENTHESIZED_EXPRESSION@443..475
                    0: L_PAREN@443..444 "(" [] []
                    1: JS_ARROW_FUNCTION_EXPRESSION@444..473
                      0: ASYNC_KW@444..450 "async" [] [Whitespace(" ")]
                      1: (empty)
                      2: JS_PARAMETERS@450..453
                        0: L_PAREN@450..451 "(" [] []
                        1: JS_PARAMETER_LIST@451..451
                        2: R_PAREN@451..453 ")" [] [Whitespace(" ")]
                      3: (empty)
                      4: FAT_ARROW@453..456 "=>" [] [Whitespace(" ")]
                      5: JS_FUNCTION_BODY@456..473
                        0: L_CURLY@456..458 "{" [] [Whitespace(" ")]
                        1: JS_DIRECTIVE_LIST@458..458
                        2: JS_STATEMENT_LIST@458..472
                          0: JS_EXPRESSION_STATEMENT@458..472
                            0: JS_STATIC_MEMBER_EXPRESSION@458..470
                              0: JS_THIS_EXPRESSION@458..462
                                0: THIS_KW@458..462 "this" [] []
                              1: DOT@462..463 "." [] []
                              2: JS_PRIVATE_NAME@463..470
                                0: HASH@463..464 "#" [] []
                                1: IDENT@464..470 "member" [] []
                            1: SEMICOLON@470..472 ";" [] [Whitespace(" ")]
                        3: R_CURLY@472..473 "}" [] []
                    2: R_PAREN@473..475 ")" [] [Whitespace(" ")]
                1: (empty)
            3: R_CURLY@475..477 "}" [] [Whitespace(" ")]
      9: R_CURLY@477..478 "}" [] []
  4: EOF@478..479 "" [Newline("\n")] []