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
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
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..11 "Test" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@11..12 "{" [] [],
            members: JsClassMemberList [
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@12..21 "method" [Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@21..22 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@22..24 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@24..25 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@25..26 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: ASYNC_KW@26..35 "async" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@35..46 "asyncMethod" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@46..47 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@47..49 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@49..50 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@50..51 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: ASYNC_KW@51..59 "async" [Newline("\n"), Whitespace("  ")] [],
                    star_token: STAR@59..61 "*" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@61..81 "asyncGeneratorMethod" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@81..82 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@82..84 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@84..85 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@85..86 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: STAR@86..91 "*" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@91..106 "generatorMethod" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@106..107 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@107..109 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@109..110 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@110..111 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: JS_STRING_LITERAL@111..119 "\"foo\"" [Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@119..120 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@120..122 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@122..123 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@123..124 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsComputedMemberName {
                        l_brack_token: L_BRACK@124..128 "[" [Newline("\n"), Whitespace("  ")] [],
                        expression: JsBinaryExpression {
                            left: JsStringLiteralExpression {
                                value_token: JS_STRING_LITERAL@128..134 "\"foo\"" [] [Whitespace(" ")],
                            },
                            operator_token: PLUS@134..136 "+" [] [Whitespace(" ")],
                            right: JsStringLiteralExpression {
                                value_token: JS_STRING_LITERAL@136..141 "\"bar\"" [] [],
                            },
                        },
                        r_brack_token: R_BRACK@141..142 "]" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@142..143 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@143..145 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@145..146 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@146..147 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: JS_NUMBER_LITERAL@147..151 "5" [Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@151..152 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@152..154 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@154..155 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@155..156 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsPrivateClassMemberName {
                        hash_token: HASH@156..160 "#" [Newline("\n"), Whitespace("  ")] [],
                        id_token: IDENT@160..167 "private" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@167..168 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@168..170 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@170..171 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@171..172 "}" [] [],
                    },
                },
            ],
            r_curly_token: R_CURLY@172..174 "}" [Newline("\n")] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@174..181 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@181..200 "ContextualKeywords" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@200..201 "{" [] [],
            members: JsClassMemberList [
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@201..238 "static" [Newline("\n"), Whitespace("   "), Comments("// Methods called static"), Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@238..239 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@239..241 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@241..242 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@242..243 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: ASYNC_KW@243..252 "async" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@252..258 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@258..259 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@259..261 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@261..262 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@262..263 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: STAR@263..268 "*" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@268..274 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@274..275 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@275..277 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@277..278 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@278..279 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: ASYNC_KW@279..287 "async" [Newline("\n"), Whitespace("  ")] [],
                    star_token: STAR@287..289 "*" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@289..295 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@295..296 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@296..298 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@298..299 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@299..300 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@300..310 "declare" [Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@310..311 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@311..313 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@313..314 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@314..315 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@315..321 "get" [Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@321..322 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@322..324 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@324..325 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@325..347 "}" [] [Whitespace(" "), Comments("// Method called get")],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@347..353 "set" [Newline("\n"), Whitespace("  ")] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@353..354 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@354..356 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@356..357 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@357..379 "}" [] [Whitespace(" "), Comments("// Method called set")],
                    },
                },
            ],
            r_curly_token: R_CURLY@379..381 "}" [Newline("\n")] [],
        },
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@381..388 "class" [Newline("\n")] [Whitespace(" ")],
            id: JsIdentifierBinding {
                name_token: IDENT@388..395 "Static" [] [Whitespace(" ")],
            },
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@395..396 "{" [] [],
            members: JsClassMemberList [
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@396..406 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@406..412 "method" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@412..413 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@413..415 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@415..416 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@416..417 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@417..427 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: ASYNC_KW@427..433 "async" [] [Whitespace(" ")],
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@433..444 "asyncMethod" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@444..445 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@445..447 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@447..448 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@448..449 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@449..459 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: ASYNC_KW@459..464 "async" [] [],
                    star_token: STAR@464..466 "*" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@466..486 "asyncGeneratorMethod" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@486..487 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@487..489 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@489..490 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@490..491 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@491..501 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: missing (optional),
                    star_token: STAR@501..503 "*" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@503..518 "generatorMethod" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@518..519 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@519..521 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@521..522 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@522..523 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@523..533 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: missing (optional),
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@533..539 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@539..540 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@540..542 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@542..543 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@543..544 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@544..554 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: ASYNC_KW@554..560 "async" [] [Whitespace(" ")],
                    star_token: missing (optional),
                    name: JsLiteralMemberName {
                        value: IDENT@560..566 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@566..567 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@567..569 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@569..570 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@570..571 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@571..581 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: ASYNC_KW@581..586 "async" [] [],
                    star_token: STAR@586..588 "*" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@588..594 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@594..595 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@595..597 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@597..598 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@598..599 "}" [] [],
                    },
                },
                JsMethodClassMember {
                    modifiers: JsMethodModifierList [
                        JsStaticModifier {
                            modifier_token: STATIC_KW@599..609 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")],
                        },
                    ],
                    async_token: missing (optional),
                    star_token: STAR@609..611 "*" [] [Whitespace(" ")],
                    name: JsLiteralMemberName {
                        value: IDENT@611..617 "static" [] [],
                    },
                    question_mark_token: missing (optional),
                    type_parameters: missing (optional),
                    parameters: JsParameters {
                        l_paren_token: L_PAREN@617..618 "(" [] [],
                        items: JsParameterList [],
                        r_paren_token: R_PAREN@618..620 ")" [] [Whitespace(" ")],
                    },
                    return_type_annotation: missing (optional),
                    body: JsFunctionBody {
                        l_curly_token: L_CURLY@620..621 "{" [] [],
                        directives: JsDirectiveList [],
                        statements: JsStatementList [],
                        r_curly_token: R_CURLY@621..622 "}" [] [],
                    },
                },
            ],
            r_curly_token: R_CURLY@622..624 "}" [Newline("\n")] [],
        },
    ],
    eof_token: EOF@624..625 "" [Newline("\n")] [],
}

0: JS_MODULE@0..625
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..624
    0: JS_CLASS_DECLARATION@0..174
      0: JS_DECORATOR_LIST@0..0
      1: (empty)
      2: CLASS_KW@0..6 "class" [] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@6..11
        0: IDENT@6..11 "Test" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@11..12 "{" [] []
      8: JS_CLASS_MEMBER_LIST@12..172
        0: JS_METHOD_CLASS_MEMBER@12..26
          0: JS_METHOD_MODIFIER_LIST@12..12
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@12..21
            0: IDENT@12..21 "method" [Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@21..24
            0: L_PAREN@21..22 "(" [] []
            1: JS_PARAMETER_LIST@22..22
            2: R_PAREN@22..24 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@24..26
            0: L_CURLY@24..25 "{" [] []
            1: JS_DIRECTIVE_LIST@25..25
            2: JS_STATEMENT_LIST@25..25
            3: R_CURLY@25..26 "}" [] []
        1: JS_METHOD_CLASS_MEMBER@26..51
          0: JS_METHOD_MODIFIER_LIST@26..26
          1: ASYNC_KW@26..35 "async" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@35..46
            0: IDENT@35..46 "asyncMethod" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@46..49
            0: L_PAREN@46..47 "(" [] []
            1: JS_PARAMETER_LIST@47..47
            2: R_PAREN@47..49 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@49..51
            0: L_CURLY@49..50 "{" [] []
            1: JS_DIRECTIVE_LIST@50..50
            2: JS_STATEMENT_LIST@50..50
            3: R_CURLY@50..51 "}" [] []
        2: JS_METHOD_CLASS_MEMBER@51..86
          0: JS_METHOD_MODIFIER_LIST@51..51
          1: ASYNC_KW@51..59 "async" [Newline("\n"), Whitespace("  ")] []
          2: STAR@59..61 "*" [] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@61..81
            0: IDENT@61..81 "asyncGeneratorMethod" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@81..84
            0: L_PAREN@81..82 "(" [] []
            1: JS_PARAMETER_LIST@82..82
            2: R_PAREN@82..84 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@84..86
            0: L_CURLY@84..85 "{" [] []
            1: JS_DIRECTIVE_LIST@85..85
            2: JS_STATEMENT_LIST@85..85
            3: R_CURLY@85..86 "}" [] []
        3: JS_METHOD_CLASS_MEMBER@86..111
          0: JS_METHOD_MODIFIER_LIST@86..86
          1: (empty)
          2: STAR@86..91 "*" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@91..106
            0: IDENT@91..106 "generatorMethod" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@106..109
            0: L_PAREN@106..107 "(" [] []
            1: JS_PARAMETER_LIST@107..107
            2: R_PAREN@107..109 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@109..111
            0: L_CURLY@109..110 "{" [] []
            1: JS_DIRECTIVE_LIST@110..110
            2: JS_STATEMENT_LIST@110..110
            3: R_CURLY@110..111 "}" [] []
        4: JS_METHOD_CLASS_MEMBER@111..124
          0: JS_METHOD_MODIFIER_LIST@111..111
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@111..119
            0: JS_STRING_LITERAL@111..119 "\"foo\"" [Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@119..122
            0: L_PAREN@119..120 "(" [] []
            1: JS_PARAMETER_LIST@120..120
            2: R_PAREN@120..122 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@122..124
            0: L_CURLY@122..123 "{" [] []
            1: JS_DIRECTIVE_LIST@123..123
            2: JS_STATEMENT_LIST@123..123
            3: R_CURLY@123..124 "}" [] []
        5: JS_METHOD_CLASS_MEMBER@124..147
          0: JS_METHOD_MODIFIER_LIST@124..124
          1: (empty)
          2: (empty)
          3: JS_COMPUTED_MEMBER_NAME@124..142
            0: L_BRACK@124..128 "[" [Newline("\n"), Whitespace("  ")] []
            1: JS_BINARY_EXPRESSION@128..141
              0: JS_STRING_LITERAL_EXPRESSION@128..134
                0: JS_STRING_LITERAL@128..134 "\"foo\"" [] [Whitespace(" ")]
              1: PLUS@134..136 "+" [] [Whitespace(" ")]
              2: JS_STRING_LITERAL_EXPRESSION@136..141
                0: JS_STRING_LITERAL@136..141 "\"bar\"" [] []
            2: R_BRACK@141..142 "]" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@142..145
            0: L_PAREN@142..143 "(" [] []
            1: JS_PARAMETER_LIST@143..143
            2: R_PAREN@143..145 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@145..147
            0: L_CURLY@145..146 "{" [] []
            1: JS_DIRECTIVE_LIST@146..146
            2: JS_STATEMENT_LIST@146..146
            3: R_CURLY@146..147 "}" [] []
        6: JS_METHOD_CLASS_MEMBER@147..156
          0: JS_METHOD_MODIFIER_LIST@147..147
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@147..151
            0: JS_NUMBER_LITERAL@147..151 "5" [Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@151..154
            0: L_PAREN@151..152 "(" [] []
            1: JS_PARAMETER_LIST@152..152
            2: R_PAREN@152..154 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@154..156
            0: L_CURLY@154..155 "{" [] []
            1: JS_DIRECTIVE_LIST@155..155
            2: JS_STATEMENT_LIST@155..155
            3: R_CURLY@155..156 "}" [] []
        7: JS_METHOD_CLASS_MEMBER@156..172
          0: JS_METHOD_MODIFIER_LIST@156..156
          1: (empty)
          2: (empty)
          3: JS_PRIVATE_CLASS_MEMBER_NAME@156..167
            0: HASH@156..160 "#" [Newline("\n"), Whitespace("  ")] []
            1: IDENT@160..167 "private" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@167..170
            0: L_PAREN@167..168 "(" [] []
            1: JS_PARAMETER_LIST@168..168
            2: R_PAREN@168..170 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@170..172
            0: L_CURLY@170..171 "{" [] []
            1: JS_DIRECTIVE_LIST@171..171
            2: JS_STATEMENT_LIST@171..171
            3: R_CURLY@171..172 "}" [] []
      9: R_CURLY@172..174 "}" [Newline("\n")] []
    1: JS_CLASS_DECLARATION@174..381
      0: JS_DECORATOR_LIST@174..174
      1: (empty)
      2: CLASS_KW@174..181 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@181..200
        0: IDENT@181..200 "ContextualKeywords" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@200..201 "{" [] []
      8: JS_CLASS_MEMBER_LIST@201..379
        0: JS_METHOD_CLASS_MEMBER@201..243
          0: JS_METHOD_MODIFIER_LIST@201..201
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@201..238
            0: IDENT@201..238 "static" [Newline("\n"), Whitespace("   "), Comments("// Methods called static"), Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@238..241
            0: L_PAREN@238..239 "(" [] []
            1: JS_PARAMETER_LIST@239..239
            2: R_PAREN@239..241 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@241..243
            0: L_CURLY@241..242 "{" [] []
            1: JS_DIRECTIVE_LIST@242..242
            2: JS_STATEMENT_LIST@242..242
            3: R_CURLY@242..243 "}" [] []
        1: JS_METHOD_CLASS_MEMBER@243..263
          0: JS_METHOD_MODIFIER_LIST@243..243
          1: ASYNC_KW@243..252 "async" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@252..258
            0: IDENT@252..258 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@258..261
            0: L_PAREN@258..259 "(" [] []
            1: JS_PARAMETER_LIST@259..259
            2: R_PAREN@259..261 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@261..263
            0: L_CURLY@261..262 "{" [] []
            1: JS_DIRECTIVE_LIST@262..262
            2: JS_STATEMENT_LIST@262..262
            3: R_CURLY@262..263 "}" [] []
        2: JS_METHOD_CLASS_MEMBER@263..279
          0: JS_METHOD_MODIFIER_LIST@263..263
          1: (empty)
          2: STAR@263..268 "*" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@268..274
            0: IDENT@268..274 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@274..277
            0: L_PAREN@274..275 "(" [] []
            1: JS_PARAMETER_LIST@275..275
            2: R_PAREN@275..277 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@277..279
            0: L_CURLY@277..278 "{" [] []
            1: JS_DIRECTIVE_LIST@278..278
            2: JS_STATEMENT_LIST@278..278
            3: R_CURLY@278..279 "}" [] []
        3: JS_METHOD_CLASS_MEMBER@279..300
          0: JS_METHOD_MODIFIER_LIST@279..279
          1: ASYNC_KW@279..287 "async" [Newline("\n"), Whitespace("  ")] []
          2: STAR@287..289 "*" [] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@289..295
            0: IDENT@289..295 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@295..298
            0: L_PAREN@295..296 "(" [] []
            1: JS_PARAMETER_LIST@296..296
            2: R_PAREN@296..298 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@298..300
            0: L_CURLY@298..299 "{" [] []
            1: JS_DIRECTIVE_LIST@299..299
            2: JS_STATEMENT_LIST@299..299
            3: R_CURLY@299..300 "}" [] []
        4: JS_METHOD_CLASS_MEMBER@300..315
          0: JS_METHOD_MODIFIER_LIST@300..300
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@300..310
            0: IDENT@300..310 "declare" [Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@310..313
            0: L_PAREN@310..311 "(" [] []
            1: JS_PARAMETER_LIST@311..311
            2: R_PAREN@311..313 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@313..315
            0: L_CURLY@313..314 "{" [] []
            1: JS_DIRECTIVE_LIST@314..314
            2: JS_STATEMENT_LIST@314..314
            3: R_CURLY@314..315 "}" [] []
        5: JS_METHOD_CLASS_MEMBER@315..347
          0: JS_METHOD_MODIFIER_LIST@315..315
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@315..321
            0: IDENT@315..321 "get" [Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@321..324
            0: L_PAREN@321..322 "(" [] []
            1: JS_PARAMETER_LIST@322..322
            2: R_PAREN@322..324 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@324..347
            0: L_CURLY@324..325 "{" [] []
            1: JS_DIRECTIVE_LIST@325..325
            2: JS_STATEMENT_LIST@325..325
            3: R_CURLY@325..347 "}" [] [Whitespace(" "), Comments("// Method called get")]
        6: JS_METHOD_CLASS_MEMBER@347..379
          0: JS_METHOD_MODIFIER_LIST@347..347
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@347..353
            0: IDENT@347..353 "set" [Newline("\n"), Whitespace("  ")] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@353..356
            0: L_PAREN@353..354 "(" [] []
            1: JS_PARAMETER_LIST@354..354
            2: R_PAREN@354..356 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@356..379
            0: L_CURLY@356..357 "{" [] []
            1: JS_DIRECTIVE_LIST@357..357
            2: JS_STATEMENT_LIST@357..357
            3: R_CURLY@357..379 "}" [] [Whitespace(" "), Comments("// Method called set")]
      9: R_CURLY@379..381 "}" [Newline("\n")] []
    2: JS_CLASS_DECLARATION@381..624
      0: JS_DECORATOR_LIST@381..381
      1: (empty)
      2: CLASS_KW@381..388 "class" [Newline("\n")] [Whitespace(" ")]
      3: JS_IDENTIFIER_BINDING@388..395
        0: IDENT@388..395 "Static" [] [Whitespace(" ")]
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@395..396 "{" [] []
      8: JS_CLASS_MEMBER_LIST@396..622
        0: JS_METHOD_CLASS_MEMBER@396..417
          0: JS_METHOD_MODIFIER_LIST@396..406
            0: JS_STATIC_MODIFIER@396..406
              0: STATIC_KW@396..406 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@406..412
            0: IDENT@406..412 "method" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@412..415
            0: L_PAREN@412..413 "(" [] []
            1: JS_PARAMETER_LIST@413..413
            2: R_PAREN@413..415 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@415..417
            0: L_CURLY@415..416 "{" [] []
            1: JS_DIRECTIVE_LIST@416..416
            2: JS_STATEMENT_LIST@416..416
            3: R_CURLY@416..417 "}" [] []
        1: JS_METHOD_CLASS_MEMBER@417..449
          0: JS_METHOD_MODIFIER_LIST@417..427
            0: JS_STATIC_MODIFIER@417..427
              0: STATIC_KW@417..427 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: ASYNC_KW@427..433 "async" [] [Whitespace(" ")]
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@433..444
            0: IDENT@433..444 "asyncMethod" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@444..447
            0: L_PAREN@444..445 "(" [] []
            1: JS_PARAMETER_LIST@445..445
            2: R_PAREN@445..447 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@447..449
            0: L_CURLY@447..448 "{" [] []
            1: JS_DIRECTIVE_LIST@448..448
            2: JS_STATEMENT_LIST@448..448
            3: R_CURLY@448..449 "}" [] []
        2: JS_METHOD_CLASS_MEMBER@449..491
          0: JS_METHOD_MODIFIER_LIST@449..459
            0: JS_STATIC_MODIFIER@449..459
              0: STATIC_KW@449..459 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: ASYNC_KW@459..464 "async" [] []
          2: STAR@464..466 "*" [] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@466..486
            0: IDENT@466..486 "asyncGeneratorMethod" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@486..489
            0: L_PAREN@486..487 "(" [] []
            1: JS_PARAMETER_LIST@487..487
            2: R_PAREN@487..489 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@489..491
            0: L_CURLY@489..490 "{" [] []
            1: JS_DIRECTIVE_LIST@490..490
            2: JS_STATEMENT_LIST@490..490
            3: R_CURLY@490..491 "}" [] []
        3: JS_METHOD_CLASS_MEMBER@491..523
          0: JS_METHOD_MODIFIER_LIST@491..501
            0: JS_STATIC_MODIFIER@491..501
              0: STATIC_KW@491..501 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: (empty)
          2: STAR@501..503 "*" [] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@503..518
            0: IDENT@503..518 "generatorMethod" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@518..521
            0: L_PAREN@518..519 "(" [] []
            1: JS_PARAMETER_LIST@519..519
            2: R_PAREN@519..521 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@521..523
            0: L_CURLY@521..522 "{" [] []
            1: JS_DIRECTIVE_LIST@522..522
            2: JS_STATEMENT_LIST@522..522
            3: R_CURLY@522..523 "}" [] []
        4: JS_METHOD_CLASS_MEMBER@523..544
          0: JS_METHOD_MODIFIER_LIST@523..533
            0: JS_STATIC_MODIFIER@523..533
              0: STATIC_KW@523..533 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: (empty)
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@533..539
            0: IDENT@533..539 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@539..542
            0: L_PAREN@539..540 "(" [] []
            1: JS_PARAMETER_LIST@540..540
            2: R_PAREN@540..542 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@542..544
            0: L_CURLY@542..543 "{" [] []
            1: JS_DIRECTIVE_LIST@543..543
            2: JS_STATEMENT_LIST@543..543
            3: R_CURLY@543..544 "}" [] []
        5: JS_METHOD_CLASS_MEMBER@544..571
          0: JS_METHOD_MODIFIER_LIST@544..554
            0: JS_STATIC_MODIFIER@544..554
              0: STATIC_KW@544..554 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: ASYNC_KW@554..560 "async" [] [Whitespace(" ")]
          2: (empty)
          3: JS_LITERAL_MEMBER_NAME@560..566
            0: IDENT@560..566 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@566..569
            0: L_PAREN@566..567 "(" [] []
            1: JS_PARAMETER_LIST@567..567
            2: R_PAREN@567..569 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@569..571
            0: L_CURLY@569..570 "{" [] []
            1: JS_DIRECTIVE_LIST@570..570
            2: JS_STATEMENT_LIST@570..570
            3: R_CURLY@570..571 "}" [] []
        6: JS_METHOD_CLASS_MEMBER@571..599
          0: JS_METHOD_MODIFIER_LIST@571..581
            0: JS_STATIC_MODIFIER@571..581
              0: STATIC_KW@571..581 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: ASYNC_KW@581..586 "async" [] []
          2: STAR@586..588 "*" [] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@588..594
            0: IDENT@588..594 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@594..597
            0: L_PAREN@594..595 "(" [] []
            1: JS_PARAMETER_LIST@595..595
            2: R_PAREN@595..597 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@597..599
            0: L_CURLY@597..598 "{" [] []
            1: JS_DIRECTIVE_LIST@598..598
            2: JS_STATEMENT_LIST@598..598
            3: R_CURLY@598..599 "}" [] []
        7: JS_METHOD_CLASS_MEMBER@599..622
          0: JS_METHOD_MODIFIER_LIST@599..609
            0: JS_STATIC_MODIFIER@599..609
              0: STATIC_KW@599..609 "static" [Newline("\n"), Whitespace("  ")] [Whitespace(" ")]
          1: (empty)
          2: STAR@609..611 "*" [] [Whitespace(" ")]
          3: JS_LITERAL_MEMBER_NAME@611..617
            0: IDENT@611..617 "static" [] []
          4: (empty)
          5: (empty)
          6: JS_PARAMETERS@617..620
            0: L_PAREN@617..618 "(" [] []
            1: JS_PARAMETER_LIST@618..618
            2: R_PAREN@618..620 ")" [] [Whitespace(" ")]
          7: (empty)
          8: JS_FUNCTION_BODY@620..622
            0: L_CURLY@620..621 "{" [] []
            1: JS_DIRECTIVE_LIST@621..621
            2: JS_STATEMENT_LIST@621..621
            3: R_CURLY@621..622 "}" [] []
      9: R_CURLY@622..624 "}" [Newline("\n")] []
  4: EOF@624..625 "" [Newline("\n")] []