20370b75a40600ea6ea931860c11aa6b601a9a28
[platform/framework/web/crosswalk-tizen.git] /
1 /*
2   Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>
3   Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
4   Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
5   Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
6   Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
7   Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
8   Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
9   Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
10
11   Redistribution and use in source and binary forms, with or without
12   modification, are permitted provided that the following conditions are met:
13
14     * Redistributions of source code must retain the above copyright
15       notice, this list of conditions and the following disclaimer.
16     * Redistributions in binary form must reproduce the above copyright
17       notice, this list of conditions and the following disclaimer in the
18       documentation and/or other materials provided with the distribution.
19
20   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
24   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 var testFixture = {
33
34     'Primary Expression': {
35
36         'this\n': {
37             type: 'Program',
38             body: [{
39                 type: 'ExpressionStatement',
40                 expression: {
41                     type: 'ThisExpression',
42                     range: [0, 4],
43                     loc: {
44                         start: { line: 1, column: 0 },
45                         end: { line: 1, column: 4 }
46                     }
47                 },
48                 range: [0, 4],
49                 loc: {
50                     start: { line: 1, column: 0 },
51                     end: { line: 1, column: 4 }
52                 }
53             }],
54             range: [0, 4],
55             loc: {
56                 start: { line: 1, column: 0 },
57                 end: { line: 1, column: 4 }
58             },
59             tokens: [{
60                 type: 'Keyword',
61                 value: 'this',
62                 range: [0, 4],
63                 loc: {
64                     start: { line: 1, column: 0 },
65                     end: { line: 1, column: 4 }
66                 }
67             }]
68         },
69
70         'null\n': {
71             type: 'Program',
72             body: [{
73                 type: 'ExpressionStatement',
74                 expression: {
75                     type: 'Literal',
76                     value: null,
77                     raw: 'null',
78                     range: [0, 4],
79                     loc: {
80                         start: { line: 1, column: 0 },
81                         end: { line: 1, column: 4 }
82                     }
83                 },
84                 range: [0, 4],
85                 loc: {
86                     start: { line: 1, column: 0 },
87                     end: { line: 1, column: 4 }
88                 }
89             }],
90             range: [0, 4],
91             loc: {
92                 start: { line: 1, column: 0 },
93                 end: { line: 1, column: 4 }
94             },
95             tokens: [{
96                 type: 'Null',
97                 value: 'null',
98                 range: [0, 4],
99                 loc: {
100                     start: { line: 1, column: 0 },
101                     end: { line: 1, column: 4 }
102                 }
103             }]
104         },
105
106         '\n    42\n\n': {
107             type: 'Program',
108             body: [{
109                 type: 'ExpressionStatement',
110                 expression: {
111                     type: 'Literal',
112                     value: 42,
113                     raw: '42',
114                     range: [5, 7],
115                     loc: {
116                         start: { line: 2, column: 4 },
117                         end: { line: 2, column: 6 }
118                     }
119                 },
120                 range: [5, 7],
121                 loc: {
122                     start: { line: 2, column: 4 },
123                     end: { line: 2, column: 6 }
124                 }
125             }],
126             range: [5, 7],
127             loc: {
128                 start: { line: 2, column: 4 },
129                 end: { line: 2, column: 6 }
130             },
131             tokens: [{
132                 type: 'Numeric',
133                 value: '42',
134                 range: [5, 7],
135                 loc: {
136                     start: { line: 2, column: 4 },
137                     end: { line: 2, column: 6 }
138                 }
139             }]
140         },
141
142         '(1 + 2 ) * 3': {
143             type: 'ExpressionStatement',
144             expression: {
145                 type: 'BinaryExpression',
146                 operator: '*',
147                 left: {
148                     type: 'BinaryExpression',
149                     operator: '+',
150                     left: {
151                         type: 'Literal',
152                         value: 1,
153                         raw: '1',
154                         range: [1, 2],
155                         loc: {
156                             start: { line: 1, column: 1 },
157                             end: { line: 1, column: 2 }
158                         }
159                     },
160                     right: {
161                         type: 'Literal',
162                         value: 2,
163                         raw: '2',
164                         range: [5, 6],
165                         loc: {
166                             start: { line: 1, column: 5 },
167                             end: { line: 1, column: 6 }
168                         }
169                     },
170                     range: [1, 6],
171                     loc: {
172                         start: { line: 1, column: 1 },
173                         end: { line: 1, column: 6 }
174                     }
175                 },
176                 right: {
177                     type: 'Literal',
178                     value: 3,
179                     raw: '3',
180                     range: [11, 12],
181                     loc: {
182                         start: { line: 1, column: 11 },
183                         end: { line: 1, column: 12 }
184                     }
185                 },
186                 range: [0, 12],
187                 loc: {
188                     start: { line: 1, column: 0 },
189                     end: { line: 1, column: 12 }
190                 }
191             },
192             range: [0, 12],
193             loc: {
194                 start: { line: 1, column: 0 },
195                 end: { line: 1, column: 12 }
196             }
197         }
198
199     },
200
201     'Grouping Operator': {
202
203         '(1) + (2  ) + 3': {
204             type: 'ExpressionStatement',
205             expression: {
206                 type: 'BinaryExpression',
207                 operator: '+',
208                 left: {
209                     type: 'BinaryExpression',
210                     operator: '+',
211                     left: {
212                         type: 'Literal',
213                         value: 1,
214                         raw: '1',
215                         range: [1, 2],
216                         loc: {
217                             start: { line: 1, column: 1 },
218                             end: { line: 1, column: 2 }
219                         }
220                     },
221                     right: {
222                         type: 'Literal',
223                         value: 2,
224                         raw: '2',
225                         range: [7, 8],
226                         loc: {
227                             start: { line: 1, column: 7 },
228                             end: { line: 1, column: 8 }
229                         }
230                     },
231                     range: [0, 11],
232                     loc: {
233                         start: { line: 1, column: 0 },
234                         end: { line: 1, column: 11 }
235                     }
236                 },
237                 right: {
238                     type: 'Literal',
239                     value: 3,
240                     raw: '3',
241                     range: [14, 15],
242                     loc: {
243                         start: { line: 1, column: 14 },
244                         end: { line: 1, column: 15 }
245                     }
246                 },
247                 range: [0, 15],
248                 loc: {
249                     start: { line: 1, column: 0 },
250                     end: { line: 1, column: 15 }
251                 }
252             },
253             range: [0, 15],
254             loc: {
255                 start: { line: 1, column: 0 },
256                 end: { line: 1, column: 15 }
257             }
258         },
259
260         '4 + 5 << (6)': {
261             type: 'ExpressionStatement',
262             expression: {
263                 type: 'BinaryExpression',
264                 operator: '<<',
265                 left: {
266                     type: 'BinaryExpression',
267                     operator: '+',
268                     left: {
269                         type: 'Literal',
270                         value: 4,
271                         raw: '4',
272                         range: [0, 1],
273                         loc: {
274                             start: { line: 1, column: 0 },
275                             end: { line: 1, column: 1 }
276                         }
277                     },
278                     right: {
279                         type: 'Literal',
280                         value: 5,
281                         raw: '5',
282                         range: [4, 5],
283                         loc: {
284                             start: { line: 1, column: 4 },
285                             end: { line: 1, column: 5 }
286                         }
287                     },
288                     range: [0, 5],
289                     loc: {
290                         start: { line: 1, column: 0 },
291                         end: { line: 1, column: 5 }
292                     }
293                 },
294                 right: {
295                     type: 'Literal',
296                     value: 6,
297                     raw: '6',
298                     range: [10, 11],
299                     loc: {
300                         start: { line: 1, column: 10 },
301                         end: { line: 1, column: 11 }
302                     }
303                 },
304                 range: [0, 12],
305                 loc: {
306                     start: { line: 1, column: 0 },
307                     end: { line: 1, column: 12 }
308                 }
309             },
310             range: [0, 12],
311             loc: {
312                 start: { line: 1, column: 0 },
313                 end: { line: 1, column: 12 }
314             }
315         }
316
317     },
318
319     'Array Initializer': {
320
321         'x = []': {
322             type: 'Program',
323             body: [{
324                 type: 'ExpressionStatement',
325                 expression: {
326                     type: 'AssignmentExpression',
327                     operator: '=',
328                     left: {
329                         type: 'Identifier',
330                         name: 'x',
331                         range: [0, 1],
332                         loc: {
333                             start: { line: 1, column: 0 },
334                             end: { line: 1, column: 1 }
335                         }
336                     },
337                     right: {
338                         type: 'ArrayExpression',
339                         elements: [],
340                         range: [4, 6],
341                         loc: {
342                             start: { line: 1, column: 4 },
343                             end: { line: 1, column: 6 }
344                         }
345                     },
346                     range: [0, 6],
347                     loc: {
348                         start: { line: 1, column: 0 },
349                         end: { line: 1, column: 6 }
350                     }
351                 },
352                 range: [0, 6],
353                 loc: {
354                     start: { line: 1, column: 0 },
355                     end: { line: 1, column: 6 }
356                 }
357             }],
358             range: [0, 6],
359             loc: {
360                 start: { line: 1, column: 0 },
361                 end: { line: 1, column: 6 }
362             },
363             tokens: [{
364                 type: 'Identifier',
365                 value: 'x',
366                 range: [0, 1],
367                 loc: {
368                     start: { line: 1, column: 0 },
369                     end: { line: 1, column: 1 }
370                 }
371             }, {
372                 type: 'Punctuator',
373                 value: '=',
374                 range: [2, 3],
375                 loc: {
376                     start: { line: 1, column: 2 },
377                     end: { line: 1, column: 3 }
378                 }
379             }, {
380                 type: 'Punctuator',
381                 value: '[',
382                 range: [4, 5],
383                 loc: {
384                     start: { line: 1, column: 4 },
385                     end: { line: 1, column: 5 }
386                 }
387             }, {
388                 type: 'Punctuator',
389                 value: ']',
390                 range: [5, 6],
391                 loc: {
392                     start: { line: 1, column: 5 },
393                     end: { line: 1, column: 6 }
394                 }
395             }]
396         },
397
398         'x = [ ]': {
399             type: 'ExpressionStatement',
400             expression: {
401                 type: 'AssignmentExpression',
402                 operator: '=',
403                 left: {
404                     type: 'Identifier',
405                     name: 'x',
406                     range: [0, 1],
407                     loc: {
408                         start: { line: 1, column: 0 },
409                         end: { line: 1, column: 1 }
410                     }
411                 },
412                 right: {
413                     type: 'ArrayExpression',
414                     elements: [],
415                     range: [4, 7],
416                     loc: {
417                         start: { line: 1, column: 4 },
418                         end: { line: 1, column: 7 }
419                     }
420                 },
421                 range: [0, 7],
422                 loc: {
423                     start: { line: 1, column: 0 },
424                     end: { line: 1, column: 7 }
425                 }
426             },
427             range: [0, 7],
428             loc: {
429                 start: { line: 1, column: 0 },
430                 end: { line: 1, column: 7 }
431             }
432         },
433
434         'x = [ 42 ]': {
435             type: 'ExpressionStatement',
436             expression: {
437                 type: 'AssignmentExpression',
438                 operator: '=',
439                 left: {
440                     type: 'Identifier',
441                     name: 'x',
442                     range: [0, 1],
443                     loc: {
444                         start: { line: 1, column: 0 },
445                         end: { line: 1, column: 1 }
446                     }
447                 },
448                 right: {
449                     type: 'ArrayExpression',
450                     elements: [{
451                         type: 'Literal',
452                         value: 42,
453                         raw: '42',
454                         range: [6, 8],
455                         loc: {
456                             start: { line: 1, column: 6 },
457                             end: { line: 1, column: 8 }
458                         }
459                     }],
460                     range: [4, 10],
461                     loc: {
462                         start: { line: 1, column: 4 },
463                         end: { line: 1, column: 10 }
464                     }
465                 },
466                 range: [0, 10],
467                 loc: {
468                     start: { line: 1, column: 0 },
469                     end: { line: 1, column: 10 }
470                 }
471             },
472             range: [0, 10],
473             loc: {
474                 start: { line: 1, column: 0 },
475                 end: { line: 1, column: 10 }
476             }
477         },
478
479         'x = [ 42, ]': {
480             type: 'ExpressionStatement',
481             expression: {
482                 type: 'AssignmentExpression',
483                 operator: '=',
484                 left: {
485                     type: 'Identifier',
486                     name: 'x',
487                     range: [0, 1],
488                     loc: {
489                         start: { line: 1, column: 0 },
490                         end: { line: 1, column: 1 }
491                     }
492                 },
493                 right: {
494                     type: 'ArrayExpression',
495                     elements: [{
496                         type: 'Literal',
497                         value: 42,
498                         raw: '42',
499                         range: [6, 8],
500                         loc: {
501                             start: { line: 1, column: 6 },
502                             end: { line: 1, column: 8 }
503                         }
504                     }],
505                     range: [4, 11],
506                     loc: {
507                         start: { line: 1, column: 4 },
508                         end: { line: 1, column: 11 }
509                     }
510                 },
511                 range: [0, 11],
512                 loc: {
513                     start: { line: 1, column: 0 },
514                     end: { line: 1, column: 11 }
515                 }
516             },
517             range: [0, 11],
518             loc: {
519                 start: { line: 1, column: 0 },
520                 end: { line: 1, column: 11 }
521             }
522         },
523
524         'x = [ ,, 42 ]': {
525             type: 'ExpressionStatement',
526             expression: {
527                 type: 'AssignmentExpression',
528                 operator: '=',
529                 left: {
530                     type: 'Identifier',
531                     name: 'x',
532                     range: [0, 1],
533                     loc: {
534                         start: { line: 1, column: 0 },
535                         end: { line: 1, column: 1 }
536                     }
537                 },
538                 right: {
539                     type: 'ArrayExpression',
540                     elements: [
541                         null,
542                         null,
543                         {
544                             type: 'Literal',
545                             value: 42,
546                             raw: '42',
547                             range: [9, 11],
548                             loc: {
549                                 start: { line: 1, column: 9 },
550                                 end: { line: 1, column: 11 }
551                             }
552                         }],
553                     range: [4, 13],
554                     loc: {
555                         start: { line: 1, column: 4 },
556                         end: { line: 1, column: 13 }
557                     }
558                 },
559                 range: [0, 13],
560                 loc: {
561                     start: { line: 1, column: 0 },
562                     end: { line: 1, column: 13 }
563                 }
564             },
565             range: [0, 13],
566             loc: {
567                 start: { line: 1, column: 0 },
568                 end: { line: 1, column: 13 }
569             }
570         },
571
572         'x = [ 1, 2, 3, ]': {
573             type: 'ExpressionStatement',
574             expression: {
575                 type: 'AssignmentExpression',
576                 operator: '=',
577                 left: {
578                     type: 'Identifier',
579                     name: 'x',
580                     range: [0, 1],
581                     loc: {
582                         start: { line: 1, column: 0 },
583                         end: { line: 1, column: 1 }
584                     }
585                 },
586                 right: {
587                     type: 'ArrayExpression',
588                     elements: [{
589                         type: 'Literal',
590                         value: 1,
591                         raw: '1',
592                         range: [6, 7],
593                         loc: {
594                             start: { line: 1, column: 6 },
595                             end: { line: 1, column: 7 }
596                         }
597                     }, {
598                         type: 'Literal',
599                         value: 2,
600                         raw: '2',
601                         range: [9, 10],
602                         loc: {
603                             start: { line: 1, column: 9 },
604                             end: { line: 1, column: 10 }
605                         }
606                     }, {
607                         type: 'Literal',
608                         value: 3,
609                         raw: '3',
610                         range: [12, 13],
611                         loc: {
612                             start: { line: 1, column: 12 },
613                             end: { line: 1, column: 13 }
614                         }
615                     }],
616                     range: [4, 16],
617                     loc: {
618                         start: { line: 1, column: 4 },
619                         end: { line: 1, column: 16 }
620                     }
621                 },
622                 range: [0, 16],
623                 loc: {
624                     start: { line: 1, column: 0 },
625                     end: { line: 1, column: 16 }
626                 }
627             },
628             range: [0, 16],
629             loc: {
630                 start: { line: 1, column: 0 },
631                 end: { line: 1, column: 16 }
632             }
633         },
634
635         'x = [ 1, 2,, 3, ]': {
636             type: 'ExpressionStatement',
637             expression: {
638                 type: 'AssignmentExpression',
639                 operator: '=',
640                 left: {
641                     type: 'Identifier',
642                     name: 'x',
643                     range: [0, 1],
644                     loc: {
645                         start: { line: 1, column: 0 },
646                         end: { line: 1, column: 1 }
647                     }
648                 },
649                 right: {
650                     type: 'ArrayExpression',
651                     elements: [{
652                         type: 'Literal',
653                         value: 1,
654                         raw: '1',
655                         range: [6, 7],
656                         loc: {
657                             start: { line: 1, column: 6 },
658                             end: { line: 1, column: 7 }
659                         }
660                     }, {
661                         type: 'Literal',
662                         value: 2,
663                         raw: '2',
664                         range: [9, 10],
665                         loc: {
666                             start: { line: 1, column: 9 },
667                             end: { line: 1, column: 10 }
668                         }
669                     }, null, {
670                         type: 'Literal',
671                         value: 3,
672                         raw: '3',
673                         range: [13, 14],
674                         loc: {
675                             start: { line: 1, column: 13 },
676                             end: { line: 1, column: 14 }
677                         }
678                     }],
679                     range: [4, 17],
680                     loc: {
681                         start: { line: 1, column: 4 },
682                         end: { line: 1, column: 17 }
683                     }
684                 },
685                 range: [0, 17],
686                 loc: {
687                     start: { line: 1, column: 0 },
688                     end: { line: 1, column: 17 }
689                 }
690             },
691             range: [0, 17],
692             loc: {
693                 start: { line: 1, column: 0 },
694                 end: { line: 1, column: 17 }
695             }
696         },
697
698         '日本語 = []': {
699             type: 'ExpressionStatement',
700             expression: {
701                 type: 'AssignmentExpression',
702                 operator: '=',
703                 left: {
704                     type: 'Identifier',
705                     name: '日本語',
706                     range: [0, 3],
707                     loc: {
708                         start: { line: 1, column: 0 },
709                         end: { line: 1, column: 3 }
710                     }
711                 },
712                 right: {
713                     type: 'ArrayExpression',
714                     elements: [],
715                     range: [6, 8],
716                     loc: {
717                         start: { line: 1, column: 6 },
718                         end: { line: 1, column: 8 }
719                     }
720                 },
721                 range: [0, 8],
722                 loc: {
723                     start: { line: 1, column: 0 },
724                     end: { line: 1, column: 8 }
725                 }
726             },
727             range: [0, 8],
728             loc: {
729                 start: { line: 1, column: 0 },
730                 end: { line: 1, column: 8 }
731             }
732         },
733
734         'T\u203F = []': {
735             type: 'ExpressionStatement',
736             expression: {
737                 type: 'AssignmentExpression',
738                 operator: '=',
739                 left: {
740                     type: 'Identifier',
741                     name: 'T\u203F',
742                     range: [0, 2],
743                     loc: {
744                         start: { line: 1, column: 0 },
745                         end: { line: 1, column: 2 }
746                     }
747                 },
748                 right: {
749                     type: 'ArrayExpression',
750                     elements: [],
751                     range: [5, 7],
752                     loc: {
753                         start: { line: 1, column: 5 },
754                         end: { line: 1, column: 7 }
755                     }
756                 },
757                 range: [0, 7],
758                 loc: {
759                     start: { line: 1, column: 0 },
760                     end: { line: 1, column: 7 }
761                 }
762             },
763             range: [0, 7],
764             loc: {
765                 start: { line: 1, column: 0 },
766                 end: { line: 1, column: 7 }
767             }
768         },
769
770         'T\u200C = []': {
771             type: 'ExpressionStatement',
772             expression: {
773                 type: 'AssignmentExpression',
774                 operator: '=',
775                 left: {
776                     type: 'Identifier',
777                     name: 'T\u200C',
778                     range: [0, 2],
779                     loc: {
780                         start: { line: 1, column: 0 },
781                         end: { line: 1, column: 2 }
782                     }
783                 },
784                 right: {
785                     type: 'ArrayExpression',
786                     elements: [],
787                     range: [5, 7],
788                     loc: {
789                         start: { line: 1, column: 5 },
790                         end: { line: 1, column: 7 }
791                     }
792                 },
793                 range: [0, 7],
794                 loc: {
795                     start: { line: 1, column: 0 },
796                     end: { line: 1, column: 7 }
797                 }
798             },
799             range: [0, 7],
800             loc: {
801                 start: { line: 1, column: 0 },
802                 end: { line: 1, column: 7 }
803             }
804         },
805
806         'T\u200D = []': {
807             type: 'ExpressionStatement',
808             expression: {
809                 type: 'AssignmentExpression',
810                 operator: '=',
811                 left: {
812                     type: 'Identifier',
813                     name: 'T\u200D',
814                     range: [0, 2],
815                     loc: {
816                         start: { line: 1, column: 0 },
817                         end: { line: 1, column: 2 }
818                     }
819                 },
820                 right: {
821                     type: 'ArrayExpression',
822                     elements: [],
823                     range: [5, 7],
824                     loc: {
825                         start: { line: 1, column: 5 },
826                         end: { line: 1, column: 7 }
827                     }
828                 },
829                 range: [0, 7],
830                 loc: {
831                     start: { line: 1, column: 0 },
832                     end: { line: 1, column: 7 }
833                 }
834             },
835             range: [0, 7],
836             loc: {
837                 start: { line: 1, column: 0 },
838                 end: { line: 1, column: 7 }
839             }
840         },
841
842         '\u2163\u2161 = []': {
843             type: 'ExpressionStatement',
844             expression: {
845                 type: 'AssignmentExpression',
846                 operator: '=',
847                 left: {
848                     type: 'Identifier',
849                     name: '\u2163\u2161',
850                     range: [0, 2],
851                     loc: {
852                         start: { line: 1, column: 0 },
853                         end: { line: 1, column: 2 }
854                     }
855                 },
856                 right: {
857                     type: 'ArrayExpression',
858                     elements: [],
859                     range: [5, 7],
860                     loc: {
861                         start: { line: 1, column: 5 },
862                         end: { line: 1, column: 7 }
863                     }
864                 },
865                 range: [0, 7],
866                 loc: {
867                     start: { line: 1, column: 0 },
868                     end: { line: 1, column: 7 }
869                 }
870             },
871             range: [0, 7],
872             loc: {
873                 start: { line: 1, column: 0 },
874                 end: { line: 1, column: 7 }
875             }
876         },
877
878         '\u2163\u2161\u200A=\u2009[]': {
879             type: 'ExpressionStatement',
880             expression: {
881                 type: 'AssignmentExpression',
882                 operator: '=',
883                 left: {
884                     type: 'Identifier',
885                     name: '\u2163\u2161',
886                     range: [0, 2],
887                     loc: {
888                         start: { line: 1, column: 0 },
889                         end: { line: 1, column: 2 }
890                     }
891                 },
892                 right: {
893                     type: 'ArrayExpression',
894                     elements: [],
895                     range: [5, 7],
896                     loc: {
897                         start: { line: 1, column: 5 },
898                         end: { line: 1, column: 7 }
899                     }
900                 },
901                 range: [0, 7],
902                 loc: {
903                     start: { line: 1, column: 0 },
904                     end: { line: 1, column: 7 }
905                 }
906             },
907             range: [0, 7],
908             loc: {
909                 start: { line: 1, column: 0 },
910                 end: { line: 1, column: 7 }
911             }
912         }
913
914     },
915
916     'Object Initializer': {
917
918         'x = {}': {
919             type: 'ExpressionStatement',
920             expression: {
921                 type: 'AssignmentExpression',
922                 operator: '=',
923                 left: {
924                     type: 'Identifier',
925                     name: 'x',
926                     range: [0, 1],
927                     loc: {
928                         start: { line: 1, column: 0 },
929                         end: { line: 1, column: 1 }
930                     }
931                 },
932                 right: {
933                     type: 'ObjectExpression',
934                     properties: [],
935                     range: [4, 6],
936                     loc: {
937                         start: { line: 1, column: 4 },
938                         end: { line: 1, column: 6 }
939                     }
940                 },
941                 range: [0, 6],
942                 loc: {
943                     start: { line: 1, column: 0 },
944                     end: { line: 1, column: 6 }
945                 }
946             },
947             range: [0, 6],
948             loc: {
949                 start: { line: 1, column: 0 },
950                 end: { line: 1, column: 6 }
951             }
952         },
953
954         'x = { }': {
955             type: 'ExpressionStatement',
956             expression: {
957                 type: 'AssignmentExpression',
958                 operator: '=',
959                 left: {
960                     type: 'Identifier',
961                     name: 'x',
962                     range: [0, 1],
963                     loc: {
964                         start: { line: 1, column: 0 },
965                         end: { line: 1, column: 1 }
966                     }
967                 },
968                 right: {
969                     type: 'ObjectExpression',
970                     properties: [],
971                     range: [4, 7],
972                     loc: {
973                         start: { line: 1, column: 4 },
974                         end: { line: 1, column: 7 }
975                     }
976                 },
977                 range: [0, 7],
978                 loc: {
979                     start: { line: 1, column: 0 },
980                     end: { line: 1, column: 7 }
981                 }
982             },
983             range: [0, 7],
984             loc: {
985                 start: { line: 1, column: 0 },
986                 end: { line: 1, column: 7 }
987             }
988         },
989
990         'x = { answer: 42 }': {
991             type: 'ExpressionStatement',
992             expression: {
993                 type: 'AssignmentExpression',
994                 operator: '=',
995                 left: {
996                     type: 'Identifier',
997                     name: 'x',
998                     range: [0, 1],
999                     loc: {
1000                         start: { line: 1, column: 0 },
1001                         end: { line: 1, column: 1 }
1002                     }
1003                 },
1004                 right: {
1005                     type: 'ObjectExpression',
1006                     properties: [{
1007                         type: 'Property',
1008                         key: {
1009                             type: 'Identifier',
1010                             name: 'answer',
1011                             range: [6, 12],
1012                             loc: {
1013                                 start: { line: 1, column: 6 },
1014                                 end: { line: 1, column: 12 }
1015                             }
1016                         },
1017                         value: {
1018                             type: 'Literal',
1019                             value: 42,
1020                             raw: '42',
1021                             range: [14, 16],
1022                             loc: {
1023                                 start: { line: 1, column: 14 },
1024                                 end: { line: 1, column: 16 }
1025                             }
1026                         },
1027                         kind: 'init',
1028                         method: false,
1029                         shorthand: false,
1030                         range: [6, 16],
1031                         loc: {
1032                             start: { line: 1, column: 6 },
1033                             end: { line: 1, column: 16 }
1034                         }
1035                     }],
1036                     range: [4, 18],
1037                     loc: {
1038                         start: { line: 1, column: 4 },
1039                         end: { line: 1, column: 18 }
1040                     }
1041                 },
1042                 range: [0, 18],
1043                 loc: {
1044                     start: { line: 1, column: 0 },
1045                     end: { line: 1, column: 18 }
1046                 }
1047             },
1048             range: [0, 18],
1049             loc: {
1050                 start: { line: 1, column: 0 },
1051                 end: { line: 1, column: 18 }
1052             }
1053         },
1054
1055         'x = { if: 42 }': {
1056             type: 'ExpressionStatement',
1057             expression: {
1058                 type: 'AssignmentExpression',
1059                 operator: '=',
1060                 left: {
1061                     type: 'Identifier',
1062                     name: 'x',
1063                     range: [0, 1],
1064                     loc: {
1065                         start: { line: 1, column: 0 },
1066                         end: { line: 1, column: 1 }
1067                     }
1068                 },
1069                 right: {
1070                     type: 'ObjectExpression',
1071                     properties: [{
1072                         type: 'Property',
1073                         key: {
1074                             type: 'Identifier',
1075                             name: 'if',
1076                             range: [6, 8],
1077                             loc: {
1078                                 start: { line: 1, column: 6 },
1079                                 end: { line: 1, column: 8 }
1080                             }
1081                         },
1082                         value: {
1083                             type: 'Literal',
1084                             value: 42,
1085                             raw: '42',
1086                             range: [10, 12],
1087                             loc: {
1088                                 start: { line: 1, column: 10 },
1089                                 end: { line: 1, column: 12 }
1090                             }
1091                         },
1092                         kind: 'init',
1093                         method: false,
1094                         shorthand: false,
1095                         range: [6, 12],
1096                         loc: {
1097                             start: { line: 1, column: 6 },
1098                             end: { line: 1, column: 12 }
1099                         }
1100                     }],
1101                     range: [4, 14],
1102                     loc: {
1103                         start: { line: 1, column: 4 },
1104                         end: { line: 1, column: 14 }
1105                     }
1106                 },
1107                 range: [0, 14],
1108                 loc: {
1109                     start: { line: 1, column: 0 },
1110                     end: { line: 1, column: 14 }
1111                 }
1112             },
1113             range: [0, 14],
1114             loc: {
1115                 start: { line: 1, column: 0 },
1116                 end: { line: 1, column: 14 }
1117             }
1118         },
1119
1120         'x = { true: 42 }': {
1121             type: 'ExpressionStatement',
1122             expression: {
1123                 type: 'AssignmentExpression',
1124                 operator: '=',
1125                 left: {
1126                     type: 'Identifier',
1127                     name: 'x',
1128                     range: [0, 1],
1129                     loc: {
1130                         start: { line: 1, column: 0 },
1131                         end: { line: 1, column: 1 }
1132                     }
1133                 },
1134                 right: {
1135                     type: 'ObjectExpression',
1136                     properties: [{
1137                         type: 'Property',
1138                         key: {
1139                             type: 'Identifier',
1140                             name: 'true',
1141                             range: [6, 10],
1142                             loc: {
1143                                 start: { line: 1, column: 6 },
1144                                 end: { line: 1, column: 10 }
1145                             }
1146                         },
1147                         value: {
1148                             type: 'Literal',
1149                             value: 42,
1150                             raw: '42',
1151                             range: [12, 14],
1152                             loc: {
1153                                 start: { line: 1, column: 12 },
1154                                 end: { line: 1, column: 14 }
1155                             }
1156                         },
1157                         kind: 'init',
1158                         method: false,
1159                         shorthand: false,
1160                         range: [6, 14],
1161                         loc: {
1162                             start: { line: 1, column: 6 },
1163                             end: { line: 1, column: 14 }
1164                         }
1165                     }],
1166                     range: [4, 16],
1167                     loc: {
1168                         start: { line: 1, column: 4 },
1169                         end: { line: 1, column: 16 }
1170                     }
1171                 },
1172                 range: [0, 16],
1173                 loc: {
1174                     start: { line: 1, column: 0 },
1175                     end: { line: 1, column: 16 }
1176                 }
1177             },
1178             range: [0, 16],
1179             loc: {
1180                 start: { line: 1, column: 0 },
1181                 end: { line: 1, column: 16 }
1182             }
1183         },
1184
1185         'x = { false: 42 }': {
1186             type: 'ExpressionStatement',
1187             expression: {
1188                 type: 'AssignmentExpression',
1189                 operator: '=',
1190                 left: {
1191                     type: 'Identifier',
1192                     name: 'x',
1193                     range: [0, 1],
1194                     loc: {
1195                         start: { line: 1, column: 0 },
1196                         end: { line: 1, column: 1 }
1197                     }
1198                 },
1199                 right: {
1200                     type: 'ObjectExpression',
1201                     properties: [{
1202                         type: 'Property',
1203                         key: {
1204                             type: 'Identifier',
1205                             name: 'false',
1206                             range: [6, 11],
1207                             loc: {
1208                                 start: { line: 1, column: 6 },
1209                                 end: { line: 1, column: 11 }
1210                             }
1211                         },
1212                         value: {
1213                             type: 'Literal',
1214                             value: 42,
1215                             raw: '42',
1216                             range: [13, 15],
1217                             loc: {
1218                                 start: { line: 1, column: 13 },
1219                                 end: { line: 1, column: 15 }
1220                             }
1221                         },
1222                         kind: 'init',
1223                         method: false,
1224                         shorthand: false,
1225                         range: [6, 15],
1226                         loc: {
1227                             start: { line: 1, column: 6 },
1228                             end: { line: 1, column: 15 }
1229                         }
1230                     }],
1231                     range: [4, 17],
1232                     loc: {
1233                         start: { line: 1, column: 4 },
1234                         end: { line: 1, column: 17 }
1235                     }
1236                 },
1237                 range: [0, 17],
1238                 loc: {
1239                     start: { line: 1, column: 0 },
1240                     end: { line: 1, column: 17 }
1241                 }
1242             },
1243             range: [0, 17],
1244             loc: {
1245                 start: { line: 1, column: 0 },
1246                 end: { line: 1, column: 17 }
1247             }
1248         },
1249
1250         'x = { null: 42 }': {
1251             type: 'ExpressionStatement',
1252             expression: {
1253                 type: 'AssignmentExpression',
1254                 operator: '=',
1255                 left: {
1256                     type: 'Identifier',
1257                     name: 'x',
1258                     range: [0, 1],
1259                     loc: {
1260                         start: { line: 1, column: 0 },
1261                         end: { line: 1, column: 1 }
1262                     }
1263                 },
1264                 right: {
1265                     type: 'ObjectExpression',
1266                     properties: [{
1267                         type: 'Property',
1268                         key: {
1269                             type: 'Identifier',
1270                             name: 'null',
1271                             range: [6, 10],
1272                             loc: {
1273                                 start: { line: 1, column: 6 },
1274                                 end: { line: 1, column: 10 }
1275                             }
1276                         },
1277                         value: {
1278                             type: 'Literal',
1279                             value: 42,
1280                             raw: '42',
1281                             range: [12, 14],
1282                             loc: {
1283                                 start: { line: 1, column: 12 },
1284                                 end: { line: 1, column: 14 }
1285                             }
1286                         },
1287                         kind: 'init',
1288                         method: false,
1289                         shorthand: false,
1290                         range: [6, 14],
1291                         loc: {
1292                             start: { line: 1, column: 6 },
1293                             end: { line: 1, column: 14 }
1294                         }
1295                     }],
1296                     range: [4, 16],
1297                     loc: {
1298                         start: { line: 1, column: 4 },
1299                         end: { line: 1, column: 16 }
1300                     }
1301                 },
1302                 range: [0, 16],
1303                 loc: {
1304                     start: { line: 1, column: 0 },
1305                     end: { line: 1, column: 16 }
1306                 }
1307             },
1308             range: [0, 16],
1309             loc: {
1310                 start: { line: 1, column: 0 },
1311                 end: { line: 1, column: 16 }
1312             }
1313         },
1314
1315         'x = { "answer": 42 }': {
1316             type: 'ExpressionStatement',
1317             expression: {
1318                 type: 'AssignmentExpression',
1319                 operator: '=',
1320                 left: {
1321                     type: 'Identifier',
1322                     name: 'x',
1323                     range: [0, 1],
1324                     loc: {
1325                         start: { line: 1, column: 0 },
1326                         end: { line: 1, column: 1 }
1327                     }
1328                 },
1329                 right: {
1330                     type: 'ObjectExpression',
1331                     properties: [{
1332                         type: 'Property',
1333                         key: {
1334                             type: 'Literal',
1335                             value: 'answer',
1336                             raw: '"answer"',
1337                             range: [6, 14],
1338                             loc: {
1339                                 start: { line: 1, column: 6 },
1340                                 end: { line: 1, column: 14 }
1341                             }
1342                         },
1343                         value: {
1344                             type: 'Literal',
1345                             value: 42,
1346                             raw: '42',
1347                             range: [16, 18],
1348                             loc: {
1349                                 start: { line: 1, column: 16 },
1350                                 end: { line: 1, column: 18 }
1351                             }
1352                         },
1353                         kind: 'init',
1354                         method: false,
1355                         shorthand: false,
1356                         range: [6, 18],
1357                         loc: {
1358                             start: { line: 1, column: 6 },
1359                             end: { line: 1, column: 18 }
1360                         }
1361                     }],
1362                     range: [4, 20],
1363                     loc: {
1364                         start: { line: 1, column: 4 },
1365                         end: { line: 1, column: 20 }
1366                     }
1367                 },
1368                 range: [0, 20],
1369                 loc: {
1370                     start: { line: 1, column: 0 },
1371                     end: { line: 1, column: 20 }
1372                 }
1373             },
1374             range: [0, 20],
1375             loc: {
1376                 start: { line: 1, column: 0 },
1377                 end: { line: 1, column: 20 }
1378             }
1379         },
1380
1381         'x = { x: 1, x: 2 }': {
1382             type: 'ExpressionStatement',
1383             expression: {
1384                 type: 'AssignmentExpression',
1385                 operator: '=',
1386                 left: {
1387                     type: 'Identifier',
1388                     name: 'x',
1389                     range: [0, 1],
1390                     loc: {
1391                         start: { line: 1, column: 0 },
1392                         end: { line: 1, column: 1 }
1393                     }
1394                 },
1395                 right: {
1396                     type: 'ObjectExpression',
1397                     properties: [
1398                         {
1399                             type: 'Property',
1400                             key: {
1401                                 type: 'Identifier',
1402                                 name: 'x',
1403                                 range: [6, 7],
1404                                 loc: {
1405                                     start: { line: 1, column: 6 },
1406                                     end: { line: 1, column: 7 }
1407                                 }
1408                             },
1409                             value: {
1410                                 type: 'Literal',
1411                                 value: 1,
1412                                 raw: '1',
1413                                 range: [9, 10],
1414                                 loc: {
1415                                     start: { line: 1, column: 9 },
1416                                     end: { line: 1, column: 10 }
1417                                 }
1418                             },
1419                             kind: 'init',
1420                             method: false,
1421                             shorthand: false,
1422                             range: [6, 10],
1423                             loc: {
1424                                 start: { line: 1, column: 6 },
1425                                 end: { line: 1, column: 10 }
1426                             }
1427                         },
1428                         {
1429                             type: 'Property',
1430                             key: {
1431                                 type: 'Identifier',
1432                                 name: 'x',
1433                                 range: [12, 13],
1434                                 loc: {
1435                                     start: { line: 1, column: 12 },
1436                                     end: { line: 1, column: 13 }
1437                                 }
1438                             },
1439                             value: {
1440                                 type: 'Literal',
1441                                 value: 2,
1442                                 raw: '2',
1443                                 range: [15, 16],
1444                                 loc: {
1445                                     start: { line: 1, column: 15 },
1446                                     end: { line: 1, column: 16 }
1447                                 }
1448                             },
1449                             kind: 'init',
1450                             method: false,
1451                             shorthand: false,
1452                             range: [12, 16],
1453                             loc: {
1454                                 start: { line: 1, column: 12 },
1455                                 end: { line: 1, column: 16 }
1456                             }
1457                         }
1458                     ],
1459                     range: [4, 18],
1460                     loc: {
1461                         start: { line: 1, column: 4 },
1462                         end: { line: 1, column: 18 }
1463                     }
1464                 },
1465                 range: [0, 18],
1466                 loc: {
1467                     start: { line: 1, column: 0 },
1468                     end: { line: 1, column: 18 }
1469                 }
1470             },
1471             range: [0, 18],
1472             loc: {
1473                 start: { line: 1, column: 0 },
1474                 end: { line: 1, column: 18 }
1475             }
1476         },
1477
1478         'x = { get width() { return m_width } }': {
1479             type: 'ExpressionStatement',
1480             expression: {
1481                 type: 'AssignmentExpression',
1482                 operator: '=',
1483                 left: {
1484                     type: 'Identifier',
1485                     name: 'x',
1486                     range: [0, 1],
1487                     loc: {
1488                         start: { line: 1, column: 0 },
1489                         end: { line: 1, column: 1 }
1490                     }
1491                 },
1492                 right: {
1493                     type: 'ObjectExpression',
1494                     properties: [{
1495                         type: 'Property',
1496                         key: {
1497                             type: 'Identifier',
1498                             name: 'width',
1499                             range: [10, 15],
1500                             loc: {
1501                                 start: { line: 1, column: 10 },
1502                                 end: { line: 1, column: 15 }
1503                             }
1504                         },
1505                         value: {
1506                             type: 'FunctionExpression',
1507                             id: null,
1508                             params: [],
1509                             defaults: [],
1510                             body: {
1511                                 type: 'BlockStatement',
1512                                 body: [{
1513                                     type: 'ReturnStatement',
1514                                     argument: {
1515                                         type: 'Identifier',
1516                                         name: 'm_width',
1517                                         range: [27, 34],
1518                                         loc: {
1519                                             start: { line: 1, column: 27 },
1520                                             end: { line: 1, column: 34 }
1521                                         }
1522                                     },
1523                                     range: [20, 35],
1524                                     loc: {
1525                                         start: { line: 1, column: 20 },
1526                                         end: { line: 1, column: 35 }
1527                                     }
1528                                 }],
1529                                 range: [18, 36],
1530                                 loc: {
1531                                     start: { line: 1, column: 18 },
1532                                     end: { line: 1, column: 36 }
1533                                 }
1534                             },
1535                             rest: null,
1536                             generator: false,
1537                             expression: false,
1538                             range: [18, 36],
1539                             loc: {
1540                                 start: { line: 1, column: 18 },
1541                                 end: { line: 1, column: 36 }
1542                             }
1543                         },
1544                         kind: 'get',
1545                         method: false,
1546                         shorthand: false,
1547                         range: [6, 36],
1548                         loc: {
1549                             start: { line: 1, column: 6 },
1550                             end: { line: 1, column: 36 }
1551                         }
1552                     }],
1553                     range: [4, 38],
1554                     loc: {
1555                         start: { line: 1, column: 4 },
1556                         end: { line: 1, column: 38 }
1557                     }
1558                 },
1559                 range: [0, 38],
1560                 loc: {
1561                     start: { line: 1, column: 0 },
1562                     end: { line: 1, column: 38 }
1563                 }
1564             },
1565             range: [0, 38],
1566             loc: {
1567                 start: { line: 1, column: 0 },
1568                 end: { line: 1, column: 38 }
1569             }
1570         },
1571
1572         'x = { get undef() {} }': {
1573             type: 'ExpressionStatement',
1574             expression: {
1575                 type: 'AssignmentExpression',
1576                 operator: '=',
1577                 left: {
1578                     type: 'Identifier',
1579                     name: 'x',
1580                     range: [0, 1],
1581                     loc: {
1582                         start: { line: 1, column: 0 },
1583                         end: { line: 1, column: 1 }
1584                     }
1585                 },
1586                 right: {
1587                     type: 'ObjectExpression',
1588                     properties: [{
1589                         type: 'Property',
1590                         key: {
1591                             type: 'Identifier',
1592                             name: 'undef',
1593                             range: [10, 15],
1594                             loc: {
1595                                 start: { line: 1, column: 10 },
1596                                 end: { line: 1, column: 15 }
1597                             }
1598                         },
1599                         value: {
1600                             type: 'FunctionExpression',
1601                             id: null,
1602                             params: [],
1603                             defaults: [],
1604                             body: {
1605                                 type: 'BlockStatement',
1606                                 body: [],
1607                                 range: [18, 20],
1608                                 loc: {
1609                                     start: { line: 1, column: 18 },
1610                                     end: { line: 1, column: 20 }
1611                                 }
1612                             },
1613                             rest: null,
1614                             generator: false,
1615                             expression: false,
1616                             range: [18, 20],
1617                             loc: {
1618                                 start: { line: 1, column: 18 },
1619                                 end: { line: 1, column: 20 }
1620                             }
1621                         },
1622                         kind: 'get',
1623                         method: false,
1624                         shorthand: false,
1625                         range: [6, 20],
1626                         loc: {
1627                             start: { line: 1, column: 6 },
1628                             end: { line: 1, column: 20 }
1629                         }
1630                     }],
1631                     range: [4, 22],
1632                     loc: {
1633                         start: { line: 1, column: 4 },
1634                         end: { line: 1, column: 22 }
1635                     }
1636                 },
1637                 range: [0, 22],
1638                 loc: {
1639                     start: { line: 1, column: 0 },
1640                     end: { line: 1, column: 22 }
1641                 }
1642             },
1643             range: [0, 22],
1644             loc: {
1645                 start: { line: 1, column: 0 },
1646                 end: { line: 1, column: 22 }
1647             }
1648         },
1649
1650         'x = { get if() {} }': {
1651             type: 'ExpressionStatement',
1652             expression: {
1653                 type: 'AssignmentExpression',
1654                 operator: '=',
1655                 left: {
1656                     type: 'Identifier',
1657                     name: 'x',
1658                     range: [0, 1],
1659                     loc: {
1660                         start: { line: 1, column: 0 },
1661                         end: { line: 1, column: 1 }
1662                     }
1663                 },
1664                 right: {
1665                     type: 'ObjectExpression',
1666                     properties: [{
1667                         type: 'Property',
1668                         key: {
1669                             type: 'Identifier',
1670                             name: 'if',
1671                             range: [10, 12],
1672                             loc: {
1673                                 start: { line: 1, column: 10 },
1674                                 end: { line: 1, column: 12 }
1675                             }
1676                         },
1677                         value: {
1678                             type: 'FunctionExpression',
1679                             id: null,
1680                             params: [],
1681                             defaults: [],
1682                             body: {
1683                                 type: 'BlockStatement',
1684                                 body: [],
1685                                 range: [15, 17],
1686                                 loc: {
1687                                     start: { line: 1, column: 15 },
1688                                     end: { line: 1, column: 17 }
1689                                 }
1690                             },
1691                             rest: null,
1692                             generator: false,
1693                             expression: false,
1694                             range: [15, 17],
1695                             loc: {
1696                                 start: { line: 1, column: 15 },
1697                                 end: { line: 1, column: 17 }
1698                             }
1699                         },
1700                         kind: 'get',
1701                         method: false,
1702                         shorthand: false,
1703                         range: [6, 17],
1704                         loc: {
1705                             start: { line: 1, column: 6 },
1706                             end: { line: 1, column: 17 }
1707                         }
1708                     }],
1709                     range: [4, 19],
1710                     loc: {
1711                         start: { line: 1, column: 4 },
1712                         end: { line: 1, column: 19 }
1713                     }
1714                 },
1715                 range: [0, 19],
1716                 loc: {
1717                     start: { line: 1, column: 0 },
1718                     end: { line: 1, column: 19 }
1719                 }
1720             },
1721             range: [0, 19],
1722             loc: {
1723                 start: { line: 1, column: 0 },
1724                 end: { line: 1, column: 19 }
1725             }
1726         },
1727
1728         'x = { get true() {} }': {
1729             type: 'ExpressionStatement',
1730             expression: {
1731                 type: 'AssignmentExpression',
1732                 operator: '=',
1733                 left: {
1734                     type: 'Identifier',
1735                     name: 'x',
1736                     range: [0, 1],
1737                     loc: {
1738                         start: { line: 1, column: 0 },
1739                         end: { line: 1, column: 1 }
1740                     }
1741                 },
1742                 right: {
1743                     type: 'ObjectExpression',
1744                     properties: [{
1745                         type: 'Property',
1746                         key: {
1747                             type: 'Identifier',
1748                             name: 'true',
1749                             range: [10, 14],
1750                             loc: {
1751                                 start: { line: 1, column: 10 },
1752                                 end: { line: 1, column: 14 }
1753                             }
1754                         },
1755                         value: {
1756                             type: 'FunctionExpression',
1757                             id: null,
1758                             params: [],
1759                             defaults: [],
1760                             body: {
1761                                 type: 'BlockStatement',
1762                                 body: [],
1763                                 range: [17, 19],
1764                                 loc: {
1765                                     start: { line: 1, column: 17 },
1766                                     end: { line: 1, column: 19 }
1767                                 }
1768                             },
1769                             rest: null,
1770                             generator: false,
1771                             expression: false,
1772                             range: [17, 19],
1773                             loc: {
1774                                 start: { line: 1, column: 17 },
1775                                 end: { line: 1, column: 19 }
1776                             }
1777                         },
1778                         kind: 'get',
1779                         method: false,
1780                         shorthand: false,
1781                         range: [6, 19],
1782                         loc: {
1783                             start: { line: 1, column: 6 },
1784                             end: { line: 1, column: 19 }
1785                         }
1786                     }],
1787                     range: [4, 21],
1788                     loc: {
1789                         start: { line: 1, column: 4 },
1790                         end: { line: 1, column: 21 }
1791                     }
1792                 },
1793                 range: [0, 21],
1794                 loc: {
1795                     start: { line: 1, column: 0 },
1796                     end: { line: 1, column: 21 }
1797                 }
1798             },
1799             range: [0, 21],
1800             loc: {
1801                 start: { line: 1, column: 0 },
1802                 end: { line: 1, column: 21 }
1803             }
1804         },
1805
1806         'x = { get false() {} }': {
1807             type: 'ExpressionStatement',
1808             expression: {
1809                 type: 'AssignmentExpression',
1810                 operator: '=',
1811                 left: {
1812                     type: 'Identifier',
1813                     name: 'x',
1814                     range: [0, 1],
1815                     loc: {
1816                         start: { line: 1, column: 0 },
1817                         end: { line: 1, column: 1 }
1818                     }
1819                 },
1820                 right: {
1821                     type: 'ObjectExpression',
1822                     properties: [{
1823                         type: 'Property',
1824                         key: {
1825                             type: 'Identifier',
1826                             name: 'false',
1827                             range: [10, 15],
1828                             loc: {
1829                                 start: { line: 1, column: 10 },
1830                                 end: { line: 1, column: 15 }
1831                             }
1832                         },
1833                         value: {
1834                             type: 'FunctionExpression',
1835                             id: null,
1836                             params: [],
1837                             defaults: [],
1838                             body: {
1839                                 type: 'BlockStatement',
1840                                 body: [],
1841                                 range: [18, 20],
1842                                 loc: {
1843                                     start: { line: 1, column: 18 },
1844                                     end: { line: 1, column: 20 }
1845                                 }
1846                             },
1847                             rest: null,
1848                             generator: false,
1849                             expression: false,
1850                             range: [18, 20],
1851                             loc: {
1852                                 start: { line: 1, column: 18 },
1853                                 end: { line: 1, column: 20 }
1854                             }
1855                         },
1856                         kind: 'get',
1857                         method: false,
1858                         shorthand: false,
1859                         range: [6, 20],
1860                         loc: {
1861                             start: { line: 1, column: 6 },
1862                             end: { line: 1, column: 20 }
1863                         }
1864                     }],
1865                     range: [4, 22],
1866                     loc: {
1867                         start: { line: 1, column: 4 },
1868                         end: { line: 1, column: 22 }
1869                     }
1870                 },
1871                 range: [0, 22],
1872                 loc: {
1873                     start: { line: 1, column: 0 },
1874                     end: { line: 1, column: 22 }
1875                 }
1876             },
1877             range: [0, 22],
1878             loc: {
1879                 start: { line: 1, column: 0 },
1880                 end: { line: 1, column: 22 }
1881             }
1882         },
1883
1884         'x = { get null() {} }': {
1885             type: 'ExpressionStatement',
1886             expression: {
1887                 type: 'AssignmentExpression',
1888                 operator: '=',
1889                 left: {
1890                     type: 'Identifier',
1891                     name: 'x',
1892                     range: [0, 1],
1893                     loc: {
1894                         start: { line: 1, column: 0 },
1895                         end: { line: 1, column: 1 }
1896                     }
1897                 },
1898                 right: {
1899                     type: 'ObjectExpression',
1900                     properties: [{
1901                         type: 'Property',
1902                         key: {
1903                             type: 'Identifier',
1904                             name: 'null',
1905                             range: [10, 14],
1906                             loc: {
1907                                 start: { line: 1, column: 10 },
1908                                 end: { line: 1, column: 14 }
1909                             }
1910                         },
1911                         value: {
1912                             type: 'FunctionExpression',
1913                             id: null,
1914                             params: [],
1915                             defaults: [],
1916                             body: {
1917                                 type: 'BlockStatement',
1918                                 body: [],
1919                                 range: [17, 19],
1920                                 loc: {
1921                                     start: { line: 1, column: 17 },
1922                                     end: { line: 1, column: 19 }
1923                                 }
1924                             },
1925                             rest: null,
1926                             generator: false,
1927                             expression: false,
1928                             range: [17, 19],
1929                             loc: {
1930                                 start: { line: 1, column: 17 },
1931                                 end: { line: 1, column: 19 }
1932                             }
1933                         },
1934                         kind: 'get',
1935                         method: false,
1936                         shorthand: false,
1937                         range: [6, 19],
1938                         loc: {
1939                             start: { line: 1, column: 6 },
1940                             end: { line: 1, column: 19 }
1941                         }
1942                     }],
1943                     range: [4, 21],
1944                     loc: {
1945                         start: { line: 1, column: 4 },
1946                         end: { line: 1, column: 21 }
1947                     }
1948                 },
1949                 range: [0, 21],
1950                 loc: {
1951                     start: { line: 1, column: 0 },
1952                     end: { line: 1, column: 21 }
1953                 }
1954             },
1955             range: [0, 21],
1956             loc: {
1957                 start: { line: 1, column: 0 },
1958                 end: { line: 1, column: 21 }
1959             }
1960         },
1961
1962         'x = { get "undef"() {} }': {
1963             type: 'ExpressionStatement',
1964             expression: {
1965                 type: 'AssignmentExpression',
1966                 operator: '=',
1967                 left: {
1968                     type: 'Identifier',
1969                     name: 'x',
1970                     range: [0, 1],
1971                     loc: {
1972                         start: { line: 1, column: 0 },
1973                         end: { line: 1, column: 1 }
1974                     }
1975                 },
1976                 right: {
1977                     type: 'ObjectExpression',
1978                     properties: [{
1979                         type: 'Property',
1980                         key: {
1981                             type: 'Literal',
1982                             value: 'undef',
1983                             raw: '"undef"',
1984                             range: [10, 17],
1985                             loc: {
1986                                 start: { line: 1, column: 10 },
1987                                 end: { line: 1, column: 17 }
1988                             }
1989                         },
1990                         value: {
1991                             type: 'FunctionExpression',
1992                             id: null,
1993                             params: [],
1994                             defaults: [],
1995                             body: {
1996                                 type: 'BlockStatement',
1997                                 body: [],
1998                                 range: [20, 22],
1999                                 loc: {
2000                                     start: { line: 1, column: 20 },
2001                                     end: { line: 1, column: 22 }
2002                                 }
2003                             },
2004                             rest: null,
2005                             generator: false,
2006                             expression: false,
2007                             range: [20, 22],
2008                             loc: {
2009                                 start: { line: 1, column: 20 },
2010                                 end: { line: 1, column: 22 }
2011                             }
2012                         },
2013                         kind: 'get',
2014                         method: false,
2015                         shorthand: false,
2016                         range: [6, 22],
2017                         loc: {
2018                             start: { line: 1, column: 6 },
2019                             end: { line: 1, column: 22 }
2020                         }
2021                     }],
2022                     range: [4, 24],
2023                     loc: {
2024                         start: { line: 1, column: 4 },
2025                         end: { line: 1, column: 24 }
2026                     }
2027                 },
2028                 range: [0, 24],
2029                 loc: {
2030                     start: { line: 1, column: 0 },
2031                     end: { line: 1, column: 24 }
2032                 }
2033             },
2034             range: [0, 24],
2035             loc: {
2036                 start: { line: 1, column: 0 },
2037                 end: { line: 1, column: 24 }
2038             }
2039         },
2040
2041         'x = { get 10() {} }': {
2042             type: 'ExpressionStatement',
2043             expression: {
2044                 type: 'AssignmentExpression',
2045                 operator: '=',
2046                 left: {
2047                     type: 'Identifier',
2048                     name: 'x',
2049                     range: [0, 1],
2050                     loc: {
2051                         start: { line: 1, column: 0 },
2052                         end: { line: 1, column: 1 }
2053                     }
2054                 },
2055                 right: {
2056                     type: 'ObjectExpression',
2057                     properties: [{
2058                         type: 'Property',
2059                         key: {
2060                             type: 'Literal',
2061                             value: 10,
2062                             raw: '10',
2063                             range: [10, 12],
2064                             loc: {
2065                                 start: { line: 1, column: 10 },
2066                                 end: { line: 1, column: 12 }
2067                             }
2068                         },
2069                         value: {
2070                             type: 'FunctionExpression',
2071                             id: null,
2072                             params: [],
2073                             defaults: [],
2074                             body: {
2075                                 type: 'BlockStatement',
2076                                 body: [],
2077                                 range: [15, 17],
2078                                 loc: {
2079                                     start: { line: 1, column: 15 },
2080                                     end: { line: 1, column: 17 }
2081                                 }
2082                             },
2083                             rest: null,
2084                             generator: false,
2085                             expression: false,
2086                             range: [15, 17],
2087                             loc: {
2088                                 start: { line: 1, column: 15 },
2089                                 end: { line: 1, column: 17 }
2090                             }
2091                         },
2092                         kind: 'get',
2093                         method: false,
2094                         shorthand: false,
2095                         range: [6, 17],
2096                         loc: {
2097                             start: { line: 1, column: 6 },
2098                             end: { line: 1, column: 17 }
2099                         }
2100                     }],
2101                     range: [4, 19],
2102                     loc: {
2103                         start: { line: 1, column: 4 },
2104                         end: { line: 1, column: 19 }
2105                     }
2106                 },
2107                 range: [0, 19],
2108                 loc: {
2109                     start: { line: 1, column: 0 },
2110                     end: { line: 1, column: 19 }
2111                 }
2112             },
2113             range: [0, 19],
2114             loc: {
2115                 start: { line: 1, column: 0 },
2116                 end: { line: 1, column: 19 }
2117             }
2118         },
2119
2120         'x = { set width(w) { m_width = w } }': {
2121             type: 'ExpressionStatement',
2122             expression: {
2123                 type: 'AssignmentExpression',
2124                 operator: '=',
2125                 left: {
2126                     type: 'Identifier',
2127                     name: 'x',
2128                     range: [0, 1],
2129                     loc: {
2130                         start: { line: 1, column: 0 },
2131                         end: { line: 1, column: 1 }
2132                     }
2133                 },
2134                 right: {
2135                     type: 'ObjectExpression',
2136                     properties: [{
2137                         type: 'Property',
2138                         key: {
2139                             type: 'Identifier',
2140                             name: 'width',
2141                             range: [10, 15],
2142                             loc: {
2143                                 start: { line: 1, column: 10 },
2144                                 end: { line: 1, column: 15 }
2145                             }
2146                         },
2147                         value: {
2148                             type: 'FunctionExpression',
2149                             id: null,
2150                             params: [{
2151                                 type: 'Identifier',
2152                                 name: 'w',
2153                                 range: [16, 17],
2154                                 loc: {
2155                                     start: { line: 1, column: 16 },
2156                                     end: { line: 1, column: 17 }
2157                                 }
2158                             }],
2159                             defaults: [],
2160                             body: {
2161                                 type: 'BlockStatement',
2162                                 body: [{
2163                                     type: 'ExpressionStatement',
2164                                     expression: {
2165                                         type: 'AssignmentExpression',
2166                                         operator: '=',
2167                                         left: {
2168                                             type: 'Identifier',
2169                                             name: 'm_width',
2170                                             range: [21, 28],
2171                                             loc: {
2172                                                 start: { line: 1, column: 21 },
2173                                                 end: { line: 1, column: 28 }
2174                                             }
2175                                         },
2176                                         right: {
2177                                             type: 'Identifier',
2178                                             name: 'w',
2179                                             range: [31, 32],
2180                                             loc: {
2181                                                 start: { line: 1, column: 31 },
2182                                                 end: { line: 1, column: 32 }
2183                                             }
2184                                         },
2185                                         range: [21, 32],
2186                                         loc: {
2187                                             start: { line: 1, column: 21 },
2188                                             end: { line: 1, column: 32 }
2189                                         }
2190                                     },
2191                                     range: [21, 33],
2192                                     loc: {
2193                                         start: { line: 1, column: 21 },
2194                                         end: { line: 1, column: 33 }
2195                                     }
2196                                 }],
2197                                 range: [19, 34],
2198                                 loc: {
2199                                     start: { line: 1, column: 19 },
2200                                     end: { line: 1, column: 34 }
2201                                 }
2202                             },
2203                             rest: null,
2204                             generator: false,
2205                             expression: false,
2206                             range: [19, 34],
2207                             loc: {
2208                                 start: { line: 1, column: 19 },
2209                                 end: { line: 1, column: 34 }
2210                             }
2211                         },
2212                         kind: 'set',
2213                         method: false,
2214                         shorthand: false,
2215                         range: [6, 34],
2216                         loc: {
2217                             start: { line: 1, column: 6 },
2218                             end: { line: 1, column: 34 }
2219                         }
2220                     }],
2221                     range: [4, 36],
2222                     loc: {
2223                         start: { line: 1, column: 4 },
2224                         end: { line: 1, column: 36 }
2225                     }
2226                 },
2227                 range: [0, 36],
2228                 loc: {
2229                     start: { line: 1, column: 0 },
2230                     end: { line: 1, column: 36 }
2231                 }
2232             },
2233             range: [0, 36],
2234             loc: {
2235                 start: { line: 1, column: 0 },
2236                 end: { line: 1, column: 36 }
2237             }
2238         },
2239
2240         'x = { set if(w) { m_if = w } }': {
2241             type: 'ExpressionStatement',
2242             expression: {
2243                 type: 'AssignmentExpression',
2244                 operator: '=',
2245                 left: {
2246                     type: 'Identifier',
2247                     name: 'x',
2248                     range: [0, 1],
2249                     loc: {
2250                         start: { line: 1, column: 0 },
2251                         end: { line: 1, column: 1 }
2252                     }
2253                 },
2254                 right: {
2255                     type: 'ObjectExpression',
2256                     properties: [{
2257                         type: 'Property',
2258                         key: {
2259                             type: 'Identifier',
2260                             name: 'if',
2261                             range: [10, 12],
2262                             loc: {
2263                                 start: { line: 1, column: 10 },
2264                                 end: { line: 1, column: 12 }
2265                             }
2266                         },
2267                         value: {
2268                             type: 'FunctionExpression',
2269                             id: null,
2270                             params: [{
2271                                 type: 'Identifier',
2272                                 name: 'w',
2273                                 range: [13, 14],
2274                                 loc: {
2275                                     start: { line: 1, column: 13 },
2276                                     end: { line: 1, column: 14 }
2277                                 }
2278                             }],
2279                             defaults: [],
2280                             body: {
2281                                 type: 'BlockStatement',
2282                                 body: [{
2283                                     type: 'ExpressionStatement',
2284                                     expression: {
2285                                         type: 'AssignmentExpression',
2286                                         operator: '=',
2287                                         left: {
2288                                             type: 'Identifier',
2289                                             name: 'm_if',
2290                                             range: [18, 22],
2291                                             loc: {
2292                                                 start: { line: 1, column: 18 },
2293                                                 end: { line: 1, column: 22 }
2294                                             }
2295                                         },
2296                                         right: {
2297                                             type: 'Identifier',
2298                                             name: 'w',
2299                                             range: [25, 26],
2300                                             loc: {
2301                                                 start: { line: 1, column: 25 },
2302                                                 end: { line: 1, column: 26 }
2303                                             }
2304                                         },
2305                                         range: [18, 26],
2306                                         loc: {
2307                                             start: { line: 1, column: 18 },
2308                                             end: { line: 1, column: 26 }
2309                                         }
2310                                     },
2311                                     range: [18, 27],
2312                                     loc: {
2313                                         start: { line: 1, column: 18 },
2314                                         end: { line: 1, column: 27 }
2315                                     }
2316                                 }],
2317                                 range: [16, 28],
2318                                 loc: {
2319                                     start: { line: 1, column: 16 },
2320                                     end: { line: 1, column: 28 }
2321                                 }
2322                             },
2323                             rest: null,
2324                             generator: false,
2325                             expression: false,
2326                             range: [16, 28],
2327                             loc: {
2328                                 start: { line: 1, column: 16 },
2329                                 end: { line: 1, column: 28 }
2330                             }
2331                         },
2332                         kind: 'set',
2333                         method: false,
2334                         shorthand: false,
2335                         range: [6, 28],
2336                         loc: {
2337                             start: { line: 1, column: 6 },
2338                             end: { line: 1, column: 28 }
2339                         }
2340                     }],
2341                     range: [4, 30],
2342                     loc: {
2343                         start: { line: 1, column: 4 },
2344                         end: { line: 1, column: 30 }
2345                     }
2346                 },
2347                 range: [0, 30],
2348                 loc: {
2349                     start: { line: 1, column: 0 },
2350                     end: { line: 1, column: 30 }
2351                 }
2352             },
2353             range: [0, 30],
2354             loc: {
2355                 start: { line: 1, column: 0 },
2356                 end: { line: 1, column: 30 }
2357             }
2358         },
2359
2360         'x = { set true(w) { m_true = w } }': {
2361             type: 'ExpressionStatement',
2362             expression: {
2363                 type: 'AssignmentExpression',
2364                 operator: '=',
2365                 left: {
2366                     type: 'Identifier',
2367                     name: 'x',
2368                     range: [0, 1],
2369                     loc: {
2370                         start: { line: 1, column: 0 },
2371                         end: { line: 1, column: 1 }
2372                     }
2373                 },
2374                 right: {
2375                     type: 'ObjectExpression',
2376                     properties: [{
2377                         type: 'Property',
2378                         key: {
2379                             type: 'Identifier',
2380                             name: 'true',
2381                             range: [10, 14],
2382                             loc: {
2383                                 start: { line: 1, column: 10 },
2384                                 end: { line: 1, column: 14 }
2385                             }
2386                         },
2387                         value: {
2388                             type: 'FunctionExpression',
2389                             id: null,
2390                             params: [{
2391                                 type: 'Identifier',
2392                                 name: 'w',
2393                                 range: [15, 16],
2394                                 loc: {
2395                                     start: { line: 1, column: 15 },
2396                                     end: { line: 1, column: 16 }
2397                                 }
2398                             }],
2399                             defaults: [],
2400                             body: {
2401                                 type: 'BlockStatement',
2402                                 body: [{
2403                                     type: 'ExpressionStatement',
2404                                     expression: {
2405                                         type: 'AssignmentExpression',
2406                                         operator: '=',
2407                                         left: {
2408                                             type: 'Identifier',
2409                                             name: 'm_true',
2410                                             range: [20, 26],
2411                                             loc: {
2412                                                 start: { line: 1, column: 20 },
2413                                                 end: { line: 1, column: 26 }
2414                                             }
2415                                         },
2416                                         right: {
2417                                             type: 'Identifier',
2418                                             name: 'w',
2419                                             range: [29, 30],
2420                                             loc: {
2421                                                 start: { line: 1, column: 29 },
2422                                                 end: { line: 1, column: 30 }
2423                                             }
2424                                         },
2425                                         range: [20, 30],
2426                                         loc: {
2427                                             start: { line: 1, column: 20 },
2428                                             end: { line: 1, column: 30 }
2429                                         }
2430                                     },
2431                                     range: [20, 31],
2432                                     loc: {
2433                                         start: { line: 1, column: 20 },
2434                                         end: { line: 1, column: 31 }
2435                                     }
2436                                 }],
2437                                 range: [18, 32],
2438                                 loc: {
2439                                     start: { line: 1, column: 18 },
2440                                     end: { line: 1, column: 32 }
2441                                 }
2442                             },
2443                             rest: null,
2444                             generator: false,
2445                             expression: false,
2446                             range: [18, 32],
2447                             loc: {
2448                                 start: { line: 1, column: 18 },
2449                                 end: { line: 1, column: 32 }
2450                             }
2451                         },
2452                         kind: 'set',
2453                         method: false,
2454                         shorthand: false,
2455                         range: [6, 32],
2456                         loc: {
2457                             start: { line: 1, column: 6 },
2458                             end: { line: 1, column: 32 }
2459                         }
2460                     }],
2461                     range: [4, 34],
2462                     loc: {
2463                         start: { line: 1, column: 4 },
2464                         end: { line: 1, column: 34 }
2465                     }
2466                 },
2467                 range: [0, 34],
2468                 loc: {
2469                     start: { line: 1, column: 0 },
2470                     end: { line: 1, column: 34 }
2471                 }
2472             },
2473             range: [0, 34],
2474             loc: {
2475                 start: { line: 1, column: 0 },
2476                 end: { line: 1, column: 34 }
2477             }
2478         },
2479
2480         'x = { set false(w) { m_false = w } }': {
2481             type: 'ExpressionStatement',
2482             expression: {
2483                 type: 'AssignmentExpression',
2484                 operator: '=',
2485                 left: {
2486                     type: 'Identifier',
2487                     name: 'x',
2488                     range: [0, 1],
2489                     loc: {
2490                         start: { line: 1, column: 0 },
2491                         end: { line: 1, column: 1 }
2492                     }
2493                 },
2494                 right: {
2495                     type: 'ObjectExpression',
2496                     properties: [{
2497                         type: 'Property',
2498                         key: {
2499                             type: 'Identifier',
2500                             name: 'false',
2501                             range: [10, 15],
2502                             loc: {
2503                                 start: { line: 1, column: 10 },
2504                                 end: { line: 1, column: 15 }
2505                             }
2506                         },
2507                         value: {
2508                             type: 'FunctionExpression',
2509                             id: null,
2510                             params: [{
2511                                 type: 'Identifier',
2512                                 name: 'w',
2513                                 range: [16, 17],
2514                                 loc: {
2515                                     start: { line: 1, column: 16 },
2516                                     end: { line: 1, column: 17 }
2517                                 }
2518                             }],
2519                             defaults: [],
2520                             body: {
2521                                 type: 'BlockStatement',
2522                                 body: [{
2523                                     type: 'ExpressionStatement',
2524                                     expression: {
2525                                         type: 'AssignmentExpression',
2526                                         operator: '=',
2527                                         left: {
2528                                             type: 'Identifier',
2529                                             name: 'm_false',
2530                                             range: [21, 28],
2531                                             loc: {
2532                                                 start: { line: 1, column: 21 },
2533                                                 end: { line: 1, column: 28 }
2534                                             }
2535                                         },
2536                                         right: {
2537                                             type: 'Identifier',
2538                                             name: 'w',
2539                                             range: [31, 32],
2540                                             loc: {
2541                                                 start: { line: 1, column: 31 },
2542                                                 end: { line: 1, column: 32 }
2543                                             }
2544                                         },
2545                                         range: [21, 32],
2546                                         loc: {
2547                                             start: { line: 1, column: 21 },
2548                                             end: { line: 1, column: 32 }
2549                                         }
2550                                     },
2551                                     range: [21, 33],
2552                                     loc: {
2553                                         start: { line: 1, column: 21 },
2554                                         end: { line: 1, column: 33 }
2555                                     }
2556                                 }],
2557                                 range: [19, 34],
2558                                 loc: {
2559                                     start: { line: 1, column: 19 },
2560                                     end: { line: 1, column: 34 }
2561                                 }
2562                             },
2563                             rest: null,
2564                             generator: false,
2565                             expression: false,
2566                             range: [19, 34],
2567                             loc: {
2568                                 start: { line: 1, column: 19 },
2569                                 end: { line: 1, column: 34 }
2570                             }
2571                         },
2572                         kind: 'set',
2573                         method: false,
2574                         shorthand: false,
2575                         range: [6, 34],
2576                         loc: {
2577                             start: { line: 1, column: 6 },
2578                             end: { line: 1, column: 34 }
2579                         }
2580                     }],
2581                     range: [4, 36],
2582                     loc: {
2583                         start: { line: 1, column: 4 },
2584                         end: { line: 1, column: 36 }
2585                     }
2586                 },
2587                 range: [0, 36],
2588                 loc: {
2589                     start: { line: 1, column: 0 },
2590                     end: { line: 1, column: 36 }
2591                 }
2592             },
2593             range: [0, 36],
2594             loc: {
2595                 start: { line: 1, column: 0 },
2596                 end: { line: 1, column: 36 }
2597             }
2598         },
2599
2600         'x = { set null(w) { m_null = w } }': {
2601             type: 'ExpressionStatement',
2602             expression: {
2603                 type: 'AssignmentExpression',
2604                 operator: '=',
2605                 left: {
2606                     type: 'Identifier',
2607                     name: 'x',
2608                     range: [0, 1],
2609                     loc: {
2610                         start: { line: 1, column: 0 },
2611                         end: { line: 1, column: 1 }
2612                     }
2613                 },
2614                 right: {
2615                     type: 'ObjectExpression',
2616                     properties: [{
2617                         type: 'Property',
2618                         key: {
2619                             type: 'Identifier',
2620                             name: 'null',
2621                             range: [10, 14],
2622                             loc: {
2623                                 start: { line: 1, column: 10 },
2624                                 end: { line: 1, column: 14 }
2625                             }
2626                         },
2627                         value: {
2628                             type: 'FunctionExpression',
2629                             id: null,
2630                             params: [{
2631                                 type: 'Identifier',
2632                                 name: 'w',
2633                                 range: [15, 16],
2634                                 loc: {
2635                                     start: { line: 1, column: 15 },
2636                                     end: { line: 1, column: 16 }
2637                                 }
2638                             }],
2639                             defaults: [],
2640                             body: {
2641                                 type: 'BlockStatement',
2642                                 body: [{
2643                                     type: 'ExpressionStatement',
2644                                     expression: {
2645                                         type: 'AssignmentExpression',
2646                                         operator: '=',
2647                                         left: {
2648                                             type: 'Identifier',
2649                                             name: 'm_null',
2650                                             range: [20, 26],
2651                                             loc: {
2652                                                 start: { line: 1, column: 20 },
2653                                                 end: { line: 1, column: 26 }
2654                                             }
2655                                         },
2656                                         right: {
2657                                             type: 'Identifier',
2658                                             name: 'w',
2659                                             range: [29, 30],
2660                                             loc: {
2661                                                 start: { line: 1, column: 29 },
2662                                                 end: { line: 1, column: 30 }
2663                                             }
2664                                         },
2665                                         range: [20, 30],
2666                                         loc: {
2667                                             start: { line: 1, column: 20 },
2668                                             end: { line: 1, column: 30 }
2669                                         }
2670                                     },
2671                                     range: [20, 31],
2672                                     loc: {
2673                                         start: { line: 1, column: 20 },
2674                                         end: { line: 1, column: 31 }
2675                                     }
2676                                 }],
2677                                 range: [18, 32],
2678                                 loc: {
2679                                     start: { line: 1, column: 18 },
2680                                     end: { line: 1, column: 32 }
2681                                 }
2682                             },
2683                             rest: null,
2684                             generator: false,
2685                             expression: false,
2686                             range: [18, 32],
2687                             loc: {
2688                                 start: { line: 1, column: 18 },
2689                                 end: { line: 1, column: 32 }
2690                             }
2691                         },
2692                         kind: 'set',
2693                         method: false,
2694                         shorthand: false,
2695                         range: [6, 32],
2696                         loc: {
2697                             start: { line: 1, column: 6 },
2698                             end: { line: 1, column: 32 }
2699                         }
2700                     }],
2701                     range: [4, 34],
2702                     loc: {
2703                         start: { line: 1, column: 4 },
2704                         end: { line: 1, column: 34 }
2705                     }
2706                 },
2707                 range: [0, 34],
2708                 loc: {
2709                     start: { line: 1, column: 0 },
2710                     end: { line: 1, column: 34 }
2711                 }
2712             },
2713             range: [0, 34],
2714             loc: {
2715                 start: { line: 1, column: 0 },
2716                 end: { line: 1, column: 34 }
2717             }
2718         },
2719
2720         'x = { set "null"(w) { m_null = w } }': {
2721             type: 'ExpressionStatement',
2722             expression: {
2723                 type: 'AssignmentExpression',
2724                 operator: '=',
2725                 left: {
2726                     type: 'Identifier',
2727                     name: 'x',
2728                     range: [0, 1],
2729                     loc: {
2730                         start: { line: 1, column: 0 },
2731                         end: { line: 1, column: 1 }
2732                     }
2733                 },
2734                 right: {
2735                     type: 'ObjectExpression',
2736                     properties: [{
2737                         type: 'Property',
2738                         key: {
2739                             type: 'Literal',
2740                             value: 'null',
2741                             raw: '"null"',
2742                             range: [10, 16],
2743                             loc: {
2744                                 start: { line: 1, column: 10 },
2745                                 end: { line: 1, column: 16 }
2746                             }
2747                         },
2748                         value: {
2749                             type: 'FunctionExpression',
2750                             id: null,
2751                             params: [{
2752                                 type: 'Identifier',
2753                                 name: 'w',
2754                                 range: [17, 18],
2755                                 loc: {
2756                                     start: { line: 1, column: 17 },
2757                                     end: { line: 1, column: 18 }
2758                                 }
2759                             }],
2760                             defaults: [],
2761                             body: {
2762                                 type: 'BlockStatement',
2763                                 body: [{
2764                                     type: 'ExpressionStatement',
2765                                     expression: {
2766                                         type: 'AssignmentExpression',
2767                                         operator: '=',
2768                                         left: {
2769                                             type: 'Identifier',
2770                                             name: 'm_null',
2771                                             range: [22, 28],
2772                                             loc: {
2773                                                 start: { line: 1, column: 22 },
2774                                                 end: { line: 1, column: 28 }
2775                                             }
2776                                         },
2777                                         right: {
2778                                             type: 'Identifier',
2779                                             name: 'w',
2780                                             range: [31, 32],
2781                                             loc: {
2782                                                 start: { line: 1, column: 31 },
2783                                                 end: { line: 1, column: 32 }
2784                                             }
2785                                         },
2786                                         range: [22, 32],
2787                                         loc: {
2788                                             start: { line: 1, column: 22 },
2789                                             end: { line: 1, column: 32 }
2790                                         }
2791                                     },
2792                                     range: [22, 33],
2793                                     loc: {
2794                                         start: { line: 1, column: 22 },
2795                                         end: { line: 1, column: 33 }
2796                                     }
2797                                 }],
2798                                 range: [20, 34],
2799                                 loc: {
2800                                     start: { line: 1, column: 20 },
2801                                     end: { line: 1, column: 34 }
2802                                 }
2803                             },
2804                             rest: null,
2805                             generator: false,
2806                             expression: false,
2807                             range: [20, 34],
2808                             loc: {
2809                                 start: { line: 1, column: 20 },
2810                                 end: { line: 1, column: 34 }
2811                             }
2812                         },
2813                         kind: 'set',
2814                         method: false,
2815                         shorthand: false,
2816                         range: [6, 34],
2817                         loc: {
2818                             start: { line: 1, column: 6 },
2819                             end: { line: 1, column: 34 }
2820                         }
2821                     }],
2822                     range: [4, 36],
2823                     loc: {
2824                         start: { line: 1, column: 4 },
2825                         end: { line: 1, column: 36 }
2826                     }
2827                 },
2828                 range: [0, 36],
2829                 loc: {
2830                     start: { line: 1, column: 0 },
2831                     end: { line: 1, column: 36 }
2832                 }
2833             },
2834             range: [0, 36],
2835             loc: {
2836                 start: { line: 1, column: 0 },
2837                 end: { line: 1, column: 36 }
2838             }
2839         },
2840
2841         'x = { set 10(w) { m_null = w } }': {
2842             type: 'ExpressionStatement',
2843             expression: {
2844                 type: 'AssignmentExpression',
2845                 operator: '=',
2846                 left: {
2847                     type: 'Identifier',
2848                     name: 'x',
2849                     range: [0, 1],
2850                     loc: {
2851                         start: { line: 1, column: 0 },
2852                         end: { line: 1, column: 1 }
2853                     }
2854                 },
2855                 right: {
2856                     type: 'ObjectExpression',
2857                     properties: [{
2858                         type: 'Property',
2859                         key: {
2860                             type: 'Literal',
2861                             value: 10,
2862                             raw: '10',
2863                             range: [10, 12],
2864                             loc: {
2865                                 start: { line: 1, column: 10 },
2866                                 end: { line: 1, column: 12 }
2867                             }
2868                         },
2869                         value: {
2870                             type: 'FunctionExpression',
2871                             id: null,
2872                             params: [{
2873                                 type: 'Identifier',
2874                                 name: 'w',
2875                                 range: [13, 14],
2876                                 loc: {
2877                                     start: { line: 1, column: 13 },
2878                                     end: { line: 1, column: 14 }
2879                                 }
2880                             }],
2881                             defaults: [],
2882                             body: {
2883                                 type: 'BlockStatement',
2884                                 body: [{
2885                                     type: 'ExpressionStatement',
2886                                     expression: {
2887                                         type: 'AssignmentExpression',
2888                                         operator: '=',
2889                                         left: {
2890                                             type: 'Identifier',
2891                                             name: 'm_null',
2892                                             range: [18, 24],
2893                                             loc: {
2894                                                 start: { line: 1, column: 18 },
2895                                                 end: { line: 1, column: 24 }
2896                                             }
2897                                         },
2898                                         right: {
2899                                             type: 'Identifier',
2900                                             name: 'w',
2901                                             range: [27, 28],
2902                                             loc: {
2903                                                 start: { line: 1, column: 27 },
2904                                                 end: { line: 1, column: 28 }
2905                                             }
2906                                         },
2907                                         range: [18, 28],
2908                                         loc: {
2909                                             start: { line: 1, column: 18 },
2910                                             end: { line: 1, column: 28 }
2911                                         }
2912                                     },
2913                                     range: [18, 29],
2914                                     loc: {
2915                                         start: { line: 1, column: 18 },
2916                                         end: { line: 1, column: 29 }
2917                                     }
2918                                 }],
2919                                 range: [16, 30],
2920                                 loc: {
2921                                     start: { line: 1, column: 16 },
2922                                     end: { line: 1, column: 30 }
2923                                 }
2924                             },
2925                             rest: null,
2926                             generator: false,
2927                             expression: false,
2928                             range: [16, 30],
2929                             loc: {
2930                                 start: { line: 1, column: 16 },
2931                                 end: { line: 1, column: 30 }
2932                             }
2933                         },
2934                         kind: 'set',
2935                         method: false,
2936                         shorthand: false,
2937                         range: [6, 30],
2938                         loc: {
2939                             start: { line: 1, column: 6 },
2940                             end: { line: 1, column: 30 }
2941                         }
2942                     }],
2943                     range: [4, 32],
2944                     loc: {
2945                         start: { line: 1, column: 4 },
2946                         end: { line: 1, column: 32 }
2947                     }
2948                 },
2949                 range: [0, 32],
2950                 loc: {
2951                     start: { line: 1, column: 0 },
2952                     end: { line: 1, column: 32 }
2953                 }
2954             },
2955             range: [0, 32],
2956             loc: {
2957                 start: { line: 1, column: 0 },
2958                 end: { line: 1, column: 32 }
2959             }
2960         },
2961
2962         'x = { get: 42 }': {
2963             type: 'ExpressionStatement',
2964             expression: {
2965                 type: 'AssignmentExpression',
2966                 operator: '=',
2967                 left: {
2968                     type: 'Identifier',
2969                     name: 'x',
2970                     range: [0, 1],
2971                     loc: {
2972                         start: { line: 1, column: 0 },
2973                         end: { line: 1, column: 1 }
2974                     }
2975                 },
2976                 right: {
2977                     type: 'ObjectExpression',
2978                     properties: [{
2979                         type: 'Property',
2980                         key: {
2981                             type: 'Identifier',
2982                             name: 'get',
2983                             range: [6, 9],
2984                             loc: {
2985                                 start: { line: 1, column: 6 },
2986                                 end: { line: 1, column: 9 }
2987                             }
2988                         },
2989                         value: {
2990                             type: 'Literal',
2991                             value: 42,
2992                             raw: '42',
2993                             range: [11, 13],
2994                             loc: {
2995                                 start: { line: 1, column: 11 },
2996                                 end: { line: 1, column: 13 }
2997                             }
2998                         },
2999                         kind: 'init',
3000                         method: false,
3001                         shorthand: false,
3002                         range: [6, 13],
3003                         loc: {
3004                             start: { line: 1, column: 6 },
3005                             end: { line: 1, column: 13 }
3006                         }
3007                     }],
3008                     range: [4, 15],
3009                     loc: {
3010                         start: { line: 1, column: 4 },
3011                         end: { line: 1, column: 15 }
3012                     }
3013                 },
3014                 range: [0, 15],
3015                 loc: {
3016                     start: { line: 1, column: 0 },
3017                     end: { line: 1, column: 15 }
3018                 }
3019             },
3020             range: [0, 15],
3021             loc: {
3022                 start: { line: 1, column: 0 },
3023                 end: { line: 1, column: 15 }
3024             }
3025         },
3026
3027         'x = { set: 43 }': {
3028             type: 'ExpressionStatement',
3029             expression: {
3030                 type: 'AssignmentExpression',
3031                 operator: '=',
3032                 left: {
3033                     type: 'Identifier',
3034                     name: 'x',
3035                     range: [0, 1],
3036                     loc: {
3037                         start: { line: 1, column: 0 },
3038                         end: { line: 1, column: 1 }
3039                     }
3040                 },
3041                 right: {
3042                     type: 'ObjectExpression',
3043                     properties: [{
3044                         type: 'Property',
3045                         key: {
3046                             type: 'Identifier',
3047                             name: 'set',
3048                             range: [6, 9],
3049                             loc: {
3050                                 start: { line: 1, column: 6 },
3051                                 end: { line: 1, column: 9 }
3052                             }
3053                         },
3054                         value: {
3055                             type: 'Literal',
3056                             value: 43,
3057                             raw: '43',
3058                             range: [11, 13],
3059                             loc: {
3060                                 start: { line: 1, column: 11 },
3061                                 end: { line: 1, column: 13 }
3062                             }
3063                         },
3064                         kind: 'init',
3065                         method: false,
3066                         shorthand: false,
3067                         range: [6, 13],
3068                         loc: {
3069                             start: { line: 1, column: 6 },
3070                             end: { line: 1, column: 13 }
3071                         }
3072                     }],
3073                     range: [4, 15],
3074                     loc: {
3075                         start: { line: 1, column: 4 },
3076                         end: { line: 1, column: 15 }
3077                     }
3078                 },
3079                 range: [0, 15],
3080                 loc: {
3081                     start: { line: 1, column: 0 },
3082                     end: { line: 1, column: 15 }
3083                 }
3084             },
3085             range: [0, 15],
3086             loc: {
3087                 start: { line: 1, column: 0 },
3088                 end: { line: 1, column: 15 }
3089             }
3090         },
3091
3092         'x = { __proto__: 2 }': {
3093             type: 'ExpressionStatement',
3094             expression: {
3095                 type: 'AssignmentExpression',
3096                 operator: '=',
3097                 left: {
3098                     type: 'Identifier',
3099                     name: 'x',
3100                     range: [0, 1],
3101                     loc: {
3102                         start: { line: 1, column: 0 },
3103                         end: { line: 1, column: 1 }
3104                     }
3105                 },
3106                 right: {
3107                     type: 'ObjectExpression',
3108                     properties: [{
3109                         type: 'Property',
3110                         key: {
3111                             type: 'Identifier',
3112                             name: '__proto__',
3113                             range: [6, 15],
3114                             loc: {
3115                                 start: { line: 1, column: 6 },
3116                                 end: { line: 1, column: 15 }
3117                             }
3118                         },
3119                         value: {
3120                             type: 'Literal',
3121                             value: 2,
3122                             raw: '2',
3123                             range: [17, 18],
3124                             loc: {
3125                                 start: { line: 1, column: 17 },
3126                                 end: { line: 1, column: 18 }
3127                             }
3128                         },
3129                         kind: 'init',
3130                         method: false,
3131                         shorthand: false,
3132                         range: [6, 18],
3133                         loc: {
3134                             start: { line: 1, column: 6 },
3135                             end: { line: 1, column: 18 }
3136                         }
3137                     }],
3138                     range: [4, 20],
3139                     loc: {
3140                         start: { line: 1, column: 4 },
3141                         end: { line: 1, column: 20 }
3142                     }
3143                 },
3144                 range: [0, 20],
3145                 loc: {
3146                     start: { line: 1, column: 0 },
3147                     end: { line: 1, column: 20 }
3148                 }
3149             },
3150             range: [0, 20],
3151             loc: {
3152                 start: { line: 1, column: 0 },
3153                 end: { line: 1, column: 20 }
3154             }
3155         },
3156
3157         'x = {"__proto__": 2 }': {
3158             type: 'ExpressionStatement',
3159             expression: {
3160                 type: 'AssignmentExpression',
3161                 operator: '=',
3162                 left: {
3163                     type: 'Identifier',
3164                     name: 'x',
3165                     range: [0, 1],
3166                     loc: {
3167                         start: { line: 1, column: 0 },
3168                         end: { line: 1, column: 1 }
3169                     }
3170                 },
3171                 right: {
3172                     type: 'ObjectExpression',
3173                     properties: [{
3174                         type: 'Property',
3175                         key: {
3176                             type: 'Literal',
3177                             value: '__proto__',
3178                             raw: '"__proto__"',
3179                             range: [5, 16],
3180                             loc: {
3181                                 start: { line: 1, column: 5 },
3182                                 end: { line: 1, column: 16 }
3183                             }
3184                         },
3185                         value: {
3186                             type: 'Literal',
3187                             value: 2,
3188                             raw: '2',
3189                             range: [18, 19],
3190                             loc: {
3191                                 start: { line: 1, column: 18 },
3192                                 end: { line: 1, column: 19 }
3193                             }
3194                         },
3195                         kind: 'init',
3196                         method: false,
3197                         shorthand: false,
3198                         range: [5, 19],
3199                         loc: {
3200                             start: { line: 1, column: 5 },
3201                             end: { line: 1, column: 19 }
3202                         }
3203                     }],
3204                     range: [4, 21],
3205                     loc: {
3206                         start: { line: 1, column: 4 },
3207                         end: { line: 1, column: 21 }
3208                     }
3209                 },
3210                 range: [0, 21],
3211                 loc: {
3212                     start: { line: 1, column: 0 },
3213                     end: { line: 1, column: 21 }
3214                 }
3215             },
3216             range: [0, 21],
3217             loc: {
3218                 start: { line: 1, column: 0 },
3219                 end: { line: 1, column: 21 }
3220             }
3221         },
3222
3223         'x = { get width() { return m_width }, set width(width) { m_width = width; } }': {
3224             type: 'ExpressionStatement',
3225             expression: {
3226                 type: 'AssignmentExpression',
3227                 operator: '=',
3228                 left: {
3229                     type: 'Identifier',
3230                     name: 'x',
3231                     range: [0, 1],
3232                     loc: {
3233                         start: { line: 1, column: 0 },
3234                         end: { line: 1, column: 1 }
3235                     }
3236                 },
3237                 right: {
3238                     type: 'ObjectExpression',
3239                     properties: [{
3240                         type: 'Property',
3241                         key: {
3242                             type: 'Identifier',
3243                             name: 'width',
3244                             range: [10, 15],
3245                             loc: {
3246                                 start: { line: 1, column: 10 },
3247                                 end: { line: 1, column: 15 }
3248                             }
3249                         },
3250                         value: {
3251                             type: 'FunctionExpression',
3252                             id: null,
3253                             params: [],
3254                             defaults: [],
3255                             body: {
3256                                 type: 'BlockStatement',
3257                                 body: [{
3258                                     type: 'ReturnStatement',
3259                                     argument: {
3260                                         type: 'Identifier',
3261                                         name: 'm_width',
3262                                         range: [27, 34],
3263                                         loc: {
3264                                             start: { line: 1, column: 27 },
3265                                             end: { line: 1, column: 34 }
3266                                         }
3267                                     },
3268                                     range: [20, 35],
3269                                     loc: {
3270                                         start: { line: 1, column: 20 },
3271                                         end: { line: 1, column: 35 }
3272                                     }
3273                                 }],
3274                                 range: [18, 36],
3275                                 loc: {
3276                                     start: { line: 1, column: 18 },
3277                                     end: { line: 1, column: 36 }
3278                                 }
3279                             },
3280                             rest: null,
3281                             generator: false,
3282                             expression: false,
3283                             range: [18, 36],
3284                             loc: {
3285                                 start: { line: 1, column: 18 },
3286                                 end: { line: 1, column: 36 }
3287                             }
3288                         },
3289                         kind: 'get',
3290                         method: false,
3291                         shorthand: false,
3292                         range: [6, 36],
3293                         loc: {
3294                             start: { line: 1, column: 6 },
3295                             end: { line: 1, column: 36 }
3296                         }
3297                     }, {
3298                         type: 'Property',
3299                         key: {
3300                             type: 'Identifier',
3301                             name: 'width',
3302                             range: [42, 47],
3303                             loc: {
3304                                 start: { line: 1, column: 42 },
3305                                 end: { line: 1, column: 47 }
3306                             }
3307                         },
3308                         value: {
3309                             type: 'FunctionExpression',
3310                             id: null,
3311                             params: [{
3312                                 type: 'Identifier',
3313                                 name: 'width',
3314                                 range: [48, 53],
3315                                 loc: {
3316                                     start: { line: 1, column: 48 },
3317                                     end: { line: 1, column: 53 }
3318                                 }
3319                             }],
3320                             defaults: [],
3321                             body: {
3322                                 type: 'BlockStatement',
3323                                 body: [{
3324                                     type: 'ExpressionStatement',
3325                                     expression: {
3326                                         type: 'AssignmentExpression',
3327                                         operator: '=',
3328                                         left: {
3329                                             type: 'Identifier',
3330                                             name: 'm_width',
3331                                             range: [57, 64],
3332                                             loc: {
3333                                                 start: { line: 1, column: 57 },
3334                                                 end: { line: 1, column: 64 }
3335                                             }
3336                                         },
3337                                         right: {
3338                                             type: 'Identifier',
3339                                             name: 'width',
3340                                             range: [67, 72],
3341                                             loc: {
3342                                                 start: { line: 1, column: 67 },
3343                                                 end: { line: 1, column: 72 }
3344                                             }
3345                                         },
3346                                         range: [57, 72],
3347                                         loc: {
3348                                             start: { line: 1, column: 57 },
3349                                             end: { line: 1, column: 72 }
3350                                         }
3351                                     },
3352                                     range: [57, 73],
3353                                     loc: {
3354                                         start: { line: 1, column: 57 },
3355                                         end: { line: 1, column: 73 }
3356                                     }
3357                                 }],
3358                                 range: [55, 75],
3359                                 loc: {
3360                                     start: { line: 1, column: 55 },
3361                                     end: { line: 1, column: 75 }
3362                                 }
3363                             },
3364                             rest: null,
3365                             generator: false,
3366                             expression: false,
3367                             range: [55, 75],
3368                             loc: {
3369                                 start: { line: 1, column: 55 },
3370                                 end: { line: 1, column: 75 }
3371                             }
3372                         },
3373                         kind: 'set',
3374                         method: false,
3375                         shorthand: false,
3376                         range: [38, 75],
3377                         loc: {
3378                             start: { line: 1, column: 38 },
3379                             end: { line: 1, column: 75 }
3380                         }
3381                     }],
3382                     range: [4, 77],
3383                     loc: {
3384                         start: { line: 1, column: 4 },
3385                         end: { line: 1, column: 77 }
3386                     }
3387                 },
3388                 range: [0, 77],
3389                 loc: {
3390                     start: { line: 1, column: 0 },
3391                     end: { line: 1, column: 77 }
3392                 }
3393             },
3394             range: [0, 77],
3395             loc: {
3396                 start: { line: 1, column: 0 },
3397                 end: { line: 1, column: 77 }
3398             }
3399         }
3400
3401
3402     },
3403
3404     'Comments': {
3405
3406         '/* block comment */ 42': {
3407             type: 'ExpressionStatement',
3408             expression: {
3409                 type: 'Literal',
3410                 value: 42,
3411                 raw: '42',
3412                 range: [20, 22],
3413                 loc: {
3414                     start: { line: 1, column: 20 },
3415                     end: { line: 1, column: 22 }
3416                 }
3417             },
3418             range: [20, 22],
3419             loc: {
3420                 start: { line: 1, column: 20 },
3421                 end: { line: 1, column: 22 }
3422             }
3423         },
3424
3425         '42 /* block comment 1 */ /* block comment 2 */': {
3426             "type": "Program",
3427             "body": [
3428                 {
3429                     "type": "ExpressionStatement",
3430                     "expression": {
3431                         "type": "Literal",
3432                         "value": 42,
3433                         "raw": "42",
3434                         "range": [
3435                             0,
3436                             2
3437                         ],
3438                         "trailingComments": [
3439                             {
3440                                 "type": "Block",
3441                                 "value": " block comment 1 ",
3442                                 "range": [
3443                                     3,
3444                                     24
3445                                 ]
3446                             },
3447                             {
3448                                 "type": "Block",
3449                                 "value": " block comment 2 ",
3450                                 "range": [
3451                                     25,
3452                                     46
3453                                 ]
3454                             }
3455                         ]
3456                     },
3457                     "range": [
3458                         0,
3459                         46
3460                     ]
3461                 }
3462             ],
3463             "range": [
3464                 0,
3465                 46
3466             ],
3467             "comments": [
3468                 {
3469                     "type": "Block",
3470                     "value": " block comment 1 ",
3471                     "range": [
3472                         3,
3473                         24
3474                     ]
3475                 },
3476                 {
3477                     "type": "Block",
3478                     "value": " block comment 2 ",
3479                     "range": [
3480                         25,
3481                         46
3482                     ]
3483                 }
3484             ],
3485             "tokens": [
3486                 {
3487                     "type": "Numeric",
3488                     "range": [
3489                         0,
3490                         2
3491                     ],
3492                     "value": "42"
3493                 }
3494             ]
3495         },
3496
3497         'var p1;/* block comment 1 */ /* block comment 2 */': {
3498             "range": [
3499                 0,
3500                 7
3501             ],
3502             "loc": {
3503                 "start": {
3504                     "line": 1,
3505                     "column": 0
3506                 },
3507                 "end": {
3508                     "line": 1,
3509                     "column": 7
3510                 }
3511             },
3512             "type": "Program",
3513             "body": [
3514                 {
3515                     "range": [
3516                         0,
3517                         7
3518                     ],
3519                     "loc": {
3520                         "start": {
3521                             "line": 1,
3522                             "column": 0
3523                         },
3524                         "end": {
3525                             "line": 1,
3526                             "column": 7
3527                         }
3528                     },
3529                     "type": "VariableDeclaration",
3530                     "declarations": [
3531                         {
3532                             "range": [
3533                                 4,
3534                                 6
3535                             ],
3536                             "loc": {
3537                                 "start": {
3538                                     "line": 1,
3539                                     "column": 4
3540                                 },
3541                                 "end": {
3542                                     "line": 1,
3543                                     "column": 6
3544                                 }
3545                             },
3546                             "type": "VariableDeclarator",
3547                             "id": {
3548                                 "range": [
3549                                     4,
3550                                     6
3551                                 ],
3552                                 "loc": {
3553                                     "start": {
3554                                         "line": 1,
3555                                         "column": 4
3556                                     },
3557                                     "end": {
3558                                         "line": 1,
3559                                         "column": 6
3560                                     }
3561                                 },
3562                                 "type": "Identifier",
3563                                 "name": "p1"
3564                             },
3565                             "init": null
3566                         }
3567                     ],
3568                     "kind": "var",
3569                     "trailingComments": [
3570                         {
3571                             "range": [
3572                                 7,
3573                                 28
3574                             ],
3575                             "loc": {
3576                                 "start": {
3577                                     "line": 1,
3578                                     "column": 7
3579                                 },
3580                                 "end": {
3581                                     "line": 1,
3582                                     "column": 28
3583                                 }
3584                             },
3585                             "type": "Block",
3586                             "value": " block comment 1 "
3587                         },
3588                         {
3589                             "range": [
3590                                 29,
3591                                 50
3592                             ],
3593                             "loc": {
3594                                 "start": {
3595                                     "line": 1,
3596                                     "column": 29
3597                                 },
3598                                 "end": {
3599                                     "line": 1,
3600                                     "column": 50
3601                                 }
3602                             },
3603                             "type": "Block",
3604                             "value": " block comment 2 "
3605                         }
3606                     ]
3607                 }
3608             ],
3609             "comments": [
3610                 {
3611                     "range": [
3612                         7,
3613                         28
3614                     ],
3615                     "loc": {
3616                         "start": {
3617                             "line": 1,
3618                             "column": 7
3619                         },
3620                         "end": {
3621                             "line": 1,
3622                             "column": 28
3623                         }
3624                     },
3625                     "type": "Block",
3626                     "value": " block comment 1 "
3627                 },
3628                 {
3629                     "range": [
3630                         29,
3631                         50
3632                     ],
3633                     "loc": {
3634                         "start": {
3635                             "line": 1,
3636                             "column": 29
3637                         },
3638                         "end": {
3639                             "line": 1,
3640                             "column": 50
3641                         }
3642                     },
3643                     "type": "Block",
3644                     "value": " block comment 2 "
3645                 }
3646             ],
3647             "tokens": [
3648                 {
3649                     "range": [
3650                         0,
3651                         3
3652                     ],
3653                     "loc": {
3654                         "start": {
3655                             "line": 1,
3656                             "column": 0
3657                         },
3658                         "end": {
3659                             "line": 1,
3660                             "column": 3
3661                         }
3662                     },
3663                     "type": "Keyword",
3664                     "value": "var"
3665                 },
3666                 {
3667                     "range": [
3668                         4,
3669                         6
3670                     ],
3671                     "loc": {
3672                         "start": {
3673                             "line": 1,
3674                             "column": 4
3675                         },
3676                         "end": {
3677                             "line": 1,
3678                             "column": 6
3679                         }
3680                     },
3681                     "type": "Identifier",
3682                     "value": "p1"
3683                 },
3684                 {
3685                     "range": [
3686                         6,
3687                         7
3688                     ],
3689                     "loc": {
3690                         "start": {
3691                             "line": 1,
3692                             "column": 6
3693                         },
3694                         "end": {
3695                             "line": 1,
3696                             "column": 7
3697                         }
3698                     },
3699                     "type": "Punctuator",
3700                     "value": ";"
3701                 }
3702             ]
3703         },
3704
3705         '/*42*/': {
3706             "range": [
3707                 6,
3708                 6
3709             ],
3710             "loc": {
3711                 "start": {
3712                     "line": 1,
3713                     "column": 6
3714                 },
3715                 "end": {
3716                     "line": 1,
3717                     "column": 6
3718                 }
3719             },
3720             "type": "Program",
3721             "body": [],
3722             "leadingComments": [
3723                 {
3724                     "range": [
3725                         0,
3726                         6
3727                     ],
3728                     "loc": {
3729                         "start": {
3730                             "line": 1,
3731                             "column": 0
3732                         },
3733                         "end": {
3734                             "line": 1,
3735                             "column": 6
3736                         }
3737                     },
3738                     "type": "Block",
3739                     "value": "42"
3740                 }
3741             ],
3742             "comments": [
3743                 {
3744                     "range": [
3745                         0,
3746                         6
3747                     ],
3748                     "loc": {
3749                         "start": {
3750                             "line": 1,
3751                             "column": 0
3752                         },
3753                         "end": {
3754                             "line": 1,
3755                             "column": 6
3756                         }
3757                     },
3758                     "type": "Block",
3759                     "value": "42"
3760                 }
3761             ],
3762             "tokens": []
3763         },
3764
3765         '(a + /* assignmenr */b ) * c': {
3766             "type": "Program",
3767             "body": [
3768                 {
3769                     "type": "ExpressionStatement",
3770                     "expression": {
3771                         "type": "BinaryExpression",
3772                         "operator": "*",
3773                         "left": {
3774                             "type": "BinaryExpression",
3775                             "operator": "+",
3776                             "left": {
3777                                 "type": "Identifier",
3778                                 "name": "a",
3779                                 "range": [
3780                                     1,
3781                                     2
3782                                 ],
3783                                 "loc": {
3784                                     "start": {
3785                                         "line": 1,
3786                                         "column": 1
3787                                     },
3788                                     "end": {
3789                                         "line": 1,
3790                                         "column": 2
3791                                     }
3792                                 }
3793                             },
3794                             "right": {
3795                                 "type": "Identifier",
3796                                 "name": "b",
3797                                 "range": [
3798                                     21,
3799                                     22
3800                                 ],
3801                                 "loc": {
3802                                     "start": {
3803                                         "line": 1,
3804                                         "column": 21
3805                                     },
3806                                     "end": {
3807                                         "line": 1,
3808                                         "column": 22
3809                                     }
3810                                 },
3811                                 "leadingComments": [
3812                                     {
3813                                         "type": "Block",
3814                                         "value": " assignmenr ",
3815                                         "range": [
3816                                             5,
3817                                             21
3818                                         ],
3819                                         "loc": {
3820                                             "start": {
3821                                                 "line": 1,
3822                                                 "column": 5
3823                                             },
3824                                             "end": {
3825                                                 "line": 1,
3826                                                 "column": 21
3827                                             }
3828                                         }
3829                                     }
3830                                 ]
3831                             },
3832                             "range": [
3833                                 1,
3834                                 22
3835                             ],
3836                             "loc": {
3837                                 "start": {
3838                                     "line": 1,
3839                                     "column": 1
3840                                 },
3841                                 "end": {
3842                                     "line": 1,
3843                                     "column": 22
3844                                 }
3845                             }
3846                         },
3847                         "right": {
3848                             "type": "Identifier",
3849                             "name": "c",
3850                             "range": [
3851                                 27,
3852                                 28
3853                             ],
3854                             "loc": {
3855                                 "start": {
3856                                     "line": 1,
3857                                     "column": 27
3858                                 },
3859                                 "end": {
3860                                     "line": 1,
3861                                     "column": 28
3862                                 }
3863                             }
3864                         },
3865                         "range": [
3866                             0,
3867                             28
3868                         ],
3869                         "loc": {
3870                             "start": {
3871                                 "line": 1,
3872                                 "column": 0
3873                             },
3874                             "end": {
3875                                 "line": 1,
3876                                 "column": 28
3877                             }
3878                         }
3879                     },
3880                     "range": [
3881                         0,
3882                         28
3883                     ],
3884                     "loc": {
3885                         "start": {
3886                             "line": 1,
3887                             "column": 0
3888                         },
3889                         "end": {
3890                             "line": 1,
3891                             "column": 28
3892                         }
3893                     }
3894                 }
3895             ],
3896             "range": [
3897                 0,
3898                 28
3899             ],
3900             "loc": {
3901                 "start": {
3902                     "line": 1,
3903                     "column": 0
3904                 },
3905                 "end": {
3906                     "line": 1,
3907                     "column": 28
3908                 }
3909             },
3910             "comments": [
3911                 {
3912                     "type": "Block",
3913                     "value": " assignmenr ",
3914                     "range": [
3915                         5,
3916                         21
3917                     ],
3918                     "loc": {
3919                         "start": {
3920                             "line": 1,
3921                             "column": 5
3922                         },
3923                         "end": {
3924                             "line": 1,
3925                             "column": 21
3926                         }
3927                     }
3928                 }
3929             ]
3930         },
3931
3932         '/* assignmenr */\n a = b': {
3933             "type": "Program",
3934             "body": [
3935                 {
3936                     "type": "ExpressionStatement",
3937                     "expression": {
3938                         "type": "AssignmentExpression",
3939                         "operator": "=",
3940                         "left": {
3941                             "type": "Identifier",
3942                             "name": "a",
3943                             "range": [
3944                                 18,
3945                                 19
3946                             ],
3947                             "loc": {
3948                                 "start": {
3949                                     "line": 2,
3950                                     "column": 1
3951                                 },
3952                                 "end": {
3953                                     "line": 2,
3954                                     "column": 2
3955                                 }
3956                             }
3957                         },
3958                         "right": {
3959                             "type": "Identifier",
3960                             "name": "b",
3961                             "range": [
3962                                 22,
3963                                 23
3964                             ],
3965                             "loc": {
3966                                 "start": {
3967                                     "line": 2,
3968                                     "column": 5
3969                                 },
3970                                 "end": {
3971                                     "line": 2,
3972                                     "column": 6
3973                                 }
3974                             }
3975                         },
3976                         "range": [
3977                             18,
3978                             23
3979                         ],
3980                         "loc": {
3981                             "start": {
3982                                 "line": 2,
3983                                 "column": 1
3984                             },
3985                             "end": {
3986                                 "line": 2,
3987                                 "column": 6
3988                             }
3989                         }
3990                     },
3991                     "range": [
3992                         18,
3993                         23
3994                     ],
3995                     "loc": {
3996                         "start": {
3997                             "line": 2,
3998                             "column": 1
3999                         },
4000                         "end": {
4001                             "line": 2,
4002                             "column": 6
4003                         }
4004                     },
4005                     "leadingComments": [
4006                         {
4007                             "type": "Block",
4008                             "value": " assignmenr ",
4009                             "range": [
4010                                 0,
4011                                 16
4012                             ],
4013                             "loc": {
4014                                 "start": {
4015                                     "line": 1,
4016                                     "column": 0
4017                                 },
4018                                 "end": {
4019                                     "line": 1,
4020                                     "column": 16
4021                                 }
4022                             }
4023                         }
4024                     ]
4025                 }
4026             ],
4027             "range": [
4028                 18,
4029                 23
4030             ],
4031             "loc": {
4032                 "start": {
4033                     "line": 2,
4034                     "column": 1
4035                 },
4036                 "end": {
4037                     "line": 2,
4038                     "column": 6
4039                 }
4040             },
4041             "comments": [
4042                 {
4043                     "type": "Block",
4044                     "value": " assignmenr ",
4045                     "range": [
4046                         0,
4047                         16
4048                     ],
4049                     "loc": {
4050                         "start": {
4051                             "line": 1,
4052                             "column": 0
4053                         },
4054                         "end": {
4055                             "line": 1,
4056                             "column": 16
4057                         }
4058                     }
4059                 }
4060             ]
4061         },
4062
4063         '42 /*The*/ /*Answer*/': {
4064             type: 'Program',
4065             body: [{
4066                 type: 'ExpressionStatement',
4067                 expression: {
4068                     type: 'Literal',
4069                     value: 42,
4070                     raw: '42',
4071                     range: [0, 2],
4072                     loc: {
4073                         start: { line: 1, column: 0 },
4074                         end: { line: 1, column: 2 }
4075                     }
4076                 },
4077                 range: [0, 21],
4078                 loc: {
4079                     start: { line: 1, column: 0 },
4080                     end: { line: 1, column: 21 }
4081                 }
4082             }],
4083             range: [0, 21],
4084             loc: {
4085                 start: { line: 1, column: 0 },
4086                 end: { line: 1, column: 21 }
4087             },
4088             comments: [{
4089                 type: 'Block',
4090                 value: 'The',
4091                 range: [3, 10],
4092                 loc: {
4093                     start: { line: 1, column: 3 },
4094                     end: { line: 1, column: 10 }
4095                 }
4096             }, {
4097                 type: 'Block',
4098                 value: 'Answer',
4099                 range: [11, 21],
4100                 loc: {
4101                     start: { line: 1, column: 11 },
4102                     end: { line: 1, column: 21 }
4103                 }
4104             }]
4105         },
4106
4107         '42 /*the*/ /*answer*/': {
4108             type: 'Program',
4109             body: [{
4110                 type: 'ExpressionStatement',
4111                 expression: {
4112                     type: 'Literal',
4113                     value: 42,
4114                     raw: '42',
4115                     range: [0, 2]
4116                 },
4117                 range: [0, 21]
4118             }],
4119             range: [0, 21],
4120             comments: [{
4121                 type: 'Block',
4122                 value: 'the',
4123                 range: [3, 10]
4124             }, {
4125                 type: 'Block',
4126                 value: 'answer',
4127                 range: [11, 21]
4128             }]
4129         },
4130
4131         '42 /* the * answer */': {
4132             type: 'ExpressionStatement',
4133             expression: {
4134                 type: 'Literal',
4135                 value: 42,
4136                 raw: '42',
4137                 range: [0, 2],
4138                 loc: {
4139                     start: { line: 1, column: 0 },
4140                     end: { line: 1, column: 2 }
4141                 }
4142             },
4143             range: [0, 21],
4144             loc: {
4145                 start: { line: 1, column: 0 },
4146                 end: { line: 1, column: 21 }
4147             }
4148         },
4149
4150         '42 /* The * answer */': {
4151             type: 'Program',
4152             body: [{
4153                 type: 'ExpressionStatement',
4154                 expression: {
4155                     type: 'Literal',
4156                     value: 42,
4157                     raw: '42',
4158                     range: [0, 2],
4159                     loc: {
4160                         start: { line: 1, column: 0 },
4161                         end: { line: 1, column: 2 }
4162                     }
4163                 },
4164                 range: [0, 21],
4165                 loc: {
4166                     start: { line: 1, column: 0 },
4167                     end: { line: 1, column: 21 }
4168                 }
4169             }],
4170             range: [0, 21],
4171             loc: {
4172                 start: { line: 1, column: 0 },
4173                 end: { line: 1, column: 21 }
4174             },
4175             comments: [{
4176                 type: 'Block',
4177                 value: ' The * answer ',
4178                 range: [3, 21],
4179                 loc: {
4180                     start: { line: 1, column: 3 },
4181                     end: { line: 1, column: 21 }
4182                 }
4183             }]
4184         },
4185
4186         '/* multiline\ncomment\nshould\nbe\nignored */ 42': {
4187             type: 'ExpressionStatement',
4188             expression: {
4189                 type: 'Literal',
4190                 value: 42,
4191                 raw: '42',
4192                 range: [42, 44],
4193                 loc: {
4194                     start: { line: 5, column: 11 },
4195                     end: { line: 5, column: 13 }
4196                 }
4197             },
4198             range: [42, 44],
4199             loc: {
4200                 start: { line: 5, column: 11 },
4201                 end: { line: 5, column: 13 }
4202             }
4203         },
4204
4205         '/*a\r\nb*/ 42': {
4206             type: 'Program',
4207             body: [{
4208                 type: 'ExpressionStatement',
4209                 expression: {
4210                     type: 'Literal',
4211                     value: 42,
4212                     raw: '42',
4213                     range: [9, 11],
4214                     loc: {
4215                         start: { line: 2, column: 4 },
4216                         end: { line: 2, column: 6 }
4217                     }
4218                 },
4219                 range: [9, 11],
4220                 loc: {
4221                     start: { line: 2, column: 4 },
4222                     end: { line: 2, column: 6 }
4223                 },
4224                 leadingComments: [{
4225                     type: 'Block',
4226                     value: 'a\r\nb',
4227                     range: [0, 8],
4228                     loc: {
4229                         start: { line: 1, column: 0 },
4230                         end: { line: 2, column: 3 }
4231                     }
4232                 }]
4233             }],
4234             range: [9, 11],
4235             loc: {
4236                 start: { line: 2, column: 4 },
4237                 end: { line: 2, column: 6 }
4238             },
4239             comments: [{
4240                 type: 'Block',
4241                 value: 'a\r\nb',
4242                 range: [0, 8],
4243                 loc: {
4244                     start: { line: 1, column: 0 },
4245                     end: { line: 2, column: 3 }
4246                 }
4247             }]
4248         },
4249
4250         '/*a\rb*/ 42': {
4251             type: 'Program',
4252             body: [{
4253                 type: 'ExpressionStatement',
4254                 expression: {
4255                     type: 'Literal',
4256                     value: 42,
4257                     raw: '42',
4258                     range: [8, 10],
4259                     loc: {
4260                         start: { line: 2, column: 4 },
4261                         end: { line: 2, column: 6 }
4262                     }
4263                 },
4264                 range: [8, 10],
4265                 loc: {
4266                     start: { line: 2, column: 4 },
4267                     end: { line: 2, column: 6 }
4268                 }
4269             }],
4270             range: [8, 10],
4271             loc: {
4272                 start: { line: 2, column: 4 },
4273                 end: { line: 2, column: 6 }
4274             },
4275             comments: [{
4276                 type: 'Block',
4277                 value: 'a\rb',
4278                 range: [0, 7],
4279                 loc: {
4280                     start: { line: 1, column: 0 },
4281                     end: { line: 2, column: 3 }
4282                 }
4283             }]
4284         },
4285
4286         '/*a\nb*/ 42': {
4287             type: 'Program',
4288             body: [{
4289                 type: 'ExpressionStatement',
4290                 expression: {
4291                     type: 'Literal',
4292                     value: 42,
4293                     raw: '42',
4294                     range: [8, 10],
4295                     loc: {
4296                         start: { line: 2, column: 4 },
4297                         end: { line: 2, column: 6 }
4298                     }
4299                 },
4300                 range: [8, 10],
4301                 loc: {
4302                     start: { line: 2, column: 4 },
4303                     end: { line: 2, column: 6 }
4304                 },
4305                 leadingComments: [{
4306                     type: 'Block',
4307                     value: 'a\nb',
4308                     range: [0, 7],
4309                     loc: {
4310                         start: { line: 1, column: 0 },
4311                         end: { line: 2, column: 3 }
4312                     }
4313                 }]
4314             }],
4315             range: [8, 10],
4316             loc: {
4317                 start: { line: 2, column: 4 },
4318                 end: { line: 2, column: 6 }
4319             },
4320             comments: [{
4321                 type: 'Block',
4322                 value: 'a\nb',
4323                 range: [0, 7],
4324                 loc: {
4325                     start: { line: 1, column: 0 },
4326                     end: { line: 2, column: 3 }
4327                 }
4328             }]
4329         },
4330
4331         '/*a\nc*/ 42': {
4332             type: 'Program',
4333             body: [{
4334                 type: 'ExpressionStatement',
4335                 expression: {
4336                     type: 'Literal',
4337                     value: 42,
4338                     raw: '42',
4339                     range: [8, 10],
4340                     loc: {
4341                         start: { line: 2, column: 4 },
4342                         end: { line: 2, column: 6 }
4343                     }
4344                 },
4345                 range: [8, 10],
4346                 loc: {
4347                     start: { line: 2, column: 4 },
4348                     end: { line: 2, column: 6 }
4349                 },
4350                 leadingComments: [{
4351                     type: 'Block',
4352                     value: 'a\nc',
4353                     range: [0, 7],
4354                     loc: {
4355                         start: { line: 1, column: 0 },
4356                         end: { line: 2, column: 3 }
4357                     }
4358                 }]
4359             }],
4360             range: [8, 10],
4361             loc: {
4362                 start: { line: 2, column: 4 },
4363                 end: { line: 2, column: 6 }
4364             },
4365             comments: [{
4366                 type: 'Block',
4367                 value: 'a\nc',
4368                 range: [0, 7],
4369                 loc: {
4370                     start: { line: 1, column: 0 },
4371                     end: { line: 2, column: 3 }
4372                 }
4373             }]
4374         },
4375
4376         '// one\\n': {
4377             type: 'Program',
4378             body: [],
4379             range: [8, 8],
4380             loc: {
4381                 start: { line: 1, column: 8 },
4382                 end: { line: 1, column: 8 }
4383             },
4384             leadingComments: [{
4385                 type: 'Line',
4386                 value: ' one\\n',
4387                 range: [0, 8],
4388                 loc: {
4389                     start: { line: 1, column: 0 },
4390                     end: { line: 1, column: 8 }
4391                 }
4392             }],
4393             comments: [{
4394                 type: 'Line',
4395                 value: ' one\\n',
4396                 range: [0, 8],
4397                 loc: {
4398                     start: { line: 1, column: 0 },
4399                     end: { line: 1, column: 8 }
4400                 }
4401             }]
4402         },
4403
4404         '// line comment\n42': {
4405             type: 'ExpressionStatement',
4406             expression: {
4407                 type: 'Literal',
4408                 value: 42,
4409                 raw: '42',
4410                 range: [16, 18],
4411                 loc: {
4412                     start: { line: 2, column: 0 },
4413                     end: { line: 2, column: 2 }
4414                 }
4415             },
4416             range: [16, 18],
4417             loc: {
4418                 start: { line: 2, column: 0 },
4419                 end: { line: 2, column: 2 }
4420             }
4421         },
4422
4423         '42 // line comment': {
4424             type: 'Program',
4425             body: [{
4426                 type: 'ExpressionStatement',
4427                 expression: {
4428                     type: 'Literal',
4429                     value: 42,
4430                     raw: '42',
4431                     range: [0, 2],
4432                     loc: {
4433                         start: { line: 1, column: 0 },
4434                         end: { line: 1, column: 2 }
4435                     },
4436                     trailingComments: [{
4437                         type: 'Line',
4438                         value: ' line comment',
4439                         range: [3, 18],
4440                         loc: {
4441                             start: { line: 1, column: 3 },
4442                             end: { line: 1, column: 18 }
4443                         }
4444                     }]
4445                 },
4446                 range: [0, 18],
4447                 loc: {
4448                     start: { line: 1, column: 0 },
4449                     end: { line: 1, column: 18 }
4450                 }
4451             }],
4452             range: [0, 18],
4453             loc: {
4454                 start: { line: 1, column: 0 },
4455                 end: { line: 1, column: 18 }
4456             },
4457             comments: [{
4458                 type: 'Line',
4459                 value: ' line comment',
4460                 range: [3, 18],
4461                 loc: {
4462                     start: { line: 1, column: 3 },
4463                     end: { line: 1, column: 18 }
4464                 }
4465             }]
4466         },
4467
4468         '// Hello, world!\n42': {
4469             type: 'Program',
4470             body: [{
4471                 type: 'ExpressionStatement',
4472                 expression: {
4473                     type: 'Literal',
4474                     value: 42,
4475                     raw: '42',
4476                     range: [17, 19],
4477                     loc: {
4478                         start: { line: 2, column: 0 },
4479                         end: { line: 2, column: 2 }
4480                     }
4481                 },
4482                 range: [17, 19],
4483                 loc: {
4484                     start: { line: 2, column: 0 },
4485                     end: { line: 2, column: 2 }
4486                 },
4487                 leadingComments: [{
4488                     type: 'Line',
4489                     value: ' Hello, world!',
4490                     range: [0, 16],
4491                     loc: {
4492                         start: { line: 1, column: 0 },
4493                         end: { line: 1, column: 16 }
4494                     }
4495                 }]
4496             }],
4497             range: [17, 19],
4498             loc: {
4499                 start: { line: 2, column: 0 },
4500                 end: { line: 2, column: 2 }
4501             },
4502             comments: [{
4503                 type: 'Line',
4504                 value: ' Hello, world!',
4505                 range: [0, 16],
4506                 loc: {
4507                     start: { line: 1, column: 0 },
4508                     end: { line: 1, column: 16 }
4509                 }
4510             }]
4511         },
4512
4513         '// Hello, world!\n': {
4514             type: 'Program',
4515             body: [],
4516             range: [17, 17],
4517             loc: {
4518                 start: { line: 2, column: 0 },
4519                 end: { line: 2, column: 0 }
4520             },
4521             comments: [{
4522                 type: 'Line',
4523                 value: ' Hello, world!',
4524                 range: [0, 16],
4525                 loc: {
4526                     start: { line: 1, column: 0 },
4527                     end: { line: 1, column: 16 }
4528                 }
4529             }]
4530         },
4531
4532         '// Hallo, world!\n': {
4533             type: 'Program',
4534             body: [],
4535             loc: {
4536                 start: { line: 2, column: 0 },
4537                 end: { line: 2, column: 0 }
4538             },
4539             comments: [{
4540                 type: 'Line',
4541                 value: ' Hallo, world!',
4542                 loc: {
4543                     start: { line: 1, column: 0 },
4544                     end: { line: 1, column: 16 }
4545                 }
4546             }]
4547         },
4548
4549         '//\n42': {
4550             type: 'Program',
4551             body: [{
4552                 type: 'ExpressionStatement',
4553                 expression: {
4554                     type: 'Literal',
4555                     value: 42,
4556                     raw: '42',
4557                     range: [3, 5],
4558                     loc: {
4559                         start: { line: 2, column: 0 },
4560                         end: { line: 2, column: 2 }
4561                     }
4562                 },
4563                 range: [3, 5],
4564                 loc: {
4565                     start: { line: 2, column: 0 },
4566                     end: { line: 2, column: 2 }
4567                 },
4568                 leadingComments: [{
4569                     type: 'Line',
4570                     value: '',
4571                     range: [0, 2],
4572                     loc: {
4573                         start: { line: 1, column: 0 },
4574                         end: { line: 1, column: 2 }
4575                     }
4576                 }]
4577             }],
4578             range: [3, 5],
4579             loc: {
4580                 start: { line: 2, column: 0 },
4581                 end: { line: 2, column: 2 }
4582             },
4583             comments: [{
4584                 type: 'Line',
4585                 value: '',
4586                 range: [0, 2],
4587                 loc: {
4588                     start: { line: 1, column: 0 },
4589                     end: { line: 1, column: 2 }
4590                 }
4591             }]
4592         },
4593
4594         '//': {
4595             type: 'Program',
4596             body: [],
4597             range: [2, 2],
4598             loc: {
4599                 start: { line: 1, column: 2 },
4600                 end: { line: 1, column: 2 }
4601             },
4602             comments: [{
4603                 type: 'Line',
4604                 value: '',
4605                 range: [0, 2],
4606                 loc: {
4607                     start: { line: 1, column: 0 },
4608                     end: { line: 1, column: 2 }
4609                 }
4610             }]
4611         },
4612
4613         '// ': {
4614             type: 'Program',
4615             body: [],
4616             range: [3, 3],
4617             comments: [{
4618                 type: 'Line',
4619                 value: ' ',
4620                 range: [0, 3]
4621             }]
4622         },
4623
4624         '/**/42': {
4625             type: 'Program',
4626             body: [{
4627                 type: 'ExpressionStatement',
4628                 expression: {
4629                     type: 'Literal',
4630                     value: 42,
4631                     raw: '42',
4632                     range: [4, 6],
4633                     loc: {
4634                         start: { line: 1, column: 4 },
4635                         end: { line: 1, column: 6 }
4636                     }
4637                 },
4638                 range: [4, 6],
4639                 loc: {
4640                     start: { line: 1, column: 4 },
4641                     end: { line: 1, column: 6 }
4642                 },
4643                 leadingComments: [{
4644                     type: 'Block',
4645                     value: '',
4646                     range: [0, 4],
4647                     loc: {
4648                         start: { line: 1, column: 0 },
4649                         end: { line: 1, column: 4 }
4650                     }
4651                 }]
4652             }],
4653             range: [4, 6],
4654             loc: {
4655                 start: { line: 1, column: 4 },
4656                 end: { line: 1, column: 6 }
4657             },
4658             comments: [{
4659                 type: 'Block',
4660                 value: '',
4661                 range: [0, 4],
4662                 loc: {
4663                     start: { line: 1, column: 0 },
4664                     end: { line: 1, column: 4 }
4665                 }
4666             }]
4667         },
4668
4669         '42/**/': {
4670             type: 'Program',
4671             body: [{
4672                 type: 'ExpressionStatement',
4673                 expression: {
4674                     type: 'Literal',
4675                     value: 42,
4676                     raw: '42',
4677                     range: [0, 2],
4678                     loc: {
4679                         start: { line: 1, column: 0 },
4680                         end: { line: 1, column: 2 }
4681                     },
4682                     trailingComments: [{
4683                         type: 'Block',
4684                         value: '',
4685                         range: [2, 6],
4686                         loc: {
4687                             start: { line: 1, column: 2 },
4688                             end: { line: 1, column: 6 }
4689                         }
4690                     }]
4691                 },
4692                 range: [0, 6],
4693                 loc: {
4694                     start: { line: 1, column: 0 },
4695                     end: { line: 1, column: 6 }
4696                 }
4697             }],
4698             range: [0, 6],
4699             loc: {
4700                 start: { line: 1, column: 0 },
4701                 end: { line: 1, column: 6 }
4702             },
4703             comments: [{
4704                 type: 'Block',
4705                 value: '',
4706                 range: [2, 6],
4707                 loc: {
4708                     start: { line: 1, column: 2 },
4709                     end: { line: 1, column: 6 }
4710                 }
4711             }]
4712         },
4713
4714         '// Hello, world!\n\n//   Another hello\n42': {
4715             type: 'Program',
4716             body: [{
4717                 type: 'ExpressionStatement',
4718                 expression: {
4719                     type: 'Literal',
4720                     value: 42,
4721                     raw: '42',
4722                     range: [37, 39],
4723                     loc: {
4724                         start: { line: 4, column: 0 },
4725                         end: { line: 4, column: 2 }
4726                     }
4727                 },
4728                 range: [37, 39],
4729                 loc: {
4730                     start: { line: 4, column: 0 },
4731                     end: { line: 4, column: 2 }
4732                 },
4733                 leadingComments: [{
4734                     type: 'Line',
4735                     value: ' Hello, world!',
4736                     range: [0, 16],
4737                     loc: {
4738                         start: { line: 1, column: 0 },
4739                         end: { line: 1, column: 16 }
4740                     }
4741                 }, {
4742                     type: 'Line',
4743                     value: '   Another hello',
4744                     range: [18, 36],
4745                     loc: {
4746                         start: { line: 3, column: 0 },
4747                         end: { line: 3, column: 18 }
4748                     }
4749                 }]
4750             }],
4751             range: [37, 39],
4752             loc: {
4753                 start: { line: 4, column: 0 },
4754                 end: { line: 4, column: 2 }
4755             },
4756             comments: [{
4757                 type: 'Line',
4758                 value: ' Hello, world!',
4759                 range: [0, 16],
4760                 loc: {
4761                     start: { line: 1, column: 0 },
4762                     end: { line: 1, column: 16 }
4763                 }
4764             }, {
4765                 type: 'Line',
4766                 value: '   Another hello',
4767                 range: [18, 36],
4768                 loc: {
4769                     start: { line: 3, column: 0 },
4770                     end: { line: 3, column: 18 }
4771                 }
4772             }]
4773         },
4774
4775         'if (x) { doThat() // Some comment\n }': {
4776             type: 'Program',
4777             body: [{
4778                 type: 'IfStatement',
4779                 test: {
4780                     type: 'Identifier',
4781                     name: 'x',
4782                     range: [4, 5],
4783                     loc: {
4784                         start: { line: 1, column: 4 },
4785                         end: { line: 1, column: 5 }
4786                     }
4787                 },
4788                 consequent: {
4789                     type: 'BlockStatement',
4790                     body: [{
4791                         type: 'ExpressionStatement',
4792                         expression: {
4793                             type: 'CallExpression',
4794                             callee: {
4795                                 type: 'Identifier',
4796                                 name: 'doThat',
4797                                 range: [9, 15],
4798                                 loc: {
4799                                     start: { line: 1, column: 9 },
4800                                     end: { line: 1, column: 15 }
4801                                 }
4802                             },
4803                             'arguments': [],
4804                             range: [9, 17],
4805                             loc: {
4806                                 start: { line: 1, column: 9 },
4807                                 end: { line: 1, column: 17 }
4808                             }
4809                         },
4810                         range: [9, 17],
4811                         loc: {
4812                             start: { line: 1, column: 9 },
4813                             end: { line: 1, column: 17 }
4814                         },
4815                         trailingComments: [{
4816                             type: 'Line',
4817                             value: ' Some comment',
4818                             range: [18, 33],
4819                             loc: {
4820                                 start: { line: 1, column: 18 },
4821                                 end: { line: 1, column: 33 }
4822                             }
4823                         }]
4824                     }],
4825                     range: [7, 36],
4826                     loc: {
4827                         start: { line: 1, column: 7 },
4828                         end: { line: 2, column: 2 }
4829                     }
4830                 },
4831                 alternate: null,
4832                 range: [0, 36],
4833                 loc: {
4834                     start: { line: 1, column: 0 },
4835                     end: { line: 2, column: 2 }
4836                 }
4837             }],
4838             range: [0, 36],
4839             loc: {
4840                 start: { line: 1, column: 0 },
4841                 end: { line: 2, column: 2 }
4842             },
4843             comments: [{
4844                 type: 'Line',
4845                 value: ' Some comment',
4846                 range: [18, 33],
4847                 loc: {
4848                     start: { line: 1, column: 18 },
4849                     end: { line: 1, column: 33 }
4850                 }
4851             }]
4852         },
4853
4854         'if (x) { // Some comment\ndoThat(); }': {
4855             type: 'Program',
4856             body: [{
4857                 type: 'IfStatement',
4858                 test: {
4859                     type: 'Identifier',
4860                     name: 'x',
4861                     range: [4, 5],
4862                     loc: {
4863                         start: { line: 1, column: 4 },
4864                         end: { line: 1, column: 5 }
4865                     }
4866                 },
4867                 consequent: {
4868                     type: 'BlockStatement',
4869                     body: [{
4870                         type: 'ExpressionStatement',
4871                         expression: {
4872                             type: 'CallExpression',
4873                             callee: {
4874                                 type: 'Identifier',
4875                                 name: 'doThat',
4876                                 range: [25, 31],
4877                                 loc: {
4878                                     start: { line: 2, column: 0 },
4879                                     end: { line: 2, column: 6 }
4880                                 }
4881                             },
4882                             'arguments': [],
4883                             range: [25, 33],
4884                             loc: {
4885                                 start: { line: 2, column: 0 },
4886                                 end: { line: 2, column: 8 }
4887                             }
4888                         },
4889                         range: [25, 34],
4890                         loc: {
4891                             start: { line: 2, column: 0 },
4892                             end: { line: 2, column: 9 }
4893                         },
4894                         leadingComments: [{
4895                             type: 'Line',
4896                             value: ' Some comment',
4897                             range: [9, 24],
4898                             loc: {
4899                                 start: { line: 1, column: 9 },
4900                                 end: { line: 1, column: 24 }
4901                             }
4902                         }]
4903                     }],
4904                     range: [7, 36],
4905                     loc: {
4906                         start: { line: 1, column: 7 },
4907                         end: { line: 2, column: 11 }
4908                     }
4909                 },
4910                 alternate: null,
4911                 range: [0, 36],
4912                 loc: {
4913                     start: { line: 1, column: 0 },
4914                     end: { line: 2, column: 11 }
4915                 }
4916             }],
4917             range: [0, 36],
4918             loc: {
4919                 start: { line: 1, column: 0 },
4920                 end: { line: 2, column: 11 }
4921             },
4922             comments: [{
4923                 type: 'Line',
4924                 value: ' Some comment',
4925                 range: [9, 24],
4926                 loc: {
4927                     start: { line: 1, column: 9 },
4928                     end: { line: 1, column: 24 }
4929                 }
4930             }]
4931         },
4932
4933         'if (x) { /* Some comment */ doThat() }': {
4934             type: 'Program',
4935             body: [{
4936                 type: 'IfStatement',
4937                 test: {
4938                     type: 'Identifier',
4939                     name: 'x',
4940                     range: [4, 5],
4941                     loc: {
4942                         start: { line: 1, column: 4 },
4943                         end: { line: 1, column: 5 }
4944                     }
4945                 },
4946                 consequent: {
4947                     type: 'BlockStatement',
4948                     body: [{
4949                         type: 'ExpressionStatement',
4950                         expression: {
4951                             type: 'CallExpression',
4952                             callee: {
4953                                 type: 'Identifier',
4954                                 name: 'doThat',
4955                                 range: [28, 34],
4956                                 loc: {
4957                                     start: { line: 1, column: 28 },
4958                                     end: { line: 1, column: 34 }
4959                                 }
4960                             },
4961                             'arguments': [],
4962                             range: [28, 36],
4963                             loc: {
4964                                 start: { line: 1, column: 28 },
4965                                 end: { line: 1, column: 36 }
4966                             }
4967                         },
4968                         range: [28, 37],
4969                         loc: {
4970                             start: { line: 1, column: 28 },
4971                             end: { line: 1, column: 37 }
4972                         },
4973                         leadingComments: [{
4974                             type: 'Block',
4975                             value: ' Some comment ',
4976                             range: [9, 27],
4977                             loc: {
4978                                 start: { line: 1, column: 9 },
4979                                 end: { line: 1, column: 27 }
4980                             }
4981                         }]
4982                     }],
4983                     range: [7, 38],
4984                     loc: {
4985                         start: { line: 1, column: 7 },
4986                         end: { line: 1, column: 38 }
4987                     }
4988                 },
4989                 alternate: null,
4990                 range: [0, 38],
4991                 loc: {
4992                     start: { line: 1, column: 0 },
4993                     end: { line: 1, column: 38 }
4994                 }
4995             }],
4996             range: [0, 38],
4997             loc: {
4998                 start: { line: 1, column: 0 },
4999                 end: { line: 1, column: 38 }
5000             },
5001             comments: [{
5002                 type: 'Block',
5003                 value: ' Some comment ',
5004                 range: [9, 27],
5005                 loc: {
5006                     start: { line: 1, column: 9 },
5007                     end: { line: 1, column: 27 }
5008                 }
5009             }]
5010         },
5011
5012         'if (x) { doThat() /* Some comment */ }': {
5013             type: 'Program',
5014             body: [{
5015                 type: 'IfStatement',
5016                 test: {
5017                     type: 'Identifier',
5018                     name: 'x',
5019                     range: [4, 5],
5020                     loc: {
5021                         start: { line: 1, column: 4 },
5022                         end: { line: 1, column: 5 }
5023                     }
5024                 },
5025                 consequent: {
5026                     type: 'BlockStatement',
5027                     body: [{
5028                         type: 'ExpressionStatement',
5029                         expression: {
5030                             type: 'CallExpression',
5031                             callee: {
5032                                 type: 'Identifier',
5033                                 name: 'doThat',
5034                                 range: [9, 15],
5035                                 loc: {
5036                                     start: { line: 1, column: 9 },
5037                                     end: { line: 1, column: 15 }
5038                                 }
5039                             },
5040                             'arguments': [],
5041                             range: [9, 17],
5042                             loc: {
5043                                 start: { line: 1, column: 9 },
5044                                 end: { line: 1, column: 17 }
5045                             },
5046                             trailingComments: [{
5047                                 type: 'Block',
5048                                 value: ' Some comment ',
5049                                 range: [18, 36],
5050                                 loc: {
5051                                     start: { line: 1, column: 18 },
5052                                     end: { line: 1, column: 36 }
5053                                 }
5054                             }]
5055                         },
5056                         range: [9, 37],
5057                         loc: {
5058                             start: { line: 1, column: 9 },
5059                             end: { line: 1, column: 37 }
5060                         }
5061                     }],
5062                     range: [7, 38],
5063                     loc: {
5064                         start: { line: 1, column: 7 },
5065                         end: { line: 1, column: 38 }
5066                     }
5067                 },
5068                 alternate: null,
5069                 range: [0, 38],
5070                 loc: {
5071                     start: { line: 1, column: 0 },
5072                     end: { line: 1, column: 38 }
5073                 }
5074             }],
5075             range: [0, 38],
5076             loc: {
5077                 start: { line: 1, column: 0 },
5078                 end: { line: 1, column: 38 }
5079             },
5080             comments: [{
5081                 type: 'Block',
5082                 value: ' Some comment ',
5083                 range: [18, 36],
5084                 loc: {
5085                     start: { line: 1, column: 18 },
5086                     end: { line: 1, column: 36 }
5087                 }
5088             }]
5089         },
5090
5091         'switch (answer) { case 42: /* perfect */ bingo() }': {
5092             type: 'Program',
5093             body: [{
5094                 type: 'SwitchStatement',
5095                 discriminant: {
5096                     type: 'Identifier',
5097                     name: 'answer',
5098                     range: [8, 14],
5099                     loc: {
5100                         start: { line: 1, column: 8 },
5101                         end: { line: 1, column: 14 }
5102                     }
5103                 },
5104                 cases: [{
5105                     type: 'SwitchCase',
5106                     test: {
5107                         type: 'Literal',
5108                         value: 42,
5109                         raw: '42',
5110                         range: [23, 25],
5111                         loc: {
5112                             start: { line: 1, column: 23 },
5113                             end: { line: 1, column: 25 }
5114                         }
5115                     },
5116                     consequent: [{
5117                         type: 'ExpressionStatement',
5118                         expression: {
5119                             type: 'CallExpression',
5120                             callee: {
5121                                 type: 'Identifier',
5122                                 name: 'bingo',
5123                                 range: [41, 46],
5124                                 loc: {
5125                                     start: { line: 1, column: 41 },
5126                                     end: { line: 1, column: 46 }
5127                                 }
5128                             },
5129                             'arguments': [],
5130                             range: [41, 48],
5131                             loc: {
5132                                 start: { line: 1, column: 41 },
5133                                 end: { line: 1, column: 48 }
5134                             }
5135                         },
5136                         range: [41, 49],
5137                         loc: {
5138                             start: { line: 1, column: 41 },
5139                             end: { line: 1, column: 49 }
5140                         },
5141                         leadingComments: [{
5142                             type: 'Block',
5143                             value: ' perfect ',
5144                             range: [27, 40],
5145                             loc: {
5146                                 start: { line: 1, column: 27 },
5147                                 end: { line: 1, column: 40 }
5148                             }
5149                         }]
5150                     }],
5151                     range: [18, 49],
5152                     loc: {
5153                         start: { line: 1, column: 18 },
5154                         end: { line: 1, column: 49 }
5155                     }
5156                 }],
5157                 range: [0, 50],
5158                 loc: {
5159                     start: { line: 1, column: 0 },
5160                     end: { line: 1, column: 50 }
5161                 }
5162             }],
5163             range: [0, 50],
5164             loc: {
5165                 start: { line: 1, column: 0 },
5166                 end: { line: 1, column: 50 }
5167             },
5168             comments: [{
5169                 type: 'Block',
5170                 value: ' perfect ',
5171                 range: [27, 40],
5172                 loc: {
5173                     start: { line: 1, column: 27 },
5174                     end: { line: 1, column: 40 }
5175                 }
5176             }]
5177         },
5178
5179         'switch (answer) { case 42: bingo() /* perfect */ }': {
5180             type: 'Program',
5181             body: [{
5182                 type: 'SwitchStatement',
5183                 discriminant: {
5184                     type: 'Identifier',
5185                     name: 'answer',
5186                     range: [8, 14],
5187                     loc: {
5188                         start: { line: 1, column: 8 },
5189                         end: { line: 1, column: 14 }
5190                     }
5191                 },
5192                 cases: [{
5193                     type: 'SwitchCase',
5194                     test: {
5195                         type: 'Literal',
5196                         value: 42,
5197                         raw: '42',
5198                         range: [23, 25],
5199                         loc: {
5200                             start: { line: 1, column: 23 },
5201                             end: { line: 1, column: 25 }
5202                         }
5203                     },
5204                     consequent: [{
5205                         type: 'ExpressionStatement',
5206                         expression: {
5207                             type: 'CallExpression',
5208                             callee: {
5209                                 type: 'Identifier',
5210                                 name: 'bingo',
5211                                 range: [27, 32],
5212                                 loc: {
5213                                     start: { line: 1, column: 27 },
5214                                     end: { line: 1, column: 32 }
5215                                 }
5216                             },
5217                             'arguments': [],
5218                             range: [27, 34],
5219                             loc: {
5220                                 start: { line: 1, column: 27 },
5221                                 end: { line: 1, column: 34 }
5222                             },
5223                             trailingComments: [{
5224                                 type: 'Block',
5225                                 value: ' perfect ',
5226                                 range: [35, 48],
5227                                 loc: {
5228                                     start: { line: 1, column: 35 },
5229                                     end: { line: 1, column: 48 }
5230                                 }
5231                             }]
5232                         },
5233                         range: [27, 49],
5234                         loc: {
5235                             start: { line: 1, column: 27 },
5236                             end: { line: 1, column: 49 }
5237                         }
5238                     }],
5239                     range: [18, 49],
5240                     loc: {
5241                         start: { line: 1, column: 18 },
5242                         end: { line: 1, column: 49 }
5243                     }
5244                 }],
5245                 range: [0, 50],
5246                 loc: {
5247                     start: { line: 1, column: 0 },
5248                     end: { line: 1, column: 50 }
5249                 }
5250             }],
5251             range: [0, 50],
5252             loc: {
5253                 start: { line: 1, column: 0 },
5254                 end: { line: 1, column: 50 }
5255             },
5256             comments: [{
5257                 type: 'Block',
5258                 value: ' perfect ',
5259                 range: [35, 48],
5260                 loc: {
5261                     start: { line: 1, column: 35 },
5262                     end: { line: 1, column: 48 }
5263                 }
5264             }]
5265         },
5266
5267         '/* header */ (function(){ var version = 1; }).call(this)': {
5268             type: 'Program',
5269             body: [{
5270                 type: 'ExpressionStatement',
5271                 expression: {
5272                     type: 'CallExpression',
5273                     callee: {
5274                         type: 'MemberExpression',
5275                         computed: false,
5276                         object: {
5277                             type: 'FunctionExpression',
5278                             id: null,
5279                             params: [],
5280                             defaults: [],
5281                             body: {
5282                                 type: 'BlockStatement',
5283                                 body: [{
5284                                     type: 'VariableDeclaration',
5285                                     declarations: [{
5286                                         type: 'VariableDeclarator',
5287                                         id: {
5288                                             type: 'Identifier',
5289                                             name: 'version',
5290                                             range: [30, 37],
5291                                             loc: {
5292                                                 start: { line: 1, column: 30 },
5293                                                 end: { line: 1, column: 37 }
5294                                             }
5295                                         },
5296                                         init: {
5297                                             type: 'Literal',
5298                                             value: 1,
5299                                             raw: '1',
5300                                             range: [40, 41],
5301                                             loc: {
5302                                                 start: { line: 1, column: 40 },
5303                                                 end: { line: 1, column: 41 }
5304                                             }
5305                                         },
5306                                         range: [30, 41],
5307                                         loc: {
5308                                             start: { line: 1, column: 30 },
5309                                             end: { line: 1, column: 41 }
5310                                         }
5311                                     }],
5312                                     kind: 'var',
5313                                     range: [26, 42],
5314                                     loc: {
5315                                         start: { line: 1, column: 26 },
5316                                         end: { line: 1, column: 42 }
5317                                     }
5318                                 }],
5319                                 range: [24, 44],
5320                                 loc: {
5321                                     start: { line: 1, column: 24 },
5322                                     end: { line: 1, column: 44 }
5323                                 }
5324                             },
5325                             rest: null,
5326                             generator: false,
5327                             expression: false,
5328                             range: [14, 44],
5329                             loc: {
5330                                 start: { line: 1, column: 14 },
5331                                 end: { line: 1, column: 44 }
5332                             }
5333                         },
5334                         property: {
5335                             type: 'Identifier',
5336                             name: 'call',
5337                             range: [46, 50],
5338                             loc: {
5339                                 start: { line: 1, column: 46 },
5340                                 end: { line: 1, column: 50 }
5341                             }
5342                         },
5343                         range: [13, 50],
5344                         loc: {
5345                             start: { line: 1, column: 13 },
5346                             end: { line: 1, column: 50 }
5347                         }
5348                     },
5349                     'arguments': [{
5350                         type: 'ThisExpression',
5351                         range: [51, 55],
5352                         loc: {
5353                             start: { line: 1, column: 51 },
5354                             end: { line: 1, column: 55 }
5355                         }
5356                     }],
5357                     range: [13, 56],
5358                     loc: {
5359                         start: { line: 1, column: 13 },
5360                         end: { line: 1, column: 56 }
5361                     }
5362                 },
5363                 range: [13, 56],
5364                 loc: {
5365                     start: { line: 1, column: 13 },
5366                     end: { line: 1, column: 56 }
5367                 },
5368                 leadingComments: [{
5369                     type: 'Block',
5370                     value: ' header ',
5371                     range: [0, 12],
5372                     loc: {
5373                         start: { line: 1, column: 0 },
5374                         end: { line: 1, column: 12 }
5375                     }
5376                 }]
5377             }],
5378             range: [13, 56],
5379             loc: {
5380                 start: { line: 1, column: 13 },
5381                 end: { line: 1, column: 56 }
5382             },
5383             comments: [{
5384                 type: 'Block',
5385                 value: ' header ',
5386                 range: [0, 12],
5387                 loc: {
5388                     start: { line: 1, column: 0 },
5389                     end: { line: 1, column: 12 }
5390                 }
5391             }]
5392         },
5393
5394         '(function(){ var version = 1; /* sync */ }).call(this)': {
5395             type: 'Program',
5396             body: [{
5397                 type: 'ExpressionStatement',
5398                 expression: {
5399                     type: 'CallExpression',
5400                     callee: {
5401                         type: 'MemberExpression',
5402                         computed: false,
5403                         object: {
5404                             type: 'FunctionExpression',
5405                             id: null,
5406                             params: [],
5407                             defaults: [],
5408                             body: {
5409                                 type: 'BlockStatement',
5410                                 body: [{
5411                                     type: 'VariableDeclaration',
5412                                     declarations: [{
5413                                         type: 'VariableDeclarator',
5414                                         id: {
5415                                             type: 'Identifier',
5416                                             name: 'version',
5417                                             range: [17, 24],
5418                                             loc: {
5419                                                 start: { line: 1, column: 17 },
5420                                                 end: { line: 1, column: 24 }
5421                                             }
5422                                         },
5423                                         init: {
5424                                             type: 'Literal',
5425                                             value: 1,
5426                                             raw: '1',
5427                                             range: [27, 28],
5428                                             loc: {
5429                                                 start: { line: 1, column: 27 },
5430                                                 end: { line: 1, column: 28 }
5431                                             }
5432                                         },
5433                                         range: [17, 28],
5434                                         loc: {
5435                                             start: { line: 1, column: 17 },
5436                                             end: { line: 1, column: 28 }
5437                                         }
5438                                     }],
5439                                     kind: 'var',
5440                                     range: [13, 29],
5441                                     loc: {
5442                                         start: { line: 1, column: 13 },
5443                                         end: { line: 1, column: 29 }
5444                                     },
5445                                     trailingComments: [{
5446                                         type: 'Block',
5447                                         value: ' sync ',
5448                                         range: [30, 40],
5449                                         loc: {
5450                                             start: { line: 1, column: 30 },
5451                                             end: { line: 1, column: 40 }
5452                                         }
5453                                     }]
5454                                 }],
5455                                 range: [11, 42],
5456                                 loc: {
5457                                     start: { line: 1, column: 11 },
5458                                     end: { line: 1, column: 42 }
5459                                 }
5460                             },
5461                             rest: null,
5462                             generator: false,
5463                             expression: false,
5464                             range: [1, 42],
5465                             loc: {
5466                                 start: { line: 1, column: 1 },
5467                                 end: { line: 1, column: 42 }
5468                             }
5469                         },
5470                         property: {
5471                             type: 'Identifier',
5472                             name: 'call',
5473                             range: [44, 48],
5474                             loc: {
5475                                 start: { line: 1, column: 44 },
5476                                 end: { line: 1, column: 48 }
5477                             },
5478                             leadingComments: [{
5479                                 type: 'Block',
5480                                 value: ' sync ',
5481                                 range: [30, 40],
5482                                 loc: {
5483                                     start: { line: 1, column: 30 },
5484                                     end: { line: 1, column: 40 }
5485                                 }
5486                             }]
5487                         },
5488                         range: [0, 48],
5489                         loc: {
5490                             start: { line: 1, column: 0 },
5491                             end: { line: 1, column: 48 }
5492                         }
5493                     },
5494                     'arguments': [{
5495                         type: 'ThisExpression',
5496                         range: [49, 53],
5497                         loc: {
5498                             start: { line: 1, column: 49 },
5499                             end: { line: 1, column: 53 }
5500                         }
5501                     }],
5502                     range: [0, 54],
5503                     loc: {
5504                         start: { line: 1, column: 0 },
5505                         end: { line: 1, column: 54 }
5506                     }
5507                 },
5508                 range: [0, 54],
5509                 loc: {
5510                     start: { line: 1, column: 0 },
5511                     end: { line: 1, column: 54 }
5512                 }
5513             }],
5514             range: [0, 54],
5515             loc: {
5516                 start: { line: 1, column: 0 },
5517                 end: { line: 1, column: 54 }
5518             },
5519             comments: [{
5520                 type: 'Block',
5521                 value: ' sync ',
5522                 range: [30, 40],
5523                 loc: {
5524                     start: { line: 1, column: 30 },
5525                     end: { line: 1, column: 40 }
5526                 }
5527             }]
5528         },
5529
5530         'function f() { /* infinite */ while (true) { } /* bar */ var each; }': {
5531             type: 'Program',
5532             body: [{
5533                 type: 'FunctionDeclaration',
5534                 id: {
5535                     type: 'Identifier',
5536                     name: 'f',
5537                     range: [9, 10],
5538                     loc: {
5539                         start: { line: 1, column: 9 },
5540                         end: { line: 1, column: 10 }
5541                     }
5542                 },
5543                 params: [],
5544                 defaults: [],
5545                 body: {
5546                     type: 'BlockStatement',
5547                     body: [{
5548                         type: 'WhileStatement',
5549                         test: {
5550                             type: 'Literal',
5551                             value: true,
5552                             raw: 'true',
5553                             range: [37, 41],
5554                             loc: {
5555                                 start: { line: 1, column: 37 },
5556                                 end: { line: 1, column: 41 }
5557                             }
5558                         },
5559                         body: {
5560                             type: 'BlockStatement',
5561                             body: [],
5562                             range: [43, 46],
5563                             loc: {
5564                                 start: { line: 1, column: 43 },
5565                                 end: { line: 1, column: 46 }
5566                             }
5567                         },
5568                         range: [30, 46],
5569                         loc: {
5570                             start: { line: 1, column: 30 },
5571                             end: { line: 1, column: 46 }
5572                         },
5573                         leadingComments: [{
5574                             type: 'Block',
5575                             value: ' infinite ',
5576                             range: [15, 29],
5577                             loc: {
5578                                 start: { line: 1, column: 15 },
5579                                 end: { line: 1, column: 29 }
5580                             }
5581                         }],
5582                         trailingComments: [{
5583                             type: 'Block',
5584                             value: ' bar ',
5585                             range: [47, 56],
5586                             loc: {
5587                                 start: { line: 1, column: 47 },
5588                                 end: { line: 1, column: 56 }
5589                             }
5590                         }]
5591                     }, {
5592                         type: 'VariableDeclaration',
5593                         declarations: [{
5594                             type: 'VariableDeclarator',
5595                             id: {
5596                                 type: 'Identifier',
5597                                 name: 'each',
5598                                 range: [61, 65],
5599                                 loc: {
5600                                     start: { line: 1, column: 61 },
5601                                     end: { line: 1, column: 65 }
5602                                 }
5603                             },
5604                             init: null,
5605                             range: [61, 65],
5606                             loc: {
5607                                 start: { line: 1, column: 61 },
5608                                 end: { line: 1, column: 65 }
5609                             }
5610                         }],
5611                         kind: 'var',
5612                         range: [57, 66],
5613                         loc: {
5614                             start: { line: 1, column: 57 },
5615                             end: { line: 1, column: 66 }
5616                         },
5617                         leadingComments: [{
5618                             type: 'Block',
5619                             value: ' bar ',
5620                             range: [47, 56],
5621                             loc: {
5622                                 start: { line: 1, column: 47 },
5623                                 end: { line: 1, column: 56 }
5624                             }
5625                         }]
5626                     }],
5627                     range: [13, 68],
5628                     loc: {
5629                         start: { line: 1, column: 13 },
5630                         end: { line: 1, column: 68 }
5631                     }
5632                 },
5633                 rest: null,
5634                 generator: false,
5635                 expression: false,
5636                 range: [0, 68],
5637                 loc: {
5638                     start: { line: 1, column: 0 },
5639                     end: { line: 1, column: 68 }
5640                 }
5641             }],
5642             range: [0, 68],
5643             loc: {
5644                 start: { line: 1, column: 0 },
5645                 end: { line: 1, column: 68 }
5646             },
5647             comments: [{
5648                 type: 'Block',
5649                 value: ' infinite ',
5650                 range: [15, 29],
5651                 loc: {
5652                     start: { line: 1, column: 15 },
5653                     end: { line: 1, column: 29 }
5654                 }
5655             }, {
5656                 type: 'Block',
5657                 value: ' bar ',
5658                 range: [47, 56],
5659                 loc: {
5660                     start: { line: 1, column: 47 },
5661                     end: { line: 1, column: 56 }
5662                 }
5663             }]
5664         },
5665
5666         '<!-- foo': {
5667             type: 'Program',
5668             body: [],
5669             comments: [{
5670                 type: 'Line',
5671                 value: ' foo'
5672             }]
5673         },
5674
5675         'var x = 1<!--foo': {
5676             type: 'Program',
5677             body: [{
5678                 type: 'VariableDeclaration',
5679                 declarations: [{
5680                     type: 'VariableDeclarator',
5681                     id: {
5682                         type: 'Identifier',
5683                         name: 'x'
5684                     },
5685                     init: {
5686                         type: 'Literal',
5687                         value: 1,
5688                         raw: '1'
5689                     }
5690                 }],
5691                 kind: 'var'
5692             }],
5693             comments: [{
5694                 type: 'Line',
5695                 value: 'foo'
5696             }]
5697         },
5698
5699         '--> comment': {
5700             type: 'Program',
5701             body: [],
5702             range: [11, 11],
5703             loc: {
5704                 start: { line: 1, column: 11 },
5705                 end: { line: 1, column: 11 }
5706             },
5707             comments: [{
5708                 type: 'Line',
5709                 value: ' comment',
5710                 range: [0, 11],
5711                 loc: {
5712                     start: { line: 1, column: 0 },
5713                     end: { line: 1, column: 11 }
5714                 }
5715             }]
5716         },
5717
5718         '<!-- comment': {
5719             type: 'Program',
5720             body: [],
5721             range: [12, 12],
5722             loc: {
5723                 start: { line: 1, column: 12 },
5724                 end: { line: 1, column: 12 }
5725             },
5726             comments: [{
5727                 type: 'Line',
5728                 value: ' comment',
5729                 range: [0, 12],
5730                 loc: {
5731                     start: { line: 1, column: 0 },
5732                     end: { line: 1, column: 12 }
5733                 }
5734             }]
5735         },
5736
5737         ' \t --> comment': {
5738             type: 'Program',
5739             body: [],
5740             range: [14, 14],
5741             loc: {
5742                 start: { line: 1, column: 14 },
5743                 end: { line: 1, column: 14 }
5744             },
5745             comments: [{
5746                 type: 'Line',
5747                 value: ' comment',
5748                 range: [3, 14],
5749                 loc: {
5750                     start: { line: 1, column: 3 },
5751                     end: { line: 1, column: 14 }
5752                 }
5753             }]
5754         },
5755
5756         ' \t /* block comment */  --> comment': {
5757             type: 'Program',
5758             body: [],
5759             range: [35, 35],
5760             loc: {
5761                 start: { line: 1, column: 35 },
5762                 end: { line: 1, column: 35 }
5763             },
5764             comments: [{
5765                 type: 'Block',
5766                 value: ' block comment ',
5767                 range: [3, 22],
5768                 loc: {
5769                     start: { line: 1, column: 3 },
5770                     end: { line: 1, column: 22 }
5771                 }
5772             }, {
5773                 type: 'Line',
5774                 value: ' comment',
5775                 range: [24, 35],
5776                 loc: {
5777                     start: { line: 1, column: 24 },
5778                     end: { line: 1, column: 35 }
5779                 }
5780             }]
5781         },
5782
5783         '/* block comment */--> comment': {
5784             type: 'Program',
5785             body: [],
5786             range: [30, 30],
5787             loc: {
5788                 start: { line: 1, column: 30 },
5789                 end: { line: 1, column: 30 }
5790             },
5791             comments: [{
5792                 type: 'Block',
5793                 value: ' block comment ',
5794                 range: [0, 19],
5795                 loc: {
5796                     start: { line: 1, column: 0 },
5797                     end: { line: 1, column: 19 }
5798                 }
5799             }, {
5800                 type: 'Line',
5801                 value: ' comment',
5802                 range: [19, 30],
5803                 loc: {
5804                     start: { line: 1, column: 19 },
5805                     end: { line: 1, column: 30 }
5806                 }
5807             }]
5808         },
5809
5810         '/* not comment*/; i-->0': {
5811             type: 'Program',
5812             body: [{
5813                 type: 'EmptyStatement',
5814                 range: [16, 17],
5815                 loc: {
5816                     start: { line: 1, column: 16 },
5817                     end: { line: 1, column: 17 }
5818                 }
5819             }, {
5820                 type: 'ExpressionStatement',
5821                 expression: {
5822                     type: 'BinaryExpression',
5823                     operator: '>',
5824                     left: {
5825                         type: 'UpdateExpression',
5826                         operator: '--',
5827                         argument: {
5828                             type: 'Identifier',
5829                             name: 'i',
5830                             range: [18, 19],
5831                             loc: {
5832                                 start: { line: 1, column: 18 },
5833                                 end: { line: 1, column: 19 }
5834                             }
5835                         },
5836                         prefix: false,
5837                         range: [18, 21],
5838                         loc: {
5839                             start: { line: 1, column: 18 },
5840                             end: { line: 1, column: 21 }
5841                         }
5842                     },
5843                     right: {
5844                         type: 'Literal',
5845                         value: 0,
5846                         raw: '0',
5847                         range: [22, 23],
5848                         loc: {
5849                             start: { line: 1, column: 22 },
5850                             end: { line: 1, column: 23 }
5851                         }
5852                     },
5853                     range: [18, 23],
5854                     loc: {
5855                         start: { line: 1, column: 18 },
5856                         end: { line: 1, column: 23 }
5857                     }
5858                 },
5859                 range: [18, 23],
5860                 loc: {
5861                     start: { line: 1, column: 18 },
5862                     end: { line: 1, column: 23 }
5863                 }
5864             }],
5865             range: [16, 23],
5866             loc: {
5867                 start: { line: 1, column: 16 },
5868                 end: { line: 1, column: 23 }
5869             },
5870             tokens: [{
5871                 type: 'Punctuator',
5872                 value: ';',
5873                 range: [16, 17],
5874                 loc: {
5875                     start: { line: 1, column: 16 },
5876                     end: { line: 1, column: 17 }
5877                 }
5878             }, {
5879                 type: 'Identifier',
5880                 value: 'i',
5881                 range: [18, 19],
5882                 loc: {
5883                     start: { line: 1, column: 18 },
5884                     end: { line: 1, column: 19 }
5885                 }
5886             }, {
5887                 type: 'Punctuator',
5888                 value: '--',
5889                 range: [19, 21],
5890                 loc: {
5891                     start: { line: 1, column: 19 },
5892                     end: { line: 1, column: 21 }
5893                 }
5894             }, {
5895                 type: 'Punctuator',
5896                 value: '>',
5897                 range: [21, 22],
5898                 loc: {
5899                     start: { line: 1, column: 21 },
5900                     end: { line: 1, column: 22 }
5901                 }
5902             }, {
5903                 type: 'Numeric',
5904                 value: '0',
5905                 range: [22, 23],
5906                 loc: {
5907                     start: { line: 1, column: 22 },
5908                     end: { line: 1, column: 23 }
5909                 }
5910             }]
5911
5912         },
5913
5914         'while (i-->0) {}': {
5915             type: 'WhileStatement',
5916             test: {
5917                 type: 'BinaryExpression',
5918                 operator: '>',
5919                 left: {
5920                     type: 'UpdateExpression',
5921                     operator: '--',
5922                     argument: {
5923                         type: 'Identifier',
5924                         name: 'i',
5925                         range: [7, 8],
5926                         loc: {
5927                             start: { line: 1, column: 7 },
5928                             end: { line: 1, column: 8 }
5929                         }
5930                     },
5931                     prefix: false,
5932                     range: [7, 10],
5933                     loc: {
5934                         start: { line: 1, column: 7 },
5935                         end: { line: 1, column: 10 }
5936                     }
5937                 },
5938                 right: {
5939                     type: 'Literal',
5940                     value: 0,
5941                     raw: '0',
5942                     range: [11, 12],
5943                     loc: {
5944                         start: { line: 1, column: 11 },
5945                         end: { line: 1, column: 12 }
5946                     }
5947                 },
5948                 range: [7, 12],
5949                 loc: {
5950                     start: { line: 1, column: 7 },
5951                     end: { line: 1, column: 12 }
5952                 }
5953             },
5954             body: {
5955                 type: 'BlockStatement',
5956                 body: [],
5957                 range: [14, 16],
5958                 loc: {
5959                     start: { line: 1, column: 14 },
5960                     end: { line: 1, column: 16 }
5961                 }
5962             },
5963             range: [0, 16],
5964             loc: {
5965                 start: { line: 1, column: 0 },
5966                 end: { line: 1, column: 16 }
5967             }
5968         },
5969
5970         '/*Venus*/ debugger; // Mars': {
5971             type: 'Program',
5972             body: [{
5973                 type: 'DebuggerStatement',
5974                 leadingComments: [{
5975                     type: 'Block',
5976                     value: 'Venus',
5977                     range: [0, 9],
5978                     loc: {
5979                         start: { line: 1, column: 0 },
5980                         end: { line: 1, column: 9 }
5981                     }
5982                 }],
5983                 trailingComments: [{
5984                     type: 'Line',
5985                     value: ' Mars',
5986                     range: [20, 27],
5987                     loc: {
5988                         start: { line: 1, column: 20 },
5989                         end: { line: 1, column: 27 }
5990                     }
5991                 }],
5992                 range: [10, 19],
5993                 loc: {
5994                     start: { line: 1, column: 10 },
5995                     end: { line: 1, column: 19 }
5996                 }
5997             }],
5998             comments: [{
5999                 type: 'Block',
6000                 value: 'Venus',
6001                 range: [0, 9],
6002                 loc: {
6003                     start: { line: 1, column: 0 },
6004                     end: { line: 1, column: 9 }
6005                 }
6006             }, {
6007                 type: 'Line',
6008                 value: ' Mars',
6009                 range: [20, 27],
6010                 loc: {
6011                     start: { line: 1, column: 20 },
6012                     end: { line: 1, column: 27 }
6013                 }
6014             }],
6015             range: [10, 19],
6016             loc: {
6017                 start: { line: 1, column: 10 },
6018                 end: { line: 1, column: 19 }
6019             }
6020         },
6021
6022         'function x(){ /*Jupiter*/ return; /*Saturn*/}': {
6023             type: 'FunctionDeclaration',
6024             id: {
6025                 type: 'Identifier',
6026                 name: 'x',
6027                 range: [9, 10],
6028                 loc: {
6029                     start: { line: 1, column: 9 },
6030                     end: { line: 1, column: 10 }
6031                 }
6032             },
6033             params: [],
6034             defaults: [],
6035             body: {
6036                 type: 'BlockStatement',
6037                 body: [{
6038                     type: 'ReturnStatement',
6039                     argument: null,
6040                     range: [26, 33],
6041                     loc: {
6042                         start: { line: 1, column: 26 },
6043                         end: { line: 1, column: 33 }
6044                     }
6045                 }],
6046                 range: [12, 45],
6047                 loc: {
6048                     start: { line: 1, column: 12 },
6049                     end: { line: 1, column: 45 }
6050                 }
6051             },
6052             rest: null,
6053             generator: false,
6054             expression: false,
6055             range: [0, 45],
6056             loc: {
6057                 start: { line: 1, column: 0 },
6058                 end: { line: 1, column: 45 }
6059             }
6060         }
6061
6062     },
6063
6064     'Numeric Literals': {
6065
6066         '0': {
6067             type: 'ExpressionStatement',
6068             expression: {
6069                 type: 'Literal',
6070                 value: 0,
6071                 raw: '0',
6072                 range: [0, 1],
6073                 loc: {
6074                     start: { line: 1, column: 0 },
6075                     end: { line: 1, column: 1 }
6076                 }
6077             },
6078             range: [0, 1],
6079             loc: {
6080                 start: { line: 1, column: 0 },
6081                 end: { line: 1, column: 1 }
6082             }
6083         },
6084
6085         '42': {
6086             type: 'ExpressionStatement',
6087             expression: {
6088                 type: 'Literal',
6089                 value: 42,
6090                 raw: '42',
6091                 range: [0, 2],
6092                 loc: {
6093                     start: { line: 1, column: 0 },
6094                     end: { line: 1, column: 2 }
6095                 }
6096             },
6097             range: [0, 2],
6098             loc: {
6099                 start: { line: 1, column: 0 },
6100                 end: { line: 1, column: 2 }
6101             }
6102         },
6103
6104         '3': {
6105             type: 'Program',
6106             body: [{
6107                 type: 'ExpressionStatement',
6108                 expression: {
6109                     type: 'Literal',
6110                     value: 3,
6111                     raw: '3',
6112                     range: [0, 1]
6113                 },
6114                 range: [0, 1]
6115             }],
6116             range: [0, 1],
6117             tokens: [{
6118                 type: 'Numeric',
6119                 value: '3',
6120                 range: [0, 1]
6121             }]
6122         },
6123
6124         '5': {
6125             type: 'Program',
6126             body: [{
6127                 type: 'ExpressionStatement',
6128                 expression: {
6129                     type: 'Literal',
6130                     value: 5,
6131                     raw: '5',
6132                     loc: {
6133                         start: { line: 1, column: 0 },
6134                         end: { line: 1, column: 1 }
6135                     }
6136                 },
6137                 loc: {
6138                     start: { line: 1, column: 0 },
6139                     end: { line: 1, column: 1 }
6140                 }
6141             }],
6142             loc: {
6143                 start: { line: 1, column: 0 },
6144                 end: { line: 1, column: 1 }
6145             },
6146             tokens: [{
6147                 type: 'Numeric',
6148                 value: '5',
6149                 loc: {
6150                     start: { line: 1, column: 0 },
6151                     end: { line: 1, column: 1 }
6152                 }
6153             }]
6154         },
6155
6156         '.14': {
6157             type: 'ExpressionStatement',
6158             expression: {
6159                 type: 'Literal',
6160                 value: 0.14,
6161                 raw: '.14',
6162                 range: [0, 3],
6163                 loc: {
6164                     start: { line: 1, column: 0 },
6165                     end: { line: 1, column: 3 }
6166                 }
6167             },
6168             range: [0, 3],
6169             loc: {
6170                 start: { line: 1, column: 0 },
6171                 end: { line: 1, column: 3 }
6172             }
6173         },
6174
6175         '3.14159': {
6176             type: 'ExpressionStatement',
6177             expression: {
6178                 type: 'Literal',
6179                 value: 3.14159,
6180                 raw: '3.14159',
6181                 range: [0, 7],
6182                 loc: {
6183                     start: { line: 1, column: 0 },
6184                     end: { line: 1, column: 7 }
6185                 }
6186             },
6187             range: [0, 7],
6188             loc: {
6189                 start: { line: 1, column: 0 },
6190                 end: { line: 1, column: 7 }
6191             }
6192         },
6193
6194         '6.02214179e+23': {
6195             type: 'ExpressionStatement',
6196             expression: {
6197                 type: 'Literal',
6198                 value: 6.02214179e+23,
6199                 raw: '6.02214179e+23',
6200                 range: [0, 14],
6201                 loc: {
6202                     start: { line: 1, column: 0 },
6203                     end: { line: 1, column: 14 }
6204                 }
6205             },
6206             range: [0, 14],
6207             loc: {
6208                 start: { line: 1, column: 0 },
6209                 end: { line: 1, column: 14 }
6210             }
6211         },
6212
6213         '1.492417830e-10': {
6214             type: 'ExpressionStatement',
6215             expression: {
6216                 type: 'Literal',
6217                 value: 1.49241783e-10,
6218                 raw: '1.492417830e-10',
6219                 range: [0, 15],
6220                 loc: {
6221                     start: { line: 1, column: 0 },
6222                     end: { line: 1, column: 15 }
6223                 }
6224             },
6225             range: [0, 15],
6226             loc: {
6227                 start: { line: 1, column: 0 },
6228                 end: { line: 1, column: 15 }
6229             }
6230         },
6231
6232         '0x0': {
6233             type: 'ExpressionStatement',
6234             expression: {
6235                 type: 'Literal',
6236                 value: 0,
6237                 raw: '0x0',
6238                 range: [0, 3],
6239                 loc: {
6240                     start: { line: 1, column: 0 },
6241                     end: { line: 1, column: 3 }
6242                 }
6243             },
6244             range: [0, 3],
6245             loc: {
6246                 start: { line: 1, column: 0 },
6247                 end: { line: 1, column: 3 }
6248             }
6249         },
6250
6251         '0x0;': {
6252             type: 'ExpressionStatement',
6253             expression: {
6254                 type: 'Literal',
6255                 value: 0,
6256                 raw: '0x0',
6257                 range: [0, 3],
6258                 loc: {
6259                     start: { line: 1, column: 0 },
6260                     end: { line: 1, column: 3 }
6261                 }
6262             },
6263             range: [0, 4],
6264             loc: {
6265                 start: { line: 1, column: 0 },
6266                 end: { line: 1, column: 4 }
6267             }
6268         },
6269
6270         '0e+100 ': {
6271             type: 'ExpressionStatement',
6272             expression: {
6273                 type: 'Literal',
6274                 value: 0,
6275                 raw: '0e+100',
6276                 range: [0, 6],
6277                 loc: {
6278                     start: { line: 1, column: 0 },
6279                     end: { line: 1, column: 6 }
6280                 }
6281             },
6282             range: [0, 7],
6283             loc: {
6284                 start: { line: 1, column: 0 },
6285                 end: { line: 1, column: 7 }
6286             }
6287         },
6288
6289         '0e+100': {
6290             type: 'ExpressionStatement',
6291             expression: {
6292                 type: 'Literal',
6293                 value: 0,
6294                 raw: '0e+100',
6295                 range: [0, 6],
6296                 loc: {
6297                     start: { line: 1, column: 0 },
6298                     end: { line: 1, column: 6 }
6299                 }
6300             },
6301             range: [0, 6],
6302             loc: {
6303                 start: { line: 1, column: 0 },
6304                 end: { line: 1, column: 6 }
6305             }
6306         },
6307
6308         '0xabc': {
6309             type: 'ExpressionStatement',
6310             expression: {
6311                 type: 'Literal',
6312                 value: 0xabc,
6313                 raw: '0xabc',
6314                 range: [0, 5],
6315                 loc: {
6316                     start: { line: 1, column: 0 },
6317                     end: { line: 1, column: 5 }
6318                 }
6319             },
6320             range: [0, 5],
6321             loc: {
6322                 start: { line: 1, column: 0 },
6323                 end: { line: 1, column: 5 }
6324             }
6325         },
6326
6327         '0xdef': {
6328             type: 'ExpressionStatement',
6329             expression: {
6330                 type: 'Literal',
6331                 value: 0xdef,
6332                 raw: '0xdef',
6333                 range: [0, 5],
6334                 loc: {
6335                     start: { line: 1, column: 0 },
6336                     end: { line: 1, column: 5 }
6337                 }
6338             },
6339             range: [0, 5],
6340             loc: {
6341                 start: { line: 1, column: 0 },
6342                 end: { line: 1, column: 5 }
6343             }
6344         },
6345
6346         '0X1A': {
6347             type: 'ExpressionStatement',
6348             expression: {
6349                 type: 'Literal',
6350                 value: 0x1A,
6351                 raw: '0X1A',
6352                 range: [0, 4],
6353                 loc: {
6354                     start: { line: 1, column: 0 },
6355                     end: { line: 1, column: 4 }
6356                 }
6357             },
6358             range: [0, 4],
6359             loc: {
6360                 start: { line: 1, column: 0 },
6361                 end: { line: 1, column: 4 }
6362             }
6363         },
6364
6365         '0x10': {
6366             type: 'ExpressionStatement',
6367             expression: {
6368                 type: 'Literal',
6369                 value: 0x10,
6370                 raw: '0x10',
6371                 range: [0, 4],
6372                 loc: {
6373                     start: { line: 1, column: 0 },
6374                     end: { line: 1, column: 4 }
6375                 }
6376             },
6377             range: [0, 4],
6378             loc: {
6379                 start: { line: 1, column: 0 },
6380                 end: { line: 1, column: 4 }
6381             }
6382         },
6383
6384         '0x100': {
6385             type: 'ExpressionStatement',
6386             expression: {
6387                 type: 'Literal',
6388                 value: 0x100,
6389                 raw: '0x100',
6390                 range: [0, 5],
6391                 loc: {
6392                     start: { line: 1, column: 0 },
6393                     end: { line: 1, column: 5 }
6394                 }
6395             },
6396             range: [0, 5],
6397             loc: {
6398                 start: { line: 1, column: 0 },
6399                 end: { line: 1, column: 5 }
6400             }
6401         },
6402
6403         '0X04': {
6404             type: 'ExpressionStatement',
6405             expression: {
6406                 type: 'Literal',
6407                 value: 0X04,
6408                 raw: '0X04',
6409                 range: [0, 4],
6410                 loc: {
6411                     start: { line: 1, column: 0 },
6412                     end: { line: 1, column: 4 }
6413                 }
6414             },
6415             range: [0, 4],
6416             loc: {
6417                 start: { line: 1, column: 0 },
6418                 end: { line: 1, column: 4 }
6419             }
6420         },
6421
6422         '02': {
6423             type: 'ExpressionStatement',
6424             expression: {
6425                 type: 'Literal',
6426                 value: 2,
6427                 raw: '02',
6428                 range: [0, 2],
6429                 loc: {
6430                     start: { line: 1, column: 0 },
6431                     end: { line: 1, column: 2 }
6432                 }
6433             },
6434             range: [0, 2],
6435             loc: {
6436                 start: { line: 1, column: 0 },
6437                 end: { line: 1, column: 2 }
6438             }
6439         },
6440
6441         '012': {
6442             type: 'ExpressionStatement',
6443             expression: {
6444                 type: 'Literal',
6445                 value: 10,
6446                 raw: '012',
6447                 range: [0, 3],
6448                 loc: {
6449                     start: { line: 1, column: 0 },
6450                     end: { line: 1, column: 3 }
6451                 }
6452             },
6453             range: [0, 3],
6454             loc: {
6455                 start: { line: 1, column: 0 },
6456                 end: { line: 1, column: 3 }
6457             }
6458         },
6459
6460         '0012': {
6461             type: 'ExpressionStatement',
6462             expression: {
6463                 type: 'Literal',
6464                 value: 10,
6465                 raw: '0012',
6466                 range: [0, 4],
6467                 loc: {
6468                     start: { line: 1, column: 0 },
6469                     end: { line: 1, column: 4 }
6470                 }
6471             },
6472             range: [0, 4],
6473             loc: {
6474                 start: { line: 1, column: 0 },
6475                 end: { line: 1, column: 4 }
6476             }
6477         },
6478
6479         '08': {
6480             type: 'ExpressionStatement',
6481             expression: {
6482                 type: 'Literal',
6483                 value: 8,
6484                 raw: '08',
6485                 range: [0, 2],
6486                 loc: {
6487                     start: { line: 1, column: 0 },
6488                     end: { line: 1, column: 2 }
6489                 }
6490             },
6491             range: [0, 2],
6492             loc: {
6493                 start: { line: 1, column: 0 },
6494                 end: { line: 1, column: 2 }
6495             }
6496         },
6497
6498         '0008': {
6499             type: 'ExpressionStatement',
6500             expression: {
6501                 type: 'Literal',
6502                 value: 8,
6503                 raw: '0008',
6504                 range: [0, 4],
6505                 loc: {
6506                     start: { line: 1, column: 0 },
6507                     end: { line: 1, column: 4 }
6508                 }
6509             },
6510             range: [0, 4],
6511             loc: {
6512                 start: { line: 1, column: 0 },
6513                 end: { line: 1, column: 4 }
6514             }
6515         },
6516
6517         '09': {
6518             type: 'ExpressionStatement',
6519             expression: {
6520                 type: 'Literal',
6521                 value: 9,
6522                 raw: '09',
6523                 range: [0, 2],
6524                 loc: {
6525                     start: { line: 1, column: 0 },
6526                     end: { line: 1, column: 2 }
6527                 }
6528             },
6529             range: [0, 2],
6530             loc: {
6531                 start: { line: 1, column: 0 },
6532                 end: { line: 1, column: 2 }
6533             }
6534         },
6535
6536         '09.5': {
6537             type: 'ExpressionStatement',
6538             expression: {
6539                 type: 'Literal',
6540                 value: 9.5,
6541                 raw: '09.5',
6542                 range: [0, 4],
6543                 loc: {
6544                     start: { line: 1, column: 0 },
6545                     end: { line: 1, column: 4 }
6546                 }
6547             },
6548             range: [0, 4],
6549             loc: {
6550                 start: { line: 1, column: 0 },
6551                 end: { line: 1, column: 4 }
6552             }
6553         }
6554
6555     },
6556
6557     '[ES6] Binary Integer Literals': {
6558
6559         '0b0': {
6560             type: 'ExpressionStatement',
6561             expression: {
6562                 type: 'Literal',
6563                 value: 0,
6564                 raw: '0b0',
6565                 range: [0, 3],
6566                 loc: {
6567                     start: { line: 1, column: 0 },
6568                     end: { line: 1, column: 3 }
6569                 }
6570             },
6571             range: [0, 3],
6572             loc: {
6573                 start: { line: 1, column: 0 },
6574                 end: { line: 1, column: 3 }
6575             }
6576         },
6577
6578         '0b1': {
6579             type: 'ExpressionStatement',
6580             expression: {
6581                 type: 'Literal',
6582                 value: 1,
6583                 raw: '0b1',
6584                 range: [0, 3],
6585                 loc: {
6586                     start: { line: 1, column: 0 },
6587                     end: { line: 1, column: 3 }
6588                 }
6589             },
6590             range: [0, 3],
6591             loc: {
6592                 start: { line: 1, column: 0 },
6593                 end: { line: 1, column: 3 }
6594             }
6595         },
6596
6597         '0b10': {
6598             type: 'ExpressionStatement',
6599             expression: {
6600                 type: 'Literal',
6601                 value: 2,
6602                 raw: '0b10',
6603                 range: [0, 4],
6604                 loc: {
6605                     start: { line: 1, column: 0 },
6606                     end: { line: 1, column: 4 }
6607                 }
6608             },
6609             range: [0, 4],
6610             loc: {
6611                 start: { line: 1, column: 0 },
6612                 end: { line: 1, column: 4 }
6613             }
6614         },
6615
6616         '0B0': {
6617             type: 'ExpressionStatement',
6618             expression: {
6619                 type: 'Literal',
6620                 value: 0,
6621                 raw: '0B0',
6622                 range: [0, 3],
6623                 loc: {
6624                     start: { line: 1, column: 0 },
6625                     end: { line: 1, column: 3 }
6626                 }
6627             },
6628             range: [0, 3],
6629             loc: {
6630                 start: { line: 1, column: 0 },
6631                 end: { line: 1, column: 3 }
6632             }
6633         },
6634
6635         '0B1': {
6636             type: 'ExpressionStatement',
6637             expression: {
6638                 type: 'Literal',
6639                 value: 1,
6640                 raw: '0B1',
6641                 range: [0, 3],
6642                 loc: {
6643                     start: { line: 1, column: 0 },
6644                     end: { line: 1, column: 3 }
6645                 }
6646             },
6647             range: [0, 3],
6648             loc: {
6649                 start: { line: 1, column: 0 },
6650                 end: { line: 1, column: 3 }
6651             }
6652         },
6653
6654         '0B10': {
6655             type: 'ExpressionStatement',
6656             expression: {
6657                 type: 'Literal',
6658                 value: 2,
6659                 raw: '0B10',
6660                 range: [0, 4],
6661                 loc: {
6662                     start: { line: 1, column: 0 },
6663                     end: { line: 1, column: 4 }
6664                 }
6665             },
6666             range: [0, 4],
6667             loc: {
6668                 start: { line: 1, column: 0 },
6669                 end: { line: 1, column: 4 }
6670             }
6671         }
6672
6673     },
6674
6675     '[ES6] Octal Integer Literals': {
6676
6677         '00': {
6678             type: 'ExpressionStatement',
6679             expression: {
6680                 type: 'Literal',
6681                 value: 0,
6682                 raw: '00',
6683                 range: [0, 2],
6684                 loc: {
6685                     start: { line: 1, column: 0 },
6686                     end: { line: 1, column: 2 }
6687                 }
6688             },
6689             range: [0, 2],
6690             loc: {
6691                 start: { line: 1, column: 0 },
6692                 end: { line: 1, column: 2 }
6693             }
6694         },
6695
6696         '0o0': {
6697             type: 'ExpressionStatement',
6698             expression: {
6699                 type: 'Literal',
6700                 value: 0,
6701                 raw: '0o0',
6702                 range: [0, 3],
6703                 loc: {
6704                     start: { line: 1, column: 0 },
6705                     end: { line: 1, column: 3 }
6706                 }
6707             },
6708             range: [0, 3],
6709             loc: {
6710                 start: { line: 1, column: 0 },
6711                 end: { line: 1, column: 3 }
6712             }
6713         },
6714
6715         'function test() {\'use strict\'; 0o0; }': {
6716             type: 'FunctionDeclaration',
6717             id: {
6718                 type: 'Identifier',
6719                 name: 'test',
6720                 range: [9, 13],
6721                 loc: {
6722                     start: { line: 1, column: 9 },
6723                     end: { line: 1, column: 13 }
6724                 }
6725             },
6726             params: [],
6727             defaults: [],
6728             body: {
6729                 type: 'BlockStatement',
6730                 body: [{
6731                     type: 'ExpressionStatement',
6732                     expression: {
6733                         type: 'Literal',
6734                         value: 'use strict',
6735                         raw: '\'use strict\'',
6736                         range: [17, 29],
6737                         loc: {
6738                             start: { line: 1, column: 17 },
6739                             end: { line: 1, column: 29 }
6740                         }
6741                     },
6742                     range: [17, 30],
6743                     loc: {
6744                         start: { line: 1, column: 17 },
6745                         end: { line: 1, column: 30 }
6746                     }
6747                 }, {
6748                     type: 'ExpressionStatement',
6749                     expression: {
6750                         type: 'Literal',
6751                         value: 0,
6752                         raw: '0o0',
6753                         range: [31, 34],
6754                         loc: {
6755                             start: { line: 1, column: 31 },
6756                             end: { line: 1, column: 34 }
6757                         }
6758                     },
6759                     range: [31, 35],
6760                     loc: {
6761                         start: { line: 1, column: 31 },
6762                         end: { line: 1, column: 35 }
6763                     }
6764                 }],
6765                 range: [16, 37],
6766                 loc: {
6767                     start: { line: 1, column: 16 },
6768                     end: { line: 1, column: 37 }
6769                 }
6770             },
6771             rest: null,
6772             generator: false,
6773             expression: false,
6774             range: [0, 37],
6775             loc: {
6776                 start: { line: 1, column: 0 },
6777                 end: { line: 1, column: 37 }
6778             }
6779         },
6780
6781         '0o2': {
6782             type: 'ExpressionStatement',
6783             expression: {
6784                 type: 'Literal',
6785                 value: 2,
6786                 raw: '0o2',
6787                 range: [0, 3],
6788                 loc: {
6789                     start: { line: 1, column: 0 },
6790                     end: { line: 1, column: 3 }
6791                 }
6792             },
6793             range: [0, 3],
6794             loc: {
6795                 start: { line: 1, column: 0 },
6796                 end: { line: 1, column: 3 }
6797             }
6798         },
6799
6800         '0o12': {
6801             type: 'ExpressionStatement',
6802             expression: {
6803                 type: 'Literal',
6804                 value: 10,
6805                 raw: '0o12',
6806                 range: [0, 4],
6807                 loc: {
6808                     start: { line: 1, column: 0 },
6809                     end: { line: 1, column: 4 }
6810                 }
6811             },
6812             range: [0, 4],
6813             loc: {
6814                 start: { line: 1, column: 0 },
6815                 end: { line: 1, column: 4 }
6816             }
6817         },
6818
6819         '0O0': {
6820             type: 'ExpressionStatement',
6821             expression: {
6822                 type: 'Literal',
6823                 value: 0,
6824                 raw: '0O0',
6825                 range: [0, 3],
6826                 loc: {
6827                     start: { line: 1, column: 0 },
6828                     end: { line: 1, column: 3 }
6829                 }
6830             },
6831             range: [0, 3],
6832             loc: {
6833                 start: { line: 1, column: 0 },
6834                 end: { line: 1, column: 3 }
6835             }
6836         },
6837
6838         'function test() {\'use strict\'; 0O0; }': {
6839             type: 'FunctionDeclaration',
6840             id: {
6841                 type: 'Identifier',
6842                 name: 'test',
6843                 range: [9, 13],
6844                 loc: {
6845                     start: { line: 1, column: 9 },
6846                     end: { line: 1, column: 13 }
6847                 }
6848             },
6849             params: [],
6850             defaults: [],
6851             body: {
6852                 type: 'BlockStatement',
6853                 body: [{
6854                     type: 'ExpressionStatement',
6855                     expression: {
6856                         type: 'Literal',
6857                         value: 'use strict',
6858                         raw: '\'use strict\'',
6859                         range: [17, 29],
6860                         loc: {
6861                             start: { line: 1, column: 17 },
6862                             end: { line: 1, column: 29 }
6863                         }
6864                     },
6865                     range: [17, 30],
6866                     loc: {
6867                         start: { line: 1, column: 17 },
6868                         end: { line: 1, column: 30 }
6869                     }
6870                 }, {
6871                     type: 'ExpressionStatement',
6872                     expression: {
6873                         type: 'Literal',
6874                         value: 0,
6875                         raw: '0O0',
6876                         range: [31, 34],
6877                         loc: {
6878                             start: { line: 1, column: 31 },
6879                             end: { line: 1, column: 34 }
6880                         }
6881                     },
6882                     range: [31, 35],
6883                     loc: {
6884                         start: { line: 1, column: 31 },
6885                         end: { line: 1, column: 35 }
6886                     }
6887                 }],
6888                 range: [16, 37],
6889                 loc: {
6890                     start: { line: 1, column: 16 },
6891                     end: { line: 1, column: 37 }
6892                 }
6893             },
6894             rest: null,
6895             generator: false,
6896             expression: false,
6897             range: [0, 37],
6898             loc: {
6899                 start: { line: 1, column: 0 },
6900                 end: { line: 1, column: 37 }
6901             }
6902         }
6903
6904     },
6905
6906     'String Literals': {
6907
6908         '"Hello"': {
6909             type: 'ExpressionStatement',
6910             expression: {
6911                 type: 'Literal',
6912                 value: 'Hello',
6913                 raw: '"Hello"',
6914                 range: [0, 7],
6915                 loc: {
6916                     start: { line: 1, column: 0 },
6917                     end: { line: 1, column: 7 }
6918                 }
6919             },
6920             range: [0, 7],
6921             loc: {
6922                 start: { line: 1, column: 0 },
6923                 end: { line: 1, column: 7 }
6924             }
6925         },
6926
6927         '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': {
6928             type: 'ExpressionStatement',
6929             expression: {
6930                 type: 'Literal',
6931                 value: '\n\r\t\x0B\b\f\\\'"\x00',
6932                 raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"',
6933                 range: [0, 22],
6934                 loc: {
6935                     start: { line: 1, column: 0 },
6936                     end: { line: 1, column: 22 }
6937                 }
6938             },
6939             range: [0, 22],
6940             loc: {
6941                 start: { line: 1, column: 0 },
6942                 end: { line: 1, column: 22 }
6943             }
6944         },
6945
6946         '"\\u0061"': {
6947             type: 'ExpressionStatement',
6948             expression: {
6949                 type: 'Literal',
6950                 value: 'a',
6951                 raw: '"\\u0061"',
6952                 range: [0, 8],
6953                 loc: {
6954                     start: { line: 1, column: 0 },
6955                     end: { line: 1, column: 8 }
6956                 }
6957             },
6958             range: [0, 8],
6959             loc: {
6960                 start: { line: 1, column: 0 },
6961                 end: { line: 1, column: 8 }
6962             }
6963         },
6964
6965         '"\\x61"': {
6966             type: 'ExpressionStatement',
6967             expression: {
6968                 type: 'Literal',
6969                 value: 'a',
6970                 raw: '"\\x61"',
6971                 range: [0, 6],
6972                 loc: {
6973                     start: { line: 1, column: 0 },
6974                     end: { line: 1, column: 6 }
6975                 }
6976             },
6977             range: [0, 6],
6978             loc: {
6979                 start: { line: 1, column: 0 },
6980                 end: { line: 1, column: 6 }
6981             }
6982         },
6983
6984         '"\\u00"': {
6985             type: 'ExpressionStatement',
6986             expression: {
6987                 type: 'Literal',
6988                 value: 'u00',
6989                 raw: '"\\u00"',
6990                 range: [0, 6],
6991                 loc: {
6992                     start: { line: 1, column: 0 },
6993                     end: { line: 1, column: 6 }
6994                 }
6995             },
6996             range: [0, 6],
6997             loc: {
6998                 start: { line: 1, column: 0 },
6999                 end: { line: 1, column: 6 }
7000             }
7001         },
7002
7003         '"\\xt"': {
7004             type: 'ExpressionStatement',
7005             expression: {
7006                 type: 'Literal',
7007                 value: 'xt',
7008                 raw: '"\\xt"',
7009                 range: [0, 5],
7010                 loc: {
7011                     start: { line: 1, column: 0 },
7012                     end: { line: 1, column: 5 }
7013                 }
7014             },
7015             range: [0, 5],
7016             loc: {
7017                 start: { line: 1, column: 0 },
7018                 end: { line: 1, column: 5 }
7019             }
7020         },
7021
7022         '"Hello\\nworld"': {
7023             type: 'ExpressionStatement',
7024             expression: {
7025                 type: 'Literal',
7026                 value: 'Hello\nworld',
7027                 raw: '"Hello\\nworld"',
7028                 range: [0, 14],
7029                 loc: {
7030                     start: { line: 1, column: 0 },
7031                     end: { line: 1, column: 14 }
7032                 }
7033             },
7034             range: [0, 14],
7035             loc: {
7036                 start: { line: 1, column: 0 },
7037                 end: { line: 1, column: 14 }
7038             }
7039         },
7040
7041         '"Hello\\\nworld"': {
7042             type: 'ExpressionStatement',
7043             expression: {
7044                 type: 'Literal',
7045                 value: 'Helloworld',
7046                 raw: '"Hello\\\nworld"',
7047                 range: [0, 14],
7048                 loc: {
7049                     start: { line: 1, column: 0 },
7050                     end: { line: 2, column: 6 }
7051                 }
7052             },
7053             range: [0, 14],
7054             loc: {
7055                 start: { line: 1, column: 0 },
7056                 end: { line: 2, column: 6 }
7057             }
7058         },
7059
7060         '"Hello\\02World"': {
7061             type: 'ExpressionStatement',
7062             expression: {
7063                 type: 'Literal',
7064                 value: 'Hello\u0002World',
7065                 raw: '"Hello\\02World"',
7066                 range: [0, 15],
7067                 loc: {
7068                     start: { line: 1, column: 0 },
7069                     end: { line: 1, column: 15 }
7070                 }
7071             },
7072             range: [0, 15],
7073             loc: {
7074                 start: { line: 1, column: 0 },
7075                 end: { line: 1, column: 15 }
7076             }
7077         },
7078
7079         '"Hello\\012World"': {
7080             type: 'ExpressionStatement',
7081             expression: {
7082                 type: 'Literal',
7083                 value: 'Hello\u000AWorld',
7084                 raw: '"Hello\\012World"',
7085                 range: [0, 16],
7086                 loc: {
7087                     start: { line: 1, column: 0 },
7088                     end: { line: 1, column: 16 }
7089                 }
7090             },
7091             range: [0, 16],
7092             loc: {
7093                 start: { line: 1, column: 0 },
7094                 end: { line: 1, column: 16 }
7095             }
7096         },
7097
7098         '"Hello\\122World"': {
7099             type: 'ExpressionStatement',
7100             expression: {
7101                 type: 'Literal',
7102                 value: 'Hello\122World',
7103                 raw: '"Hello\\122World"',
7104                 range: [0, 16],
7105                 loc: {
7106                     start: { line: 1, column: 0 },
7107                     end: { line: 1, column: 16 }
7108                 }
7109             },
7110             range: [0, 16],
7111             loc: {
7112                 start: { line: 1, column: 0 },
7113                 end: { line: 1, column: 16 }
7114             }
7115         },
7116
7117         '"Hello\\0122World"': {
7118             type: 'ExpressionStatement',
7119             expression: {
7120                 type: 'Literal',
7121                 value: 'Hello\u000A2World',
7122                 raw: '"Hello\\0122World"',
7123                 range: [0, 17],
7124                 loc: {
7125                     start: { line: 1, column: 0 },
7126                     end: { line: 1, column: 17 }
7127                 }
7128             },
7129             range: [0, 17],
7130             loc: {
7131                 start: { line: 1, column: 0 },
7132                 end: { line: 1, column: 17 }
7133             }
7134         },
7135
7136         '"Hello\\312World"': {
7137             type: 'ExpressionStatement',
7138             expression: {
7139                 type: 'Literal',
7140                 value: 'Hello\u00CAWorld',
7141                 raw: '"Hello\\312World"',
7142                 range: [0, 16],
7143                 loc: {
7144                     start: { line: 1, column: 0 },
7145                     end: { line: 1, column: 16 }
7146                 }
7147             },
7148             range: [0, 16],
7149             loc: {
7150                 start: { line: 1, column: 0 },
7151                 end: { line: 1, column: 16 }
7152             }
7153         },
7154
7155         '"Hello\\412World"': {
7156             type: 'ExpressionStatement',
7157             expression: {
7158                 type: 'Literal',
7159                 value: 'Hello\412World',
7160                 raw: '"Hello\\412World"',
7161                 range: [0, 16],
7162                 loc: {
7163                     start: { line: 1, column: 0 },
7164                     end: { line: 1, column: 16 }
7165                 }
7166             },
7167             range: [0, 16],
7168             loc: {
7169                 start: { line: 1, column: 0 },
7170                 end: { line: 1, column: 16 }
7171             }
7172         },
7173
7174         '"Hello\\812World"': {
7175             type: 'ExpressionStatement',
7176             expression: {
7177                 type: 'Literal',
7178                 value: 'Hello812World',
7179                 raw: '"Hello\\812World"',
7180                 range: [0, 16],
7181                 loc: {
7182                     start: { line: 1, column: 0 },
7183                     end: { line: 1, column: 16 }
7184                 }
7185             },
7186             range: [0, 16],
7187             loc: {
7188                 start: { line: 1, column: 0 },
7189                 end: { line: 1, column: 16 }
7190             }
7191         },
7192
7193         '"Hello\\712World"': {
7194             type: 'ExpressionStatement',
7195             expression: {
7196                 type: 'Literal',
7197                 value: 'Hello\712World',
7198                 raw: '"Hello\\712World"',
7199                 range: [0, 16],
7200                 loc: {
7201                     start: { line: 1, column: 0 },
7202                     end: { line: 1, column: 16 }
7203                 }
7204             },
7205             range: [0, 16],
7206             loc: {
7207                 start: { line: 1, column: 0 },
7208                 end: { line: 1, column: 16 }
7209             }
7210         },
7211
7212         '"Hello\\0World"': {
7213             type: 'ExpressionStatement',
7214             expression: {
7215                 type: 'Literal',
7216                 value: 'Hello\u0000World',
7217                 raw: '"Hello\\0World"',
7218                 range: [0, 14],
7219                 loc: {
7220                     start: { line: 1, column: 0 },
7221                     end: { line: 1, column: 14 }
7222                 }
7223             },
7224             range: [0, 14],
7225             loc: {
7226                 start: { line: 1, column: 0 },
7227                 end: { line: 1, column: 14 }
7228             }
7229         },
7230
7231         '"Hello\\\r\nworld"': {
7232             type: 'ExpressionStatement',
7233             expression: {
7234                 type: 'Literal',
7235                 value: 'Helloworld',
7236                 raw: '"Hello\\\r\nworld"',
7237                 range: [0, 15],
7238                 loc: {
7239                     start: { line: 1, column: 0 },
7240                     end: { line: 2, column: 6 }
7241                 }
7242             },
7243             range: [0, 15],
7244             loc: {
7245                 start: { line: 1, column: 0 },
7246                 end: { line: 2, column: 6 }
7247             }
7248         },
7249
7250         '"Hello\\1World"': {
7251             type: 'ExpressionStatement',
7252             expression: {
7253                 type: 'Literal',
7254                 value: 'Hello\u0001World',
7255                 raw: '"Hello\\1World"',
7256                 range: [0, 14],
7257                 loc: {
7258                     start: { line: 1, column: 0 },
7259                     end: { line: 1, column: 14 }
7260                 }
7261             },
7262             range: [0, 14],
7263             loc: {
7264                 start: { line: 1, column: 0 },
7265                 end: { line: 1, column: 14 }
7266             }
7267         }
7268     },
7269
7270     '[ES6] Unicode Code Point Escape Sequence': {
7271
7272         '"\\u{714E}\\u{8336}"': {
7273             type: 'ExpressionStatement',
7274             expression: {
7275                 type: 'Literal',
7276                 value: '\u714E\u8336',
7277                 raw: '"\\u{714E}\\u{8336}"',
7278                 range: [0, 18],
7279                 loc: {
7280                     start: { line: 1, column: 0 },
7281                     end: { line: 1, column: 18 }
7282                 }
7283             },
7284             range: [0, 18],
7285             loc: {
7286                 start: { line: 1, column: 0 },
7287                 end: { line: 1, column: 18 }
7288             }
7289         },
7290
7291         '"\\u{20BB7}\\u{91CE}\\u{5BB6}"': {
7292             type: 'ExpressionStatement',
7293             expression: {
7294                 type: 'Literal',
7295                 value: '\ud842\udfb7\u91ce\u5bb6',
7296                 raw: '"\\u{20BB7}\\u{91CE}\\u{5BB6}"',
7297                 range: [0, 27],
7298                 loc: {
7299                     start: { line: 1, column: 0 },
7300                     end: { line: 1, column: 27 }
7301                 }
7302             },
7303             range: [0, 27],
7304             loc: {
7305                 start: { line: 1, column: 0 },
7306                 end: { line: 1, column: 27 }
7307             }
7308         },
7309
7310         '"\\u{00000000034}"': {
7311             type: 'ExpressionStatement',
7312             expression: {
7313                 range: [0, 17],
7314                 loc: {
7315                     start: { line: 1, column: 0 },
7316                     end: { line: 1, column: 17 }
7317                 },
7318                 type: 'Literal',
7319                 value: '4',
7320                 raw: '"\\u{00000000034}"'
7321             },
7322             range: [0, 17],
7323             loc: {
7324                 start: { line: 1, column: 0 },
7325                 end: { line: 1, column: 17 }
7326             }
7327         }
7328
7329     },
7330
7331     'Regular Expression Literals': {
7332
7333         '/p/;': {
7334             type: 'Program',
7335             body: [{
7336                 type: 'ExpressionStatement',
7337                 expression: {
7338                     type: 'Literal',
7339                     value: '/p/',
7340                     raw: '/p/',
7341                     regex: {
7342                         pattern: 'p',
7343                         flags: ''
7344                     },
7345                     range: [0, 3],
7346                     loc: {
7347                         start: { line: 1, column: 0 },
7348                         end: { line: 1, column: 3 }
7349                     }
7350                 },
7351                 range: [0, 4],
7352                 loc: {
7353                     start: { line: 1, column: 0 },
7354                     end: { line: 1, column: 4 }
7355                 }
7356             }],
7357             range: [0, 4],
7358             loc: {
7359                 start: { line: 1, column: 0 },
7360                 end: { line: 1, column: 4 }
7361             },
7362             tokens: [{
7363                 type: 'RegularExpression',
7364                 value: '/p/',
7365                 regex: {
7366                     pattern: 'p',
7367                     flags: ''
7368                 },
7369                 range: [0, 3],
7370                 loc: {
7371                     start: { line: 1, column: 0 },
7372                     end: { line: 1, column: 3 }
7373                 }
7374             }, {
7375                 type: 'Punctuator',
7376                 value: ';',
7377                 range: [3, 4],
7378                 loc: {
7379                     start: { line: 1, column: 3 },
7380                     end: { line: 1, column: 4 }
7381                 }
7382             }]
7383         },
7384
7385         '[/q/]': {
7386             type: 'Program',
7387             body: [{
7388                 type: 'ExpressionStatement',
7389                 expression: {
7390                     type: 'ArrayExpression',
7391                     elements: [{
7392                         type: 'Literal',
7393                         value: '/q/',
7394                         raw: '/q/',
7395                         regex: {
7396                             pattern: 'q',
7397                             flags: ''
7398                         },
7399                         range: [1, 4],
7400                         loc: {
7401                             start: { line: 1, column: 1 },
7402                             end: { line: 1, column: 4 }
7403                         }
7404                     }],
7405                     range: [0, 5],
7406                     loc: {
7407                         start: { line: 1, column: 0 },
7408                         end: { line: 1, column: 5 }
7409                     }
7410                 },
7411                 range: [0, 5],
7412                 loc: {
7413                     start: { line: 1, column: 0 },
7414                     end: { line: 1, column: 5 }
7415                 }
7416             }],
7417             range: [0, 5],
7418             loc: {
7419                 start: { line: 1, column: 0 },
7420                 end: { line: 1, column: 5 }
7421             },
7422             tokens: [{
7423                 type: 'Punctuator',
7424                 value: '[',
7425                 range: [0, 1],
7426                 loc: {
7427                     start: { line: 1, column: 0 },
7428                     end: { line: 1, column: 1 }
7429                 }
7430             }, {
7431                 type: 'RegularExpression',
7432                 value: '/q/',
7433                 regex: {
7434                     pattern: 'q',
7435                     flags: ''
7436                 },
7437                 range: [1, 4],
7438                 loc: {
7439                     start: { line: 1, column: 1 },
7440                     end: { line: 1, column: 4 }
7441                 }
7442             }, {
7443                 type: 'Punctuator',
7444                 value: ']',
7445                 range: [4, 5],
7446                 loc: {
7447                     start: { line: 1, column: 4 },
7448                     end: { line: 1, column: 5 }
7449                 }
7450             }]
7451         },
7452
7453         'var x = /[a-z]/i': {
7454             type: 'Program',
7455             body: [{
7456                 type: 'VariableDeclaration',
7457                 declarations: [{
7458                     type: 'VariableDeclarator',
7459                     id: {
7460                         type: 'Identifier',
7461                         name: 'x',
7462                         range: [4, 5],
7463                         loc: {
7464                             start: { line: 1, column: 4 },
7465                             end: { line: 1, column: 5 }
7466                         }
7467                     },
7468                     init: {
7469                         type: 'Literal',
7470                         value: '/[a-z]/i',
7471                         raw: '/[a-z]/i',
7472                         regex: {
7473                             pattern: '[a-z]',
7474                             flags: 'i'
7475                         },
7476                         range: [8, 16],
7477                         loc: {
7478                             start: { line: 1, column: 8 },
7479                             end: { line: 1, column: 16 }
7480                         }
7481                     },
7482                     range: [4, 16],
7483                     loc: {
7484                         start: { line: 1, column: 4 },
7485                         end: { line: 1, column: 16 }
7486                     }
7487                 }],
7488                 kind: 'var',
7489                 range: [0, 16],
7490                 loc: {
7491                     start: { line: 1, column: 0 },
7492                     end: { line: 1, column: 16 }
7493                 }
7494             }],
7495             range: [0, 16],
7496             loc: {
7497                 start: { line: 1, column: 0 },
7498                 end: { line: 1, column: 16 }
7499             },
7500             tokens: [{
7501                 type: 'Keyword',
7502                 value: 'var',
7503                 range: [0, 3],
7504                 loc: {
7505                     start: { line: 1, column: 0 },
7506                     end: { line: 1, column: 3 }
7507                 }
7508             }, {
7509                 type: 'Identifier',
7510                 value: 'x',
7511                 range: [4, 5],
7512                 loc: {
7513                     start: { line: 1, column: 4 },
7514                     end: { line: 1, column: 5 }
7515                 }
7516             }, {
7517                 type: 'Punctuator',
7518                 value: '=',
7519                 range: [6, 7],
7520                 loc: {
7521                     start: { line: 1, column: 6 },
7522                     end: { line: 1, column: 7 }
7523                 }
7524             }, {
7525                 type: 'RegularExpression',
7526                 value: '/[a-z]/i',
7527                 regex: {
7528                     pattern: '[a-z]',
7529                     flags: 'i'
7530                 },
7531                 range: [8, 16],
7532                 loc: {
7533                     start: { line: 1, column: 8 },
7534                     end: { line: 1, column: 16 }
7535                 }
7536             }]
7537         },
7538
7539         'var x = /[a-z]/y': {
7540             type: 'Program',
7541             body: [{
7542                 type: 'VariableDeclaration',
7543                 declarations: [{
7544                     type: 'VariableDeclarator',
7545                     id: {
7546                         type: 'Identifier',
7547                         name: 'x',
7548                         range: [4, 5],
7549                         loc: {
7550                             start: { line: 1, column: 4 },
7551                             end: { line: 1, column: 5 }
7552                         }
7553                     },
7554                     init: {
7555                         type: 'Literal',
7556                         value: null,
7557                         raw: '/[a-z]/y',
7558                         regex: {
7559                             pattern: '[a-z]',
7560                             flags: 'y'
7561                         },
7562                         range: [8, 16],
7563                         loc: {
7564                             start: { line: 1, column: 8 },
7565                             end: { line: 1, column: 16 }
7566                         }
7567                     },
7568                     range: [4, 16],
7569                     loc: {
7570                         start: { line: 1, column: 4 },
7571                         end: { line: 1, column: 16 }
7572                     }
7573                 }],
7574                 kind: 'var',
7575                 range: [0, 16],
7576                 loc: {
7577                     start: { line: 1, column: 0 },
7578                     end: { line: 1, column: 16 }
7579                 }
7580             }],
7581             range: [0, 16],
7582             loc: {
7583                 start: { line: 1, column: 0 },
7584                 end: { line: 1, column: 16 }
7585             },
7586             tokens: [{
7587                 type: 'Keyword',
7588                 value: 'var',
7589                 range: [0, 3],
7590                 loc: {
7591                     start: { line: 1, column: 0 },
7592                     end: { line: 1, column: 3 }
7593                 }
7594             }, {
7595                 type: 'Identifier',
7596                 value: 'x',
7597                 range: [4, 5],
7598                 loc: {
7599                     start: { line: 1, column: 4 },
7600                     end: { line: 1, column: 5 }
7601                 }
7602             }, {
7603                 type: 'Punctuator',
7604                 value: '=',
7605                 range: [6, 7],
7606                 loc: {
7607                     start: { line: 1, column: 6 },
7608                     end: { line: 1, column: 7 }
7609                 }
7610             }, {
7611                 type: 'RegularExpression',
7612                 value: '/[a-z]/y',
7613                 regex: {
7614                     pattern: '[a-z]',
7615                     flags: 'y'
7616                 },
7617                 range: [8, 16],
7618                 loc: {
7619                     start: { line: 1, column: 8 },
7620                     end: { line: 1, column: 16 }
7621                 }
7622             }]
7623         },
7624
7625         'var x = /[a-z]/u': {
7626             type: 'Program',
7627             body: [{
7628                 type: 'VariableDeclaration',
7629                 declarations: [{
7630                     type: 'VariableDeclarator',
7631                     id: {
7632                         type: 'Identifier',
7633                         name: 'x',
7634                         range: [4, 5],
7635                         loc: {
7636                             start: { line: 1, column: 4 },
7637                             end: { line: 1, column: 5 }
7638                         }
7639                     },
7640                     init: {
7641                         type: 'Literal',
7642                         value: null,
7643                         raw: '/[a-z]/u',
7644                         regex: {
7645                             pattern: '[a-z]',
7646                             flags: 'u'
7647                         },
7648                         range: [8, 16],
7649                         loc: {
7650                             start: { line: 1, column: 8 },
7651                             end: { line: 1, column: 16 }
7652                         }
7653                     },
7654                     range: [4, 16],
7655                     loc: {
7656                         start: { line: 1, column: 4 },
7657                         end: { line: 1, column: 16 }
7658                     }
7659                 }],
7660                 kind: 'var',
7661                 range: [0, 16],
7662                 loc: {
7663                     start: { line: 1, column: 0 },
7664                     end: { line: 1, column: 16 }
7665                 }
7666             }],
7667             range: [0, 16],
7668             loc: {
7669                 start: { line: 1, column: 0 },
7670                 end: { line: 1, column: 16 }
7671             },
7672             tokens: [{
7673                 type: 'Keyword',
7674                 value: 'var',
7675                 range: [0, 3],
7676                 loc: {
7677                     start: { line: 1, column: 0 },
7678                     end: { line: 1, column: 3 }
7679                 }
7680             }, {
7681                 type: 'Identifier',
7682                 value: 'x',
7683                 range: [4, 5],
7684                 loc: {
7685                     start: { line: 1, column: 4 },
7686                     end: { line: 1, column: 5 }
7687                 }
7688             }, {
7689                 type: 'Punctuator',
7690                 value: '=',
7691                 range: [6, 7],
7692                 loc: {
7693                     start: { line: 1, column: 6 },
7694                     end: { line: 1, column: 7 }
7695                 }
7696             }, {
7697                 type: 'RegularExpression',
7698                 value: '/[a-z]/u',
7699                 regex: {
7700                     pattern: '[a-z]',
7701                     flags: 'u'
7702                 },
7703                 range: [8, 16],
7704                 loc: {
7705                     start: { line: 1, column: 8 },
7706                     end: { line: 1, column: 16 }
7707                 }
7708             }]
7709         },
7710
7711         'var x = /[\\u{0000000000000061}-\\u{7A}]/u': {
7712             type: 'Program',
7713             body: [{
7714                 type: 'VariableDeclaration',
7715                 declarations: [{
7716                     type: 'VariableDeclarator',
7717                     id: {
7718                         type: 'Identifier',
7719                         name: 'x',
7720                         range: [4, 5],
7721                         loc: {
7722                             start: { line: 1, column: 4 },
7723                             end: { line: 1, column: 5 }
7724                         }
7725                     },
7726                     init: {
7727                         type: 'Literal',
7728                         value: null,
7729                         raw: '/[\\u{0000000000000061}-\\u{7A}]/u',
7730                         regex: {
7731                             pattern: '[\\u{0000000000000061}-\\u{7A}]',
7732                             flags: 'u'
7733                         },
7734                         range: [8, 40],
7735                         loc: {
7736                             start: { line: 1, column: 8 },
7737                             end: { line: 1, column: 40 }
7738                         }
7739                     },
7740                     range: [4, 40],
7741                     loc: {
7742                         start: { line: 1, column: 4 },
7743                         end: { line: 1, column: 40 }
7744                     }
7745                 }],
7746                 kind: 'var',
7747                 range: [0, 40],
7748                 loc: {
7749                     start: { line: 1, column: 0 },
7750                     end: { line: 1, column: 40 }
7751                 }
7752             }],
7753             range: [0, 40],
7754             loc: {
7755                 start: { line: 1, column: 0 },
7756                 end: { line: 1, column: 40 }
7757             },
7758             tokens: [{
7759                 type: 'Keyword',
7760                 value: 'var',
7761                 range: [0, 3],
7762                 loc: {
7763                     start: { line: 1, column: 0 },
7764                     end: { line: 1, column: 3 }
7765                 }
7766             }, {
7767                 type: 'Identifier',
7768                 value: 'x',
7769                 range: [4, 5],
7770                 loc: {
7771                     start: { line: 1, column: 4 },
7772                     end: { line: 1, column: 5 }
7773                 }
7774             }, {
7775                 type: 'Punctuator',
7776                 value: '=',
7777                 range: [6, 7],
7778                 loc: {
7779                     start: { line: 1, column: 6 },
7780                     end: { line: 1, column: 7 }
7781                 }
7782             }, {
7783                 type: 'RegularExpression',
7784                 value: '/[\\u{0000000000000061}-\\u{7A}]/u',
7785                 regex: {
7786                     pattern: '[\\u{0000000000000061}-\\u{7A}]',
7787                     flags: 'u'
7788                 },
7789                 range: [8, 40],
7790                 loc: {
7791                     start: { line: 1, column: 8 },
7792                     end: { line: 1, column: 40 }
7793                 }
7794             }]
7795         },
7796
7797         'var x = /\\u{110000}/u': {
7798             index: 21,
7799             lineNumber: 1,
7800             column: 22,
7801             message: 'Error: Line 1: Invalid regular expression'
7802         },
7803
7804         'var x = /[x-z]/i': {
7805             type: 'Program',
7806             body: [{
7807                 type: 'VariableDeclaration',
7808                 declarations: [{
7809                     type: 'VariableDeclarator',
7810                     id: {
7811                         type: 'Identifier',
7812                         name: 'x',
7813                         range: [4, 5]
7814                     },
7815                     init: {
7816                         type: 'Literal',
7817                         value: '/[x-z]/i',
7818                         raw: '/[x-z]/i',
7819                         regex: {
7820                             pattern: '[x-z]',
7821                             flags: 'i'
7822                         },
7823                         range: [8, 16]
7824                     },
7825                     range: [4, 16]
7826                 }],
7827                 kind: 'var',
7828                 range: [0, 16]
7829             }],
7830             range: [0, 16],
7831             tokens: [{
7832                 type: 'Keyword',
7833                 value: 'var',
7834                 range: [0, 3]
7835             }, {
7836                 type: 'Identifier',
7837                 value: 'x',
7838                 range: [4, 5]
7839             }, {
7840                 type: 'Punctuator',
7841                 value: '=',
7842                 range: [6, 7]
7843             }, {
7844                 type: 'RegularExpression',
7845                 value: '/[x-z]/i',
7846                 regex: {
7847                     pattern: '[x-z]',
7848                     flags: 'i'
7849                 },
7850                 range: [8, 16]
7851             }]
7852         },
7853
7854         'var x = /[a-c]/i': {
7855             type: 'Program',
7856             body: [{
7857                 type: 'VariableDeclaration',
7858                 declarations: [{
7859                     type: 'VariableDeclarator',
7860                     id: {
7861                         type: 'Identifier',
7862                         name: 'x',
7863                         loc: {
7864                             start: { line: 1, column: 4 },
7865                             end: { line: 1, column: 5 }
7866                         }
7867                     },
7868                     init: {
7869                         type: 'Literal',
7870                         value: '/[a-c]/i',
7871                         raw: '/[a-c]/i',
7872                         regex: {
7873                             pattern: '[a-c]',
7874                             flags: 'i'
7875                         },
7876                         loc: {
7877                             start: { line: 1, column: 8 },
7878                             end: { line: 1, column: 16 }
7879                         }
7880                     },
7881                     loc: {
7882                         start: { line: 1, column: 4 },
7883                         end: { line: 1, column: 16 }
7884                     }
7885                 }],
7886                 kind: 'var',
7887                 loc: {
7888                     start: { line: 1, column: 0 },
7889                     end: { line: 1, column: 16 }
7890                 }
7891             }],
7892             loc: {
7893                 start: { line: 1, column: 0 },
7894                 end: { line: 1, column: 16 }
7895             },
7896             tokens: [{
7897                 type: 'Keyword',
7898                 value: 'var',
7899                 loc: {
7900                     start: { line: 1, column: 0 },
7901                     end: { line: 1, column: 3 }
7902                 }
7903             }, {
7904                 type: 'Identifier',
7905                 value: 'x',
7906                 loc: {
7907                     start: { line: 1, column: 4 },
7908                     end: { line: 1, column: 5 }
7909                 }
7910             }, {
7911                 type: 'Punctuator',
7912                 value: '=',
7913                 loc: {
7914                     start: { line: 1, column: 6 },
7915                     end: { line: 1, column: 7 }
7916                 }
7917             }, {
7918                 type: 'RegularExpression',
7919                 value: '/[a-c]/i',
7920                 regex: {
7921                     pattern: '[a-c]',
7922                     flags: 'i'
7923                 },
7924                 loc: {
7925                     start: { line: 1, column: 8 },
7926                     end: { line: 1, column: 16 }
7927                 }
7928             }]
7929         },
7930
7931         'var x = /[P QR]/i': {
7932             type: 'Program',
7933             body: [{
7934                 type: 'VariableDeclaration',
7935                 declarations: [{
7936                     type: 'VariableDeclarator',
7937                     id: {
7938                         type: 'Identifier',
7939                         name: 'x',
7940                         range: [4, 5],
7941                         loc: {
7942                             start: { line: 1, column: 4 },
7943                             end: { line: 1, column: 5 }
7944                         }
7945                     },
7946                     init: {
7947                         type: 'Literal',
7948                         value: '/[P QR]/i',
7949                         raw: '/[P QR]/i',
7950                         regex: {
7951                             pattern: '[P QR]',
7952                             flags: 'i'
7953                         },
7954                         range: [8, 17],
7955                         loc: {
7956                             start: { line: 1, column: 8 },
7957                             end: { line: 1, column: 17 }
7958                         }
7959                     },
7960                     range: [4, 17],
7961                     loc: {
7962                         start: { line: 1, column: 4 },
7963                         end: { line: 1, column: 17 }
7964                     }
7965                 }],
7966                 kind: 'var',
7967                 range: [0, 17],
7968                 loc: {
7969                     start: { line: 1, column: 0 },
7970                     end: { line: 1, column: 17 }
7971                 }
7972             }],
7973             range: [0, 17],
7974             loc: {
7975                 start: { line: 1, column: 0 },
7976                 end: { line: 1, column: 17 }
7977             },
7978             tokens: [{
7979                 type: 'Keyword',
7980                 value: 'var',
7981                 range: [0, 3],
7982                 loc: {
7983                     start: { line: 1, column: 0 },
7984                     end: { line: 1, column: 3 }
7985                 }
7986             }, {
7987                 type: 'Identifier',
7988                 value: 'x',
7989                 range: [4, 5],
7990                 loc: {
7991                     start: { line: 1, column: 4 },
7992                     end: { line: 1, column: 5 }
7993                 }
7994             }, {
7995                 type: 'Punctuator',
7996                 value: '=',
7997                 range: [6, 7],
7998                 loc: {
7999                     start: { line: 1, column: 6 },
8000                     end: { line: 1, column: 7 }
8001                 }
8002             }, {
8003                 type: 'RegularExpression',
8004                 value: '/[P QR]/i',
8005                 regex: {
8006                     pattern: '[P QR]',
8007                     flags: 'i'
8008                 },
8009                 range: [8, 17],
8010                 loc: {
8011                     start: { line: 1, column: 8 },
8012                     end: { line: 1, column: 17 }
8013                 }
8014             }]
8015         },
8016
8017         'var x = /[\\]/]/': {
8018             type: 'Program',
8019             body: [{
8020                 type: 'VariableDeclaration',
8021                 declarations: [{
8022                     type: 'VariableDeclarator',
8023                     id: {
8024                         type: 'Identifier',
8025                         name: 'x',
8026                         range: [4, 5],
8027                         loc: {
8028                             start: { line: 1, column: 4 },
8029                             end: { line: 1, column: 5 }
8030                         }
8031                     },
8032                     init: {
8033                         type: 'Literal',
8034                         value: new RegExp('[\\]/]').toString(),
8035                         raw: '/[\\]/]/',
8036                         regex: {
8037                             pattern: '[\\]/]',
8038                             flags: ''
8039                         },
8040                         range: [8, 15],
8041                         loc: {
8042                             start: { line: 1, column: 8 },
8043                             end: { line: 1, column: 15 }
8044                         }
8045                     },
8046                     range: [4, 15],
8047                     loc: {
8048                         start: { line: 1, column: 4 },
8049                         end: { line: 1, column: 15 }
8050                     }
8051                 }],
8052                 kind: 'var',
8053                 range: [0, 15],
8054                 loc: {
8055                     start: { line: 1, column: 0 },
8056                     end: { line: 1, column: 15 }
8057                 }
8058             }],
8059             range: [0, 15],
8060             loc: {
8061                 start: { line: 1, column: 0 },
8062                 end: { line: 1, column: 15 }
8063             },
8064             tokens: [{
8065                 type: 'Keyword',
8066                 value: 'var',
8067                 range: [0, 3],
8068                 loc: {
8069                     start: { line: 1, column: 0 },
8070                     end: { line: 1, column: 3 }
8071                 }
8072             }, {
8073                 type: 'Identifier',
8074                 value: 'x',
8075                 range: [4, 5],
8076                 loc: {
8077                     start: { line: 1, column: 4 },
8078                     end: { line: 1, column: 5 }
8079                 }
8080             }, {
8081                 type: 'Punctuator',
8082                 value: '=',
8083                 range: [6, 7],
8084                 loc: {
8085                     start: { line: 1, column: 6 },
8086                     end: { line: 1, column: 7 }
8087                 }
8088             }, {
8089                 type: 'RegularExpression',
8090                 value: '/[\\]/]/',
8091                 regex: {
8092                     pattern: '[\\]/]',
8093                     flags: ''
8094                 },
8095                 range: [8, 15],
8096                 loc: {
8097                     start: { line: 1, column: 8 },
8098                     end: { line: 1, column: 15 }
8099                 }
8100             }]
8101         },
8102
8103         'var x = /foo\\/bar/': {
8104             type: 'Program',
8105             body: [{
8106                 type: 'VariableDeclaration',
8107                 declarations: [{
8108                     type: 'VariableDeclarator',
8109                     id: {
8110                         type: 'Identifier',
8111                         name: 'x',
8112                         range: [4, 5],
8113                         loc: {
8114                             start: { line: 1, column: 4 },
8115                             end: { line: 1, column: 5 }
8116                         }
8117                     },
8118                     init: {
8119                         type: 'Literal',
8120                         value: '/foo\\/bar/',
8121                         raw: '/foo\\/bar/',
8122                         regex: {
8123                             pattern: 'foo\\/bar',
8124                             flags: ''
8125                         },
8126                         range: [8, 18],
8127                         loc: {
8128                             start: { line: 1, column: 8 },
8129                             end: { line: 1, column: 18 }
8130                         }
8131                     },
8132                     range: [4, 18],
8133                     loc: {
8134                         start: { line: 1, column: 4 },
8135                         end: { line: 1, column: 18 }
8136                     }
8137                 }],
8138                 kind: 'var',
8139                 range: [0, 18],
8140                 loc: {
8141                     start: { line: 1, column: 0 },
8142                     end: { line: 1, column: 18 }
8143                 }
8144             }],
8145             range: [0, 18],
8146             loc: {
8147                 start: { line: 1, column: 0 },
8148                 end: { line: 1, column: 18 }
8149             },
8150             tokens: [{
8151                 type: 'Keyword',
8152                 value: 'var',
8153                 range: [0, 3],
8154                 loc: {
8155                     start: { line: 1, column: 0 },
8156                     end: { line: 1, column: 3 }
8157                 }
8158             }, {
8159                 type: 'Identifier',
8160                 value: 'x',
8161                 range: [4, 5],
8162                 loc: {
8163                     start: { line: 1, column: 4 },
8164                     end: { line: 1, column: 5 }
8165                 }
8166             }, {
8167                 type: 'Punctuator',
8168                 value: '=',
8169                 range: [6, 7],
8170                 loc: {
8171                     start: { line: 1, column: 6 },
8172                     end: { line: 1, column: 7 }
8173                 }
8174             }, {
8175                 type: 'RegularExpression',
8176                 value: '/foo\\/bar/',
8177                 regex: {
8178                     pattern: 'foo\\/bar',
8179                     flags: ''
8180                 },
8181                 range: [8, 18],
8182                 loc: {
8183                     start: { line: 1, column: 8 },
8184                     end: { line: 1, column: 18 }
8185                 }
8186             }]
8187         },
8188
8189         'var x = /=([^=\\s])+/g': {
8190             type: 'Program',
8191             body: [{
8192                 type: 'VariableDeclaration',
8193                 declarations: [{
8194                     type: 'VariableDeclarator',
8195                     id: {
8196                         type: 'Identifier',
8197                         name: 'x',
8198                         range: [4, 5],
8199                         loc: {
8200                             start: { line: 1, column: 4 },
8201                             end: { line: 1, column: 5 }
8202                         }
8203                     },
8204                     init: {
8205                         type: 'Literal',
8206                         value: '/=([^=\\s])+/g',
8207                         raw: '/=([^=\\s])+/g',
8208                         regex: {
8209                             pattern: '=([^=\\s])+',
8210                             flags: 'g'
8211                         },
8212                         range: [8, 21],
8213                         loc: {
8214                             start: { line: 1, column: 8 },
8215                             end: { line: 1, column: 21 }
8216                         }
8217                     },
8218                     range: [4, 21],
8219                     loc: {
8220                         start: { line: 1, column: 4 },
8221                         end: { line: 1, column: 21 }
8222                     }
8223                 }],
8224                 kind: 'var',
8225                 range: [0, 21],
8226                 loc: {
8227                     start: { line: 1, column: 0 },
8228                     end: { line: 1, column: 21 }
8229                 }
8230             }],
8231             range: [0, 21],
8232             loc: {
8233                 start: { line: 1, column: 0 },
8234                 end: { line: 1, column: 21 }
8235             },
8236             tokens: [{
8237                 type: 'Keyword',
8238                 value: 'var',
8239                 range: [0, 3],
8240                 loc: {
8241                     start: { line: 1, column: 0 },
8242                     end: { line: 1, column: 3 }
8243                 }
8244             }, {
8245                 type: 'Identifier',
8246                 value: 'x',
8247                 range: [4, 5],
8248                 loc: {
8249                     start: { line: 1, column: 4 },
8250                     end: { line: 1, column: 5 }
8251                 }
8252             }, {
8253                 type: 'Punctuator',
8254                 value: '=',
8255                 range: [6, 7],
8256                 loc: {
8257                     start: { line: 1, column: 6 },
8258                     end: { line: 1, column: 7 }
8259                 }
8260             }, {
8261                 type: 'RegularExpression',
8262                 value: '/=([^=\\s])+/g',
8263                 regex: {
8264                     pattern: '=([^=\\s])+',
8265                     flags: 'g'
8266                 },
8267                 range: [8, 21],
8268                 loc: {
8269                     start: { line: 1, column: 8 },
8270                     end: { line: 1, column: 21 }
8271                 }
8272             }]
8273         },
8274
8275         'var x = /42/g.test': {
8276             type: 'VariableDeclaration',
8277             declarations: [{
8278                 type: 'VariableDeclarator',
8279                 id: {
8280                     type: 'Identifier',
8281                     name: 'x',
8282                     range: [4, 5],
8283                     loc: {
8284                         start: { line: 1, column: 4 },
8285                         end: { line: 1, column: 5 }
8286                     }
8287                 },
8288                 init: {
8289                     type: 'MemberExpression',
8290                     computed: false,
8291                     object: {
8292                         type: 'Literal',
8293                         value: '/42/g',
8294                         raw: '/42/g',
8295                         regex: {
8296                             pattern: '42',
8297                             flags: 'g'
8298                         },
8299                         range: [8, 13],
8300                         loc: {
8301                             start: { line: 1, column: 8 },
8302                             end: { line: 1, column: 13 }
8303                         }
8304                     },
8305                     property: {
8306                         type: 'Identifier',
8307                         name: 'test',
8308                         range: [14, 18],
8309                         loc: {
8310                             start: { line: 1, column: 14 },
8311                             end: { line: 1, column: 18 }
8312                         }
8313                     },
8314                     range: [8, 18],
8315                     loc: {
8316                         start: { line: 1, column: 8 },
8317                         end: { line: 1, column: 18 }
8318                     }
8319                 },
8320                 range: [4, 18],
8321                 loc: {
8322                     start: { line: 1, column: 4 },
8323                     end: { line: 1, column: 18 }
8324                 }
8325             }],
8326             kind: 'var',
8327             range: [0, 18],
8328             loc: {
8329                 start: { line: 1, column: 0 },
8330                 end: { line: 1, column: 18 }
8331             }
8332         }
8333
8334     },
8335
8336     'Left-Hand-Side Expression': {
8337
8338         'new Button': {
8339             type: 'ExpressionStatement',
8340             expression: {
8341                 type: 'NewExpression',
8342                 callee: {
8343                     type: 'Identifier',
8344                     name: 'Button',
8345                     range: [4, 10],
8346                     loc: {
8347                         start: { line: 1, column: 4 },
8348                         end: { line: 1, column: 10 }
8349                     }
8350                 },
8351                 'arguments': [],
8352                 range: [0, 10],
8353                 loc: {
8354                     start: { line: 1, column: 0 },
8355                     end: { line: 1, column: 10 }
8356                 }
8357             },
8358             range: [0, 10],
8359             loc: {
8360                 start: { line: 1, column: 0 },
8361                 end: { line: 1, column: 10 }
8362             }
8363         },
8364
8365         'new Button()': {
8366             type: 'ExpressionStatement',
8367             expression: {
8368                 type: 'NewExpression',
8369                 callee: {
8370                     type: 'Identifier',
8371                     name: 'Button',
8372                     range: [4, 10],
8373                     loc: {
8374                         start: { line: 1, column: 4 },
8375                         end: { line: 1, column: 10 }
8376                     }
8377                 },
8378                 'arguments': [],
8379                 range: [0, 12],
8380                 loc: {
8381                     start: { line: 1, column: 0 },
8382                     end: { line: 1, column: 12 }
8383                 }
8384             },
8385             range: [0, 12],
8386             loc: {
8387                 start: { line: 1, column: 0 },
8388                 end: { line: 1, column: 12 }
8389             }
8390         },
8391
8392         'new new foo': {
8393             type: 'ExpressionStatement',
8394             expression: {
8395                 type: 'NewExpression',
8396                 callee: {
8397                     type: 'NewExpression',
8398                     callee: {
8399                         type: 'Identifier',
8400                         name: 'foo',
8401                         range: [8, 11],
8402                         loc: {
8403                             start: { line: 1, column: 8 },
8404                             end: { line: 1, column: 11 }
8405                         }
8406                     },
8407                     'arguments': [],
8408                     range: [4, 11],
8409                     loc: {
8410                         start: { line: 1, column: 4 },
8411                         end: { line: 1, column: 11 }
8412                     }
8413                 },
8414                 'arguments': [],
8415                 range: [0, 11],
8416                 loc: {
8417                     start: { line: 1, column: 0 },
8418                     end: { line: 1, column: 11 }
8419                 }
8420             },
8421             range: [0, 11],
8422             loc: {
8423                 start: { line: 1, column: 0 },
8424                 end: { line: 1, column: 11 }
8425             }
8426         },
8427
8428         'new new foo()': {
8429             type: 'ExpressionStatement',
8430             expression: {
8431                 type: 'NewExpression',
8432                 callee: {
8433                     type: 'NewExpression',
8434                     callee: {
8435                         type: 'Identifier',
8436                         name: 'foo',
8437                         range: [8, 11],
8438                         loc: {
8439                             start: { line: 1, column: 8 },
8440                             end: { line: 1, column: 11 }
8441                         }
8442                     },
8443                     'arguments': [],
8444                     range: [4, 13],
8445                     loc: {
8446                         start: { line: 1, column: 4 },
8447                         end: { line: 1, column: 13 }
8448                     }
8449                 },
8450                 'arguments': [],
8451                 range: [0, 13],
8452                 loc: {
8453                     start: { line: 1, column: 0 },
8454                     end: { line: 1, column: 13 }
8455                 }
8456             },
8457             range: [0, 13],
8458             loc: {
8459                 start: { line: 1, column: 0 },
8460                 end: { line: 1, column: 13 }
8461             }
8462         },
8463
8464         'new foo().bar()': {
8465             type: 'ExpressionStatement',
8466             expression: {
8467                 type: 'CallExpression',
8468                 callee: {
8469                     type: 'MemberExpression',
8470                     computed: false,
8471                     object: {
8472                         type: 'NewExpression',
8473                         callee: {
8474                             type: 'Identifier',
8475                             name: 'foo',
8476                             range: [4, 7],
8477                             loc: {
8478                                 start: { line: 1, column: 4 },
8479                                 end: { line: 1, column: 7 }
8480                             }
8481                         },
8482                         'arguments': [],
8483                         range: [0, 9],
8484                         loc: {
8485                             start: { line: 1, column: 0 },
8486                             end: { line: 1, column: 9 }
8487                         }
8488                     },
8489                     property: {
8490                         type: 'Identifier',
8491                         name: 'bar',
8492                         range: [10, 13],
8493                         loc: {
8494                             start: { line: 1, column: 10 },
8495                             end: { line: 1, column: 13 }
8496                         }
8497                     },
8498                     range: [0, 13],
8499                     loc: {
8500                         start: { line: 1, column: 0 },
8501                         end: { line: 1, column: 13 }
8502                     }
8503                 },
8504                 'arguments': [],
8505                 range: [0, 15],
8506                 loc: {
8507                     start: { line: 1, column: 0 },
8508                     end: { line: 1, column: 15 }
8509                 }
8510             },
8511             range: [0, 15],
8512             loc: {
8513                 start: { line: 1, column: 0 },
8514                 end: { line: 1, column: 15 }
8515             }
8516         },
8517
8518         'new foo[bar]': {
8519             type: 'ExpressionStatement',
8520             expression: {
8521                 type: 'NewExpression',
8522                 callee: {
8523                     type: 'MemberExpression',
8524                     computed: true,
8525                     object: {
8526                         type: 'Identifier',
8527                         name: 'foo',
8528                         range: [4, 7],
8529                         loc: {
8530                             start: { line: 1, column: 4 },
8531                             end: { line: 1, column: 7 }
8532                         }
8533                     },
8534                     property: {
8535                         type: 'Identifier',
8536                         name: 'bar',
8537                         range: [8, 11],
8538                         loc: {
8539                             start: { line: 1, column: 8 },
8540                             end: { line: 1, column: 11 }
8541                         }
8542                     },
8543                     range: [4, 12],
8544                     loc: {
8545                         start: { line: 1, column: 4 },
8546                         end: { line: 1, column: 12 }
8547                     }
8548                 },
8549                 'arguments': [],
8550                 range: [0, 12],
8551                 loc: {
8552                     start: { line: 1, column: 0 },
8553                     end: { line: 1, column: 12 }
8554                 }
8555             },
8556             range: [0, 12],
8557             loc: {
8558                 start: { line: 1, column: 0 },
8559                 end: { line: 1, column: 12 }
8560             }
8561         },
8562
8563         'new foo.bar()': {
8564             type: 'ExpressionStatement',
8565             expression: {
8566                 type: 'NewExpression',
8567                 callee: {
8568                     type: 'MemberExpression',
8569                     computed: false,
8570                     object: {
8571                         type: 'Identifier',
8572                         name: 'foo',
8573                         range: [4, 7],
8574                         loc: {
8575                             start: { line: 1, column: 4 },
8576                             end: { line: 1, column: 7 }
8577                         }
8578                     },
8579                     property: {
8580                         type: 'Identifier',
8581                         name: 'bar',
8582                         range: [8, 11],
8583                         loc: {
8584                             start: { line: 1, column: 8 },
8585                             end: { line: 1, column: 11 }
8586                         }
8587                     },
8588                     range: [4, 11],
8589                     loc: {
8590                         start: { line: 1, column: 4 },
8591                         end: { line: 1, column: 11 }
8592                     }
8593                 },
8594                 'arguments': [],
8595                 range: [0, 13],
8596                 loc: {
8597                     start: { line: 1, column: 0 },
8598                     end: { line: 1, column: 13 }
8599                 }
8600             },
8601             range: [0, 13],
8602             loc: {
8603                 start: { line: 1, column: 0 },
8604                 end: { line: 1, column: 13 }
8605             }
8606         },
8607
8608         '( new foo).bar()': {
8609             type: 'ExpressionStatement',
8610             expression: {
8611                 type: 'CallExpression',
8612                 callee: {
8613                     type: 'MemberExpression',
8614                     computed: false,
8615                     object: {
8616                         type: 'NewExpression',
8617                         callee: {
8618                             type: 'Identifier',
8619                             name: 'foo',
8620                             range: [6, 9],
8621                             loc: {
8622                                 start: { line: 1, column: 6 },
8623                                 end: { line: 1, column: 9 }
8624                             }
8625                         },
8626                         'arguments': [],
8627                         range: [2, 9],
8628                         loc: {
8629                             start: { line: 1, column: 2 },
8630                             end: { line: 1, column: 9 }
8631                         }
8632                     },
8633                     property: {
8634                         type: 'Identifier',
8635                         name: 'bar',
8636                         range: [11, 14],
8637                         loc: {
8638                             start: { line: 1, column: 11 },
8639                             end: { line: 1, column: 14 }
8640                         }
8641                     },
8642                     range: [0, 14],
8643                     loc: {
8644                         start: { line: 1, column: 0 },
8645                         end: { line: 1, column: 14 }
8646                     }
8647                 },
8648                 'arguments': [],
8649                 range: [0, 16],
8650                 loc: {
8651                     start: { line: 1, column: 0 },
8652                     end: { line: 1, column: 16 }
8653                 }
8654             },
8655             range: [0, 16],
8656             loc: {
8657                 start: { line: 1, column: 0 },
8658                 end: { line: 1, column: 16 }
8659             }
8660         },
8661
8662         'foo(bar, baz)': {
8663             type: 'ExpressionStatement',
8664             expression: {
8665                 type: 'CallExpression',
8666                 callee: {
8667                     type: 'Identifier',
8668                     name: 'foo',
8669                     range: [0, 3],
8670                     loc: {
8671                         start: { line: 1, column: 0 },
8672                         end: { line: 1, column: 3 }
8673                     }
8674                 },
8675                 'arguments': [{
8676                     type: 'Identifier',
8677                     name: 'bar',
8678                     range: [4, 7],
8679                     loc: {
8680                         start: { line: 1, column: 4 },
8681                         end: { line: 1, column: 7 }
8682                     }
8683                 }, {
8684                     type: 'Identifier',
8685                     name: 'baz',
8686                     range: [9, 12],
8687                     loc: {
8688                         start: { line: 1, column: 9 },
8689                         end: { line: 1, column: 12 }
8690                     }
8691                 }],
8692                 range: [0, 13],
8693                 loc: {
8694                     start: { line: 1, column: 0 },
8695                     end: { line: 1, column: 13 }
8696                 }
8697             },
8698             range: [0, 13],
8699             loc: {
8700                 start: { line: 1, column: 0 },
8701                 end: { line: 1, column: 13 }
8702             }
8703         },
8704
8705         '(    foo  )()': {
8706             type: 'ExpressionStatement',
8707             expression: {
8708                 type: 'CallExpression',
8709                 callee: {
8710                     type: 'Identifier',
8711                     name: 'foo',
8712                     range: [5, 8],
8713                     loc: {
8714                         start: { line: 1, column: 5 },
8715                         end: { line: 1, column: 8 }
8716                     }
8717                 },
8718                 'arguments': [],
8719                 range: [0, 13],
8720                 loc: {
8721                     start: { line: 1, column: 0 },
8722                     end: { line: 1, column: 13 }
8723                 }
8724             },
8725             range: [0, 13],
8726             loc: {
8727                 start: { line: 1, column: 0 },
8728                 end: { line: 1, column: 13 }
8729             }
8730         },
8731
8732         'universe.milkyway': {
8733             type: 'ExpressionStatement',
8734             expression: {
8735                 type: 'MemberExpression',
8736                 computed: false,
8737                 object: {
8738                     type: 'Identifier',
8739                     name: 'universe',
8740                     range: [0, 8],
8741                     loc: {
8742                         start: { line: 1, column: 0 },
8743                         end: { line: 1, column: 8 }
8744                     }
8745                 },
8746                 property: {
8747                     type: 'Identifier',
8748                     name: 'milkyway',
8749                     range: [9, 17],
8750                     loc: {
8751                         start: { line: 1, column: 9 },
8752                         end: { line: 1, column: 17 }
8753                     }
8754                 },
8755                 range: [0, 17],
8756                 loc: {
8757                     start: { line: 1, column: 0 },
8758                     end: { line: 1, column: 17 }
8759                 }
8760             },
8761             range: [0, 17],
8762             loc: {
8763                 start: { line: 1, column: 0 },
8764                 end: { line: 1, column: 17 }
8765             }
8766         },
8767
8768         'universe.milkyway.solarsystem': {
8769             type: 'ExpressionStatement',
8770             expression: {
8771                 type: 'MemberExpression',
8772                 computed: false,
8773                 object: {
8774                     type: 'MemberExpression',
8775                     computed: false,
8776                     object: {
8777                         type: 'Identifier',
8778                         name: 'universe',
8779                         range: [0, 8],
8780                         loc: {
8781                             start: { line: 1, column: 0 },
8782                             end: { line: 1, column: 8 }
8783                         }
8784                     },
8785                     property: {
8786                         type: 'Identifier',
8787                         name: 'milkyway',
8788                         range: [9, 17],
8789                         loc: {
8790                             start: { line: 1, column: 9 },
8791                             end: { line: 1, column: 17 }
8792                         }
8793                     },
8794                     range: [0, 17],
8795                     loc: {
8796                         start: { line: 1, column: 0 },
8797                         end: { line: 1, column: 17 }
8798                     }
8799                 },
8800                 property: {
8801                     type: 'Identifier',
8802                     name: 'solarsystem',
8803                     range: [18, 29],
8804                     loc: {
8805                         start: { line: 1, column: 18 },
8806                         end: { line: 1, column: 29 }
8807                     }
8808                 },
8809                 range: [0, 29],
8810                 loc: {
8811                     start: { line: 1, column: 0 },
8812                     end: { line: 1, column: 29 }
8813                 }
8814             },
8815             range: [0, 29],
8816             loc: {
8817                 start: { line: 1, column: 0 },
8818                 end: { line: 1, column: 29 }
8819             }
8820         },
8821
8822         'universe.milkyway.solarsystem.Earth': {
8823             type: 'ExpressionStatement',
8824             expression: {
8825                 type: 'MemberExpression',
8826                 computed: false,
8827                 object: {
8828                     type: 'MemberExpression',
8829                     computed: false,
8830                     object: {
8831                         type: 'MemberExpression',
8832                         computed: false,
8833                         object: {
8834                             type: 'Identifier',
8835                             name: 'universe',
8836                             range: [0, 8],
8837                             loc: {
8838                                 start: { line: 1, column: 0 },
8839                                 end: { line: 1, column: 8 }
8840                             }
8841                         },
8842                         property: {
8843                             type: 'Identifier',
8844                             name: 'milkyway',
8845                             range: [9, 17],
8846                             loc: {
8847                                 start: { line: 1, column: 9 },
8848                                 end: { line: 1, column: 17 }
8849                             }
8850                         },
8851                         range: [0, 17],
8852                         loc: {
8853                             start: { line: 1, column: 0 },
8854                             end: { line: 1, column: 17 }
8855                         }
8856                     },
8857                     property: {
8858                         type: 'Identifier',
8859                         name: 'solarsystem',
8860                         range: [18, 29],
8861                         loc: {
8862                             start: { line: 1, column: 18 },
8863                             end: { line: 1, column: 29 }
8864                         }
8865                     },
8866                     range: [0, 29],
8867                     loc: {
8868                         start: { line: 1, column: 0 },
8869                         end: { line: 1, column: 29 }
8870                     }
8871                 },
8872                 property: {
8873                     type: 'Identifier',
8874                     name: 'Earth',
8875                     range: [30, 35],
8876                     loc: {
8877                         start: { line: 1, column: 30 },
8878                         end: { line: 1, column: 35 }
8879                     }
8880                 },
8881                 range: [0, 35],
8882                 loc: {
8883                     start: { line: 1, column: 0 },
8884                     end: { line: 1, column: 35 }
8885                 }
8886             },
8887             range: [0, 35],
8888             loc: {
8889                 start: { line: 1, column: 0 },
8890                 end: { line: 1, column: 35 }
8891             }
8892         },
8893
8894         'universe[galaxyName, otherUselessName]': {
8895             type: 'ExpressionStatement',
8896             expression: {
8897                 type: 'MemberExpression',
8898                 computed: true,
8899                 object: {
8900                     type: 'Identifier',
8901                     name: 'universe',
8902                     range: [0, 8],
8903                     loc: {
8904                         start: { line: 1, column: 0 },
8905                         end: { line: 1, column: 8 }
8906                     }
8907                 },
8908                 property: {
8909                     type: 'SequenceExpression',
8910                     expressions: [{
8911                         type: 'Identifier',
8912                         name: 'galaxyName',
8913                         range: [9, 19],
8914                         loc: {
8915                             start: { line: 1, column: 9 },
8916                             end: { line: 1, column: 19 }
8917                         }
8918                     }, {
8919                         type: 'Identifier',
8920                         name: 'otherUselessName',
8921                         range: [21, 37],
8922                         loc: {
8923                             start: { line: 1, column: 21 },
8924                             end: { line: 1, column: 37 }
8925                         }
8926                     }],
8927                     range: [9, 37],
8928                     loc: {
8929                         start: { line: 1, column: 9 },
8930                         end: { line: 1, column: 37 }
8931                     }
8932                 },
8933                 range: [0, 38],
8934                 loc: {
8935                     start: { line: 1, column: 0 },
8936                     end: { line: 1, column: 38 }
8937                 }
8938             },
8939             range: [0, 38],
8940             loc: {
8941                 start: { line: 1, column: 0 },
8942                 end: { line: 1, column: 38 }
8943             }
8944         },
8945
8946         'universe[galaxyName]': {
8947             type: 'ExpressionStatement',
8948             expression: {
8949                 type: 'MemberExpression',
8950                 computed: true,
8951                 object: {
8952                     type: 'Identifier',
8953                     name: 'universe',
8954                     range: [0, 8],
8955                     loc: {
8956                         start: { line: 1, column: 0 },
8957                         end: { line: 1, column: 8 }
8958                     }
8959                 },
8960                 property: {
8961                     type: 'Identifier',
8962                     name: 'galaxyName',
8963                     range: [9, 19],
8964                     loc: {
8965                         start: { line: 1, column: 9 },
8966                         end: { line: 1, column: 19 }
8967                     }
8968                 },
8969                 range: [0, 20],
8970                 loc: {
8971                     start: { line: 1, column: 0 },
8972                     end: { line: 1, column: 20 }
8973                 }
8974             },
8975             range: [0, 20],
8976             loc: {
8977                 start: { line: 1, column: 0 },
8978                 end: { line: 1, column: 20 }
8979             }
8980         },
8981
8982         'universe[42].galaxies': {
8983             type: 'ExpressionStatement',
8984             expression: {
8985                 type: 'MemberExpression',
8986                 computed: false,
8987                 object: {
8988                     type: 'MemberExpression',
8989                     computed: true,
8990                     object: {
8991                         type: 'Identifier',
8992                         name: 'universe',
8993                         range: [0, 8],
8994                         loc: {
8995                             start: { line: 1, column: 0 },
8996                             end: { line: 1, column: 8 }
8997                         }
8998                     },
8999                     property: {
9000                         type: 'Literal',
9001                         value: 42,
9002                         raw: '42',
9003                         range: [9, 11],
9004                         loc: {
9005                             start: { line: 1, column: 9 },
9006                             end: { line: 1, column: 11 }
9007                         }
9008                     },
9009                     range: [0, 12],
9010                     loc: {
9011                         start: { line: 1, column: 0 },
9012                         end: { line: 1, column: 12 }
9013                     }
9014                 },
9015                 property: {
9016                     type: 'Identifier',
9017                     name: 'galaxies',
9018                     range: [13, 21],
9019                     loc: {
9020                         start: { line: 1, column: 13 },
9021                         end: { line: 1, column: 21 }
9022                     }
9023                 },
9024                 range: [0, 21],
9025                 loc: {
9026                     start: { line: 1, column: 0 },
9027                     end: { line: 1, column: 21 }
9028                 }
9029             },
9030             range: [0, 21],
9031             loc: {
9032                 start: { line: 1, column: 0 },
9033                 end: { line: 1, column: 21 }
9034             }
9035         },
9036
9037         'universe(42).galaxies': {
9038             type: 'ExpressionStatement',
9039             expression: {
9040                 type: 'MemberExpression',
9041                 computed: false,
9042                 object: {
9043                     type: 'CallExpression',
9044                     callee: {
9045                         type: 'Identifier',
9046                         name: 'universe',
9047                         range: [0, 8],
9048                         loc: {
9049                             start: { line: 1, column: 0 },
9050                             end: { line: 1, column: 8 }
9051                         }
9052                     },
9053                     'arguments': [{
9054                         type: 'Literal',
9055                         value: 42,
9056                         raw: '42',
9057                         range: [9, 11],
9058                         loc: {
9059                             start: { line: 1, column: 9 },
9060                             end: { line: 1, column: 11 }
9061                         }
9062                     }],
9063                     range: [0, 12],
9064                     loc: {
9065                         start: { line: 1, column: 0 },
9066                         end: { line: 1, column: 12 }
9067                     }
9068                 },
9069                 property: {
9070                     type: 'Identifier',
9071                     name: 'galaxies',
9072                     range: [13, 21],
9073                     loc: {
9074                         start: { line: 1, column: 13 },
9075                         end: { line: 1, column: 21 }
9076                     }
9077                 },
9078                 range: [0, 21],
9079                 loc: {
9080                     start: { line: 1, column: 0 },
9081                     end: { line: 1, column: 21 }
9082                 }
9083             },
9084             range: [0, 21],
9085             loc: {
9086                 start: { line: 1, column: 0 },
9087                 end: { line: 1, column: 21 }
9088             }
9089         },
9090
9091         'universe(42).galaxies(14, 3, 77).milkyway': {
9092             type: 'ExpressionStatement',
9093             expression: {
9094                 type: 'MemberExpression',
9095                 computed: false,
9096                 object: {
9097                     type: 'CallExpression',
9098                     callee: {
9099                         type: 'MemberExpression',
9100                         computed: false,
9101                         object: {
9102                             type: 'CallExpression',
9103                             callee: {
9104                                 type: 'Identifier',
9105                                 name: 'universe',
9106                                 range: [0, 8],
9107                                 loc: {
9108                                     start: { line: 1, column: 0 },
9109                                     end: { line: 1, column: 8 }
9110                                 }
9111                             },
9112                             'arguments': [{
9113                                 type: 'Literal',
9114                                 value: 42,
9115                                 raw: '42',
9116                                 range: [9, 11],
9117                                 loc: {
9118                                     start: { line: 1, column: 9 },
9119                                     end: { line: 1, column: 11 }
9120                                 }
9121                             }],
9122                             range: [0, 12],
9123                             loc: {
9124                                 start: { line: 1, column: 0 },
9125                                 end: { line: 1, column: 12 }
9126                             }
9127                         },
9128                         property: {
9129                             type: 'Identifier',
9130                             name: 'galaxies',
9131                             range: [13, 21],
9132                             loc: {
9133                                 start: { line: 1, column: 13 },
9134                                 end: { line: 1, column: 21 }
9135                             }
9136                         },
9137                         range: [0, 21],
9138                         loc: {
9139                             start: { line: 1, column: 0 },
9140                             end: { line: 1, column: 21 }
9141                         }
9142                     },
9143                     'arguments': [{
9144                         type: 'Literal',
9145                         value: 14,
9146                         raw: '14',
9147                         range: [22, 24],
9148                         loc: {
9149                             start: { line: 1, column: 22 },
9150                             end: { line: 1, column: 24 }
9151                         }
9152                     }, {
9153                         type: 'Literal',
9154                         value: 3,
9155                         raw: '3',
9156                         range: [26, 27],
9157                         loc: {
9158                             start: { line: 1, column: 26 },
9159                             end: { line: 1, column: 27 }
9160                         }
9161                     }, {
9162                         type: 'Literal',
9163                         value: 77,
9164                         raw: '77',
9165                         range: [29, 31],
9166                         loc: {
9167                             start: { line: 1, column: 29 },
9168                             end: { line: 1, column: 31 }
9169                         }
9170                     }],
9171                     range: [0, 32],
9172                     loc: {
9173                         start: { line: 1, column: 0 },
9174                         end: { line: 1, column: 32 }
9175                     }
9176                 },
9177                 property: {
9178                     type: 'Identifier',
9179                     name: 'milkyway',
9180                     range: [33, 41],
9181                     loc: {
9182                         start: { line: 1, column: 33 },
9183                         end: { line: 1, column: 41 }
9184                     }
9185                 },
9186                 range: [0, 41],
9187                 loc: {
9188                     start: { line: 1, column: 0 },
9189                     end: { line: 1, column: 41 }
9190                 }
9191             },
9192             range: [0, 41],
9193             loc: {
9194                 start: { line: 1, column: 0 },
9195                 end: { line: 1, column: 41 }
9196             }
9197         },
9198
9199         'earth.asia.Indonesia.prepareForElection(2014)': {
9200             type: 'ExpressionStatement',
9201             expression: {
9202                 type: 'CallExpression',
9203                 callee: {
9204                     type: 'MemberExpression',
9205                     computed: false,
9206                     object: {
9207                         type: 'MemberExpression',
9208                         computed: false,
9209                         object: {
9210                             type: 'MemberExpression',
9211                             computed: false,
9212                             object: {
9213                                 type: 'Identifier',
9214                                 name: 'earth',
9215                                 range: [0, 5],
9216                                 loc: {
9217                                     start: { line: 1, column: 0 },
9218                                     end: { line: 1, column: 5 }
9219                                 }
9220                             },
9221                             property: {
9222                                 type: 'Identifier',
9223                                 name: 'asia',
9224                                 range: [6, 10],
9225                                 loc: {
9226                                     start: { line: 1, column: 6 },
9227                                     end: { line: 1, column: 10 }
9228                                 }
9229                             },
9230                             range: [0, 10],
9231                             loc: {
9232                                 start: { line: 1, column: 0 },
9233                                 end: { line: 1, column: 10 }
9234                             }
9235                         },
9236                         property: {
9237                             type: 'Identifier',
9238                             name: 'Indonesia',
9239                             range: [11, 20],
9240                             loc: {
9241                                 start: { line: 1, column: 11 },
9242                                 end: { line: 1, column: 20 }
9243                             }
9244                         },
9245                         range: [0, 20],
9246                         loc: {
9247                             start: { line: 1, column: 0 },
9248                             end: { line: 1, column: 20 }
9249                         }
9250                     },
9251                     property: {
9252                         type: 'Identifier',
9253                         name: 'prepareForElection',
9254                         range: [21, 39],
9255                         loc: {
9256                             start: { line: 1, column: 21 },
9257                             end: { line: 1, column: 39 }
9258                         }
9259                     },
9260                     range: [0, 39],
9261                     loc: {
9262                         start: { line: 1, column: 0 },
9263                         end: { line: 1, column: 39 }
9264                     }
9265                 },
9266                 'arguments': [{
9267                     type: 'Literal',
9268                     value: 2014,
9269                     raw: '2014',
9270                     range: [40, 44],
9271                     loc: {
9272                         start: { line: 1, column: 40 },
9273                         end: { line: 1, column: 44 }
9274                     }
9275                 }],
9276                 range: [0, 45],
9277                 loc: {
9278                     start: { line: 1, column: 0 },
9279                     end: { line: 1, column: 45 }
9280                 }
9281             },
9282             range: [0, 45],
9283             loc: {
9284                 start: { line: 1, column: 0 },
9285                 end: { line: 1, column: 45 }
9286             }
9287         },
9288
9289         'universe.if': {
9290             type: 'ExpressionStatement',
9291             expression: {
9292                 type: 'MemberExpression',
9293                 computed: false,
9294                 object: {
9295                     type: 'Identifier',
9296                     name: 'universe',
9297                     range: [0, 8],
9298                     loc: {
9299                         start: { line: 1, column: 0 },
9300                         end: { line: 1, column: 8 }
9301                     }
9302                 },
9303                 property: {
9304                     type: 'Identifier',
9305                     name: 'if',
9306                     range: [9, 11],
9307                     loc: {
9308                         start: { line: 1, column: 9 },
9309                         end: { line: 1, column: 11 }
9310                     }
9311                 },
9312                 range: [0, 11],
9313                 loc: {
9314                     start: { line: 1, column: 0 },
9315                     end: { line: 1, column: 11 }
9316                 }
9317             },
9318             range: [0, 11],
9319             loc: {
9320                 start: { line: 1, column: 0 },
9321                 end: { line: 1, column: 11 }
9322             }
9323         },
9324
9325         'universe.true': {
9326             type: 'ExpressionStatement',
9327             expression: {
9328                 type: 'MemberExpression',
9329                 computed: false,
9330                 object: {
9331                     type: 'Identifier',
9332                     name: 'universe',
9333                     range: [0, 8],
9334                     loc: {
9335                         start: { line: 1, column: 0 },
9336                         end: { line: 1, column: 8 }
9337                     }
9338                 },
9339                 property: {
9340                     type: 'Identifier',
9341                     name: 'true',
9342                     range: [9, 13],
9343                     loc: {
9344                         start: { line: 1, column: 9 },
9345                         end: { line: 1, column: 13 }
9346                     }
9347                 },
9348                 range: [0, 13],
9349                 loc: {
9350                     start: { line: 1, column: 0 },
9351                     end: { line: 1, column: 13 }
9352                 }
9353             },
9354             range: [0, 13],
9355             loc: {
9356                 start: { line: 1, column: 0 },
9357                 end: { line: 1, column: 13 }
9358             }
9359         },
9360
9361         'universe.false': {
9362             type: 'ExpressionStatement',
9363             expression: {
9364                 type: 'MemberExpression',
9365                 computed: false,
9366                 object: {
9367                     type: 'Identifier',
9368                     name: 'universe',
9369                     range: [0, 8],
9370                     loc: {
9371                         start: { line: 1, column: 0 },
9372                         end: { line: 1, column: 8 }
9373                     }
9374                 },
9375                 property: {
9376                     type: 'Identifier',
9377                     name: 'false',
9378                     range: [9, 14],
9379                     loc: {
9380                         start: { line: 1, column: 9 },
9381                         end: { line: 1, column: 14 }
9382                     }
9383                 },
9384                 range: [0, 14],
9385                 loc: {
9386                     start: { line: 1, column: 0 },
9387                     end: { line: 1, column: 14 }
9388                 }
9389             },
9390             range: [0, 14],
9391             loc: {
9392                 start: { line: 1, column: 0 },
9393                 end: { line: 1, column: 14 }
9394             }
9395         },
9396
9397         'universe.null': {
9398             type: 'ExpressionStatement',
9399             expression: {
9400                 type: 'MemberExpression',
9401                 computed: false,
9402                 object: {
9403                     type: 'Identifier',
9404                     name: 'universe',
9405                     range: [0, 8],
9406                     loc: {
9407                         start: { line: 1, column: 0 },
9408                         end: { line: 1, column: 8 }
9409                     }
9410                 },
9411                 property: {
9412                     type: 'Identifier',
9413                     name: 'null',
9414                     range: [9, 13],
9415                     loc: {
9416                         start: { line: 1, column: 9 },
9417                         end: { line: 1, column: 13 }
9418                     }
9419                 },
9420                 range: [0, 13],
9421                 loc: {
9422                     start: { line: 1, column: 0 },
9423                     end: { line: 1, column: 13 }
9424                 }
9425             },
9426             range: [0, 13],
9427             loc: {
9428                 start: { line: 1, column: 0 },
9429                 end: { line: 1, column: 13 }
9430             }
9431         }
9432
9433     },
9434
9435     'Postfix Expressions': {
9436
9437         'x++': {
9438             type: 'ExpressionStatement',
9439             expression: {
9440                 type: 'UpdateExpression',
9441                 operator: '++',
9442                 argument: {
9443                     type: 'Identifier',
9444                     name: 'x',
9445                     range: [0, 1],
9446                     loc: {
9447                         start: { line: 1, column: 0 },
9448                         end: { line: 1, column: 1 }
9449                     }
9450                 },
9451                 prefix: false,
9452                 range: [0, 3],
9453                 loc: {
9454                     start: { line: 1, column: 0 },
9455                     end: { line: 1, column: 3 }
9456                 }
9457             },
9458             range: [0, 3],
9459             loc: {
9460                 start: { line: 1, column: 0 },
9461                 end: { line: 1, column: 3 }
9462             }
9463         },
9464
9465         'x--': {
9466             type: 'ExpressionStatement',
9467             expression: {
9468                 type: 'UpdateExpression',
9469                 operator: '--',
9470                 argument: {
9471                     type: 'Identifier',
9472                     name: 'x',
9473                     range: [0, 1],
9474                     loc: {
9475                         start: { line: 1, column: 0 },
9476                         end: { line: 1, column: 1 }
9477                     }
9478                 },
9479                 prefix: false,
9480                 range: [0, 3],
9481                 loc: {
9482                     start: { line: 1, column: 0 },
9483                     end: { line: 1, column: 3 }
9484                 }
9485             },
9486             range: [0, 3],
9487             loc: {
9488                 start: { line: 1, column: 0 },
9489                 end: { line: 1, column: 3 }
9490             }
9491         },
9492
9493         'eval++': {
9494             type: 'ExpressionStatement',
9495             expression: {
9496                 type: 'UpdateExpression',
9497                 operator: '++',
9498                 argument: {
9499                     type: 'Identifier',
9500                     name: 'eval',
9501                     range: [0, 4],
9502                     loc: {
9503                         start: { line: 1, column: 0 },
9504                         end: { line: 1, column: 4 }
9505                     }
9506                 },
9507                 prefix: false,
9508                 range: [0, 6],
9509                 loc: {
9510                     start: { line: 1, column: 0 },
9511                     end: { line: 1, column: 6 }
9512                 }
9513             },
9514             range: [0, 6],
9515             loc: {
9516                 start: { line: 1, column: 0 },
9517                 end: { line: 1, column: 6 }
9518             }
9519         },
9520
9521         'eval--': {
9522             type: 'ExpressionStatement',
9523             expression: {
9524                 type: 'UpdateExpression',
9525                 operator: '--',
9526                 argument: {
9527                     type: 'Identifier',
9528                     name: 'eval',
9529                     range: [0, 4],
9530                     loc: {
9531                         start: { line: 1, column: 0 },
9532                         end: { line: 1, column: 4 }
9533                     }
9534                 },
9535                 prefix: false,
9536                 range: [0, 6],
9537                 loc: {
9538                     start: { line: 1, column: 0 },
9539                     end: { line: 1, column: 6 }
9540                 }
9541             },
9542             range: [0, 6],
9543             loc: {
9544                 start: { line: 1, column: 0 },
9545                 end: { line: 1, column: 6 }
9546             }
9547         },
9548
9549         'arguments++': {
9550             type: 'ExpressionStatement',
9551             expression: {
9552                 type: 'UpdateExpression',
9553                 operator: '++',
9554                 argument: {
9555                     type: 'Identifier',
9556                     name: 'arguments',
9557                     range: [0, 9],
9558                     loc: {
9559                         start: { line: 1, column: 0 },
9560                         end: { line: 1, column: 9 }
9561                     }
9562                 },
9563                 prefix: false,
9564                 range: [0, 11],
9565                 loc: {
9566                     start: { line: 1, column: 0 },
9567                     end: { line: 1, column: 11 }
9568                 }
9569             },
9570             range: [0, 11],
9571             loc: {
9572                 start: { line: 1, column: 0 },
9573                 end: { line: 1, column: 11 }
9574             }
9575         },
9576
9577         'arguments--': {
9578             type: 'ExpressionStatement',
9579             expression: {
9580                 type: 'UpdateExpression',
9581                 operator: '--',
9582                 argument: {
9583                     type: 'Identifier',
9584                     name: 'arguments',
9585                     range: [0, 9],
9586                     loc: {
9587                         start: { line: 1, column: 0 },
9588                         end: { line: 1, column: 9 }
9589                     }
9590                 },
9591                 prefix: false,
9592                 range: [0, 11],
9593                 loc: {
9594                     start: { line: 1, column: 0 },
9595                     end: { line: 1, column: 11 }
9596                 }
9597             },
9598             range: [0, 11],
9599             loc: {
9600                 start: { line: 1, column: 0 },
9601                 end: { line: 1, column: 11 }
9602             }
9603         }
9604
9605     },
9606
9607     'Unary Operators': {
9608
9609         '++x': {
9610             type: 'ExpressionStatement',
9611             expression: {
9612                 type: 'UpdateExpression',
9613                 operator: '++',
9614                 argument: {
9615                     type: 'Identifier',
9616                     name: 'x',
9617                     range: [2, 3],
9618                     loc: {
9619                         start: { line: 1, column: 2 },
9620                         end: { line: 1, column: 3 }
9621                     }
9622                 },
9623                 prefix: true,
9624                 range: [0, 3],
9625                 loc: {
9626                     start: { line: 1, column: 0 },
9627                     end: { line: 1, column: 3 }
9628                 }
9629             },
9630             range: [0, 3],
9631             loc: {
9632                 start: { line: 1, column: 0 },
9633                 end: { line: 1, column: 3 }
9634             }
9635         },
9636
9637         '--x': {
9638             type: 'ExpressionStatement',
9639             expression: {
9640                 type: 'UpdateExpression',
9641                 operator: '--',
9642                 argument: {
9643                     type: 'Identifier',
9644                     name: 'x',
9645                     range: [2, 3],
9646                     loc: {
9647                         start: { line: 1, column: 2 },
9648                         end: { line: 1, column: 3 }
9649                     }
9650                 },
9651                 prefix: true,
9652                 range: [0, 3],
9653                 loc: {
9654                     start: { line: 1, column: 0 },
9655                     end: { line: 1, column: 3 }
9656                 }
9657             },
9658             range: [0, 3],
9659             loc: {
9660                 start: { line: 1, column: 0 },
9661                 end: { line: 1, column: 3 }
9662             }
9663         },
9664
9665         '++eval': {
9666             type: 'ExpressionStatement',
9667             expression: {
9668                 type: 'UpdateExpression',
9669                 operator: '++',
9670                 argument: {
9671                     type: 'Identifier',
9672                     name: 'eval',
9673                     range: [2, 6],
9674                     loc: {
9675                         start: { line: 1, column: 2 },
9676                         end: { line: 1, column: 6 }
9677                     }
9678                 },
9679                 prefix: true,
9680                 range: [0, 6],
9681                 loc: {
9682                     start: { line: 1, column: 0 },
9683                     end: { line: 1, column: 6 }
9684                 }
9685             },
9686             range: [0, 6],
9687             loc: {
9688                 start: { line: 1, column: 0 },
9689                 end: { line: 1, column: 6 }
9690             }
9691         },
9692
9693         '--eval': {
9694             type: 'ExpressionStatement',
9695             expression: {
9696                 type: 'UpdateExpression',
9697                 operator: '--',
9698                 argument: {
9699                     type: 'Identifier',
9700                     name: 'eval',
9701                     range: [2, 6],
9702                     loc: {
9703                         start: { line: 1, column: 2 },
9704                         end: { line: 1, column: 6 }
9705                     }
9706                 },
9707                 prefix: true,
9708                 range: [0, 6],
9709                 loc: {
9710                     start: { line: 1, column: 0 },
9711                     end: { line: 1, column: 6 }
9712                 }
9713             },
9714             range: [0, 6],
9715             loc: {
9716                 start: { line: 1, column: 0 },
9717                 end: { line: 1, column: 6 }
9718             }
9719         },
9720
9721         '++arguments': {
9722             type: 'ExpressionStatement',
9723             expression: {
9724                 type: 'UpdateExpression',
9725                 operator: '++',
9726                 argument: {
9727                     type: 'Identifier',
9728                     name: 'arguments',
9729                     range: [2, 11],
9730                     loc: {
9731                         start: { line: 1, column: 2 },
9732                         end: { line: 1, column: 11 }
9733                     }
9734                 },
9735                 prefix: true,
9736                 range: [0, 11],
9737                 loc: {
9738                     start: { line: 1, column: 0 },
9739                     end: { line: 1, column: 11 }
9740                 }
9741             },
9742             range: [0, 11],
9743             loc: {
9744                 start: { line: 1, column: 0 },
9745                 end: { line: 1, column: 11 }
9746             }
9747         },
9748
9749         '--arguments': {
9750             type: 'ExpressionStatement',
9751             expression: {
9752                 type: 'UpdateExpression',
9753                 operator: '--',
9754                 argument: {
9755                     type: 'Identifier',
9756                     name: 'arguments',
9757                     range: [2, 11],
9758                     loc: {
9759                         start: { line: 1, column: 2 },
9760                         end: { line: 1, column: 11 }
9761                     }
9762                 },
9763                 prefix: true,
9764                 range: [0, 11],
9765                 loc: {
9766                     start: { line: 1, column: 0 },
9767                     end: { line: 1, column: 11 }
9768                 }
9769             },
9770             range: [0, 11],
9771             loc: {
9772                 start: { line: 1, column: 0 },
9773                 end: { line: 1, column: 11 }
9774             }
9775         },
9776
9777         '+x': {
9778             type: 'ExpressionStatement',
9779             expression: {
9780                 type: 'UnaryExpression',
9781                 operator: '+',
9782                 argument: {
9783                     type: 'Identifier',
9784                     name: 'x',
9785                     range: [1, 2],
9786                     loc: {
9787                         start: { line: 1, column: 1 },
9788                         end: { line: 1, column: 2 }
9789                     }
9790                 },
9791                 prefix: true,
9792                 range: [0, 2],
9793                 loc: {
9794                     start: { line: 1, column: 0 },
9795                     end: { line: 1, column: 2 }
9796                 }
9797             },
9798             range: [0, 2],
9799             loc: {
9800                 start: { line: 1, column: 0 },
9801                 end: { line: 1, column: 2 }
9802             }
9803         },
9804
9805         '-x': {
9806             type: 'ExpressionStatement',
9807             expression: {
9808                 type: 'UnaryExpression',
9809                 operator: '-',
9810                 argument: {
9811                     type: 'Identifier',
9812                     name: 'x',
9813                     range: [1, 2],
9814                     loc: {
9815                         start: { line: 1, column: 1 },
9816                         end: { line: 1, column: 2 }
9817                     }
9818                 },
9819                 prefix: true,
9820                 range: [0, 2],
9821                 loc: {
9822                     start: { line: 1, column: 0 },
9823                     end: { line: 1, column: 2 }
9824                 }
9825             },
9826             range: [0, 2],
9827             loc: {
9828                 start: { line: 1, column: 0 },
9829                 end: { line: 1, column: 2 }
9830             }
9831         },
9832
9833         '~x': {
9834             type: 'ExpressionStatement',
9835             expression: {
9836                 type: 'UnaryExpression',
9837                 operator: '~',
9838                 argument: {
9839                     type: 'Identifier',
9840                     name: 'x',
9841                     range: [1, 2],
9842                     loc: {
9843                         start: { line: 1, column: 1 },
9844                         end: { line: 1, column: 2 }
9845                     }
9846                 },
9847                 prefix: true,
9848                 range: [0, 2],
9849                 loc: {
9850                     start: { line: 1, column: 0 },
9851                     end: { line: 1, column: 2 }
9852                 }
9853             },
9854             range: [0, 2],
9855             loc: {
9856                 start: { line: 1, column: 0 },
9857                 end: { line: 1, column: 2 }
9858             }
9859         },
9860
9861         '!x': {
9862             type: 'ExpressionStatement',
9863             expression: {
9864                 type: 'UnaryExpression',
9865                 operator: '!',
9866                 argument: {
9867                     type: 'Identifier',
9868                     name: 'x',
9869                     range: [1, 2],
9870                     loc: {
9871                         start: { line: 1, column: 1 },
9872                         end: { line: 1, column: 2 }
9873                     }
9874                 },
9875                 prefix: true,
9876                 range: [0, 2],
9877                 loc: {
9878                     start: { line: 1, column: 0 },
9879                     end: { line: 1, column: 2 }
9880                 }
9881             },
9882             range: [0, 2],
9883             loc: {
9884                 start: { line: 1, column: 0 },
9885                 end: { line: 1, column: 2 }
9886             }
9887         },
9888
9889         'void x': {
9890             type: 'ExpressionStatement',
9891             expression: {
9892                 type: 'UnaryExpression',
9893                 operator: 'void',
9894                 argument: {
9895                     type: 'Identifier',
9896                     name: 'x',
9897                     range: [5, 6],
9898                     loc: {
9899                         start: { line: 1, column: 5 },
9900                         end: { line: 1, column: 6 }
9901                     }
9902                 },
9903                 prefix: true,
9904                 range: [0, 6],
9905                 loc: {
9906                     start: { line: 1, column: 0 },
9907                     end: { line: 1, column: 6 }
9908                 }
9909             },
9910             range: [0, 6],
9911             loc: {
9912                 start: { line: 1, column: 0 },
9913                 end: { line: 1, column: 6 }
9914             }
9915         },
9916
9917         'delete x': {
9918             type: 'ExpressionStatement',
9919             expression: {
9920                 type: 'UnaryExpression',
9921                 operator: 'delete',
9922                 argument: {
9923                     type: 'Identifier',
9924                     name: 'x',
9925                     range: [7, 8],
9926                     loc: {
9927                         start: { line: 1, column: 7 },
9928                         end: { line: 1, column: 8 }
9929                     }
9930                 },
9931                 prefix: true,
9932                 range: [0, 8],
9933                 loc: {
9934                     start: { line: 1, column: 0 },
9935                     end: { line: 1, column: 8 }
9936                 }
9937             },
9938             range: [0, 8],
9939             loc: {
9940                 start: { line: 1, column: 0 },
9941                 end: { line: 1, column: 8 }
9942             }
9943         },
9944
9945         'typeof x': {
9946             type: 'ExpressionStatement',
9947             expression: {
9948                 type: 'UnaryExpression',
9949                 operator: 'typeof',
9950                 argument: {
9951                     type: 'Identifier',
9952                     name: 'x',
9953                     range: [7, 8],
9954                     loc: {
9955                         start: { line: 1, column: 7 },
9956                         end: { line: 1, column: 8 }
9957                     }
9958                 },
9959                 prefix: true,
9960                 range: [0, 8],
9961                 loc: {
9962                     start: { line: 1, column: 0 },
9963                     end: { line: 1, column: 8 }
9964                 }
9965             },
9966             range: [0, 8],
9967             loc: {
9968                 start: { line: 1, column: 0 },
9969                 end: { line: 1, column: 8 }
9970             }
9971         }
9972
9973     },
9974
9975     'Multiplicative Operators': {
9976
9977         'x * y': {
9978             type: 'ExpressionStatement',
9979             expression: {
9980                 type: 'BinaryExpression',
9981                 operator: '*',
9982                 left: {
9983                     type: 'Identifier',
9984                     name: 'x',
9985                     range: [0, 1],
9986                     loc: {
9987                         start: { line: 1, column: 0 },
9988                         end: { line: 1, column: 1 }
9989                     }
9990                 },
9991                 right: {
9992                     type: 'Identifier',
9993                     name: 'y',
9994                     range: [4, 5],
9995                     loc: {
9996                         start: { line: 1, column: 4 },
9997                         end: { line: 1, column: 5 }
9998                     }
9999                 },
10000                 range: [0, 5],
10001                 loc: {
10002                     start: { line: 1, column: 0 },
10003                     end: { line: 1, column: 5 }
10004                 }
10005             },
10006             range: [0, 5],
10007             loc: {
10008                 start: { line: 1, column: 0 },
10009                 end: { line: 1, column: 5 }
10010             }
10011         },
10012
10013         'x / y': {
10014             type: 'ExpressionStatement',
10015             expression: {
10016                 type: 'BinaryExpression',
10017                 operator: '/',
10018                 left: {
10019                     type: 'Identifier',
10020                     name: 'x',
10021                     range: [0, 1],
10022                     loc: {
10023                         start: { line: 1, column: 0 },
10024                         end: { line: 1, column: 1 }
10025                     }
10026                 },
10027                 right: {
10028                     type: 'Identifier',
10029                     name: 'y',
10030                     range: [4, 5],
10031                     loc: {
10032                         start: { line: 1, column: 4 },
10033                         end: { line: 1, column: 5 }
10034                     }
10035                 },
10036                 range: [0, 5],
10037                 loc: {
10038                     start: { line: 1, column: 0 },
10039                     end: { line: 1, column: 5 }
10040                 }
10041             },
10042             range: [0, 5],
10043             loc: {
10044                 start: { line: 1, column: 0 },
10045                 end: { line: 1, column: 5 }
10046             }
10047         },
10048
10049         'x % y': {
10050             type: 'ExpressionStatement',
10051             expression: {
10052                 type: 'BinaryExpression',
10053                 operator: '%',
10054                 left: {
10055                     type: 'Identifier',
10056                     name: 'x',
10057                     range: [0, 1],
10058                     loc: {
10059                         start: { line: 1, column: 0 },
10060                         end: { line: 1, column: 1 }
10061                     }
10062                 },
10063                 right: {
10064                     type: 'Identifier',
10065                     name: 'y',
10066                     range: [4, 5],
10067                     loc: {
10068                         start: { line: 1, column: 4 },
10069                         end: { line: 1, column: 5 }
10070                     }
10071                 },
10072                 range: [0, 5],
10073                 loc: {
10074                     start: { line: 1, column: 0 },
10075                     end: { line: 1, column: 5 }
10076                 }
10077             },
10078             range: [0, 5],
10079             loc: {
10080                 start: { line: 1, column: 0 },
10081                 end: { line: 1, column: 5 }
10082             }
10083         }
10084
10085     },
10086
10087     'Additive Operators': {
10088
10089         'x + y': {
10090             type: 'ExpressionStatement',
10091             expression: {
10092                 type: 'BinaryExpression',
10093                 operator: '+',
10094                 left: {
10095                     type: 'Identifier',
10096                     name: 'x',
10097                     range: [0, 1],
10098                     loc: {
10099                         start: { line: 1, column: 0 },
10100                         end: { line: 1, column: 1 }
10101                     }
10102                 },
10103                 right: {
10104                     type: 'Identifier',
10105                     name: 'y',
10106                     range: [4, 5],
10107                     loc: {
10108                         start: { line: 1, column: 4 },
10109                         end: { line: 1, column: 5 }
10110                     }
10111                 },
10112                 range: [0, 5],
10113                 loc: {
10114                     start: { line: 1, column: 0 },
10115                     end: { line: 1, column: 5 }
10116                 }
10117             },
10118             range: [0, 5],
10119             loc: {
10120                 start: { line: 1, column: 0 },
10121                 end: { line: 1, column: 5 }
10122             }
10123         },
10124
10125         'x - y': {
10126             type: 'ExpressionStatement',
10127             expression: {
10128                 type: 'BinaryExpression',
10129                 operator: '-',
10130                 left: {
10131                     type: 'Identifier',
10132                     name: 'x',
10133                     range: [0, 1],
10134                     loc: {
10135                         start: { line: 1, column: 0 },
10136                         end: { line: 1, column: 1 }
10137                     }
10138                 },
10139                 right: {
10140                     type: 'Identifier',
10141                     name: 'y',
10142                     range: [4, 5],
10143                     loc: {
10144                         start: { line: 1, column: 4 },
10145                         end: { line: 1, column: 5 }
10146                     }
10147                 },
10148                 range: [0, 5],
10149                 loc: {
10150                     start: { line: 1, column: 0 },
10151                     end: { line: 1, column: 5 }
10152                 }
10153             },
10154             range: [0, 5],
10155             loc: {
10156                 start: { line: 1, column: 0 },
10157                 end: { line: 1, column: 5 }
10158             }
10159         },
10160
10161         '"use strict" + 42': {
10162             type: 'ExpressionStatement',
10163             expression: {
10164                 type: 'BinaryExpression',
10165                 operator: '+',
10166                 left: {
10167                     type: 'Literal',
10168                     value: 'use strict',
10169                     raw: '"use strict"',
10170                     range: [0, 12],
10171                     loc: {
10172                         start: { line: 1, column: 0 },
10173                         end: { line: 1, column: 12 }
10174                     }
10175                 },
10176                 right: {
10177                     type: 'Literal',
10178                     value: 42,
10179                     raw: '42',
10180                     range: [15, 17],
10181                     loc: {
10182                         start: { line: 1, column: 15 },
10183                         end: { line: 1, column: 17 }
10184                     }
10185                 },
10186                 range: [0, 17],
10187                 loc: {
10188                     start: { line: 1, column: 0 },
10189                     end: { line: 1, column: 17 }
10190                 }
10191             },
10192             range: [0, 17],
10193             loc: {
10194                 start: { line: 1, column: 0 },
10195                 end: { line: 1, column: 17 }
10196             }
10197         }
10198
10199     },
10200
10201     'Bitwise Shift Operator': {
10202
10203         'x << y': {
10204             type: 'ExpressionStatement',
10205             expression: {
10206                 type: 'BinaryExpression',
10207                 operator: '<<',
10208                 left: {
10209                     type: 'Identifier',
10210                     name: 'x',
10211                     range: [0, 1],
10212                     loc: {
10213                         start: { line: 1, column: 0 },
10214                         end: { line: 1, column: 1 }
10215                     }
10216                 },
10217                 right: {
10218                     type: 'Identifier',
10219                     name: 'y',
10220                     range: [5, 6],
10221                     loc: {
10222                         start: { line: 1, column: 5 },
10223                         end: { line: 1, column: 6 }
10224                     }
10225                 },
10226                 range: [0, 6],
10227                 loc: {
10228                     start: { line: 1, column: 0 },
10229                     end: { line: 1, column: 6 }
10230                 }
10231             },
10232             range: [0, 6],
10233             loc: {
10234                 start: { line: 1, column: 0 },
10235                 end: { line: 1, column: 6 }
10236             }
10237         },
10238
10239         'x >> y': {
10240             type: 'ExpressionStatement',
10241             expression: {
10242                 type: 'BinaryExpression',
10243                 operator: '>>',
10244                 left: {
10245                     type: 'Identifier',
10246                     name: 'x',
10247                     range: [0, 1],
10248                     loc: {
10249                         start: { line: 1, column: 0 },
10250                         end: { line: 1, column: 1 }
10251                     }
10252                 },
10253                 right: {
10254                     type: 'Identifier',
10255                     name: 'y',
10256                     range: [5, 6],
10257                     loc: {
10258                         start: { line: 1, column: 5 },
10259                         end: { line: 1, column: 6 }
10260                     }
10261                 },
10262                 range: [0, 6],
10263                 loc: {
10264                     start: { line: 1, column: 0 },
10265                     end: { line: 1, column: 6 }
10266                 }
10267             },
10268             range: [0, 6],
10269             loc: {
10270                 start: { line: 1, column: 0 },
10271                 end: { line: 1, column: 6 }
10272             }
10273         },
10274
10275         'x >>> y': {
10276             type: 'ExpressionStatement',
10277             expression: {
10278                 type: 'BinaryExpression',
10279                 operator: '>>>',
10280                 left: {
10281                     type: 'Identifier',
10282                     name: 'x',
10283                     range: [0, 1],
10284                     loc: {
10285                         start: { line: 1, column: 0 },
10286                         end: { line: 1, column: 1 }
10287                     }
10288                 },
10289                 right: {
10290                     type: 'Identifier',
10291                     name: 'y',
10292                     range: [6, 7],
10293                     loc: {
10294                         start: { line: 1, column: 6 },
10295                         end: { line: 1, column: 7 }
10296                     }
10297                 },
10298                 range: [0, 7],
10299                 loc: {
10300                     start: { line: 1, column: 0 },
10301                     end: { line: 1, column: 7 }
10302                 }
10303             },
10304             range: [0, 7],
10305             loc: {
10306                 start: { line: 1, column: 0 },
10307                 end: { line: 1, column: 7 }
10308             }
10309         }
10310
10311     },
10312
10313     'Relational Operators': {
10314
10315         'x < y': {
10316             type: 'ExpressionStatement',
10317             expression: {
10318                 type: 'BinaryExpression',
10319                 operator: '<',
10320                 left: {
10321                     type: 'Identifier',
10322                     name: 'x',
10323                     range: [0, 1],
10324                     loc: {
10325                         start: { line: 1, column: 0 },
10326                         end: { line: 1, column: 1 }
10327                     }
10328                 },
10329                 right: {
10330                     type: 'Identifier',
10331                     name: 'y',
10332                     range: [4, 5],
10333                     loc: {
10334                         start: { line: 1, column: 4 },
10335                         end: { line: 1, column: 5 }
10336                     }
10337                 },
10338                 range: [0, 5],
10339                 loc: {
10340                     start: { line: 1, column: 0 },
10341                     end: { line: 1, column: 5 }
10342                 }
10343             },
10344             range: [0, 5],
10345             loc: {
10346                 start: { line: 1, column: 0 },
10347                 end: { line: 1, column: 5 }
10348             }
10349         },
10350
10351         'x > y': {
10352             type: 'ExpressionStatement',
10353             expression: {
10354                 type: 'BinaryExpression',
10355                 operator: '>',
10356                 left: {
10357                     type: 'Identifier',
10358                     name: 'x',
10359                     range: [0, 1],
10360                     loc: {
10361                         start: { line: 1, column: 0 },
10362                         end: { line: 1, column: 1 }
10363                     }
10364                 },
10365                 right: {
10366                     type: 'Identifier',
10367                     name: 'y',
10368                     range: [4, 5],
10369                     loc: {
10370                         start: { line: 1, column: 4 },
10371                         end: { line: 1, column: 5 }
10372                     }
10373                 },
10374                 range: [0, 5],
10375                 loc: {
10376                     start: { line: 1, column: 0 },
10377                     end: { line: 1, column: 5 }
10378                 }
10379             },
10380             range: [0, 5],
10381             loc: {
10382                 start: { line: 1, column: 0 },
10383                 end: { line: 1, column: 5 }
10384             }
10385         },
10386
10387         'x <= y': {
10388             type: 'ExpressionStatement',
10389             expression: {
10390                 type: 'BinaryExpression',
10391                 operator: '<=',
10392                 left: {
10393                     type: 'Identifier',
10394                     name: 'x',
10395                     range: [0, 1],
10396                     loc: {
10397                         start: { line: 1, column: 0 },
10398                         end: { line: 1, column: 1 }
10399                     }
10400                 },
10401                 right: {
10402                     type: 'Identifier',
10403                     name: 'y',
10404                     range: [5, 6],
10405                     loc: {
10406                         start: { line: 1, column: 5 },
10407                         end: { line: 1, column: 6 }
10408                     }
10409                 },
10410                 range: [0, 6],
10411                 loc: {
10412                     start: { line: 1, column: 0 },
10413                     end: { line: 1, column: 6 }
10414                 }
10415             },
10416             range: [0, 6],
10417             loc: {
10418                 start: { line: 1, column: 0 },
10419                 end: { line: 1, column: 6 }
10420             }
10421         },
10422
10423         'x >= y': {
10424             type: 'ExpressionStatement',
10425             expression: {
10426                 type: 'BinaryExpression',
10427                 operator: '>=',
10428                 left: {
10429                     type: 'Identifier',
10430                     name: 'x',
10431                     range: [0, 1],
10432                     loc: {
10433                         start: { line: 1, column: 0 },
10434                         end: { line: 1, column: 1 }
10435                     }
10436                 },
10437                 right: {
10438                     type: 'Identifier',
10439                     name: 'y',
10440                     range: [5, 6],
10441                     loc: {
10442                         start: { line: 1, column: 5 },
10443                         end: { line: 1, column: 6 }
10444                     }
10445                 },
10446                 range: [0, 6],
10447                 loc: {
10448                     start: { line: 1, column: 0 },
10449                     end: { line: 1, column: 6 }
10450                 }
10451             },
10452             range: [0, 6],
10453             loc: {
10454                 start: { line: 1, column: 0 },
10455                 end: { line: 1, column: 6 }
10456             }
10457         },
10458
10459         'x in y': {
10460             type: 'ExpressionStatement',
10461             expression: {
10462                 type: 'BinaryExpression',
10463                 operator: 'in',
10464                 left: {
10465                     type: 'Identifier',
10466                     name: 'x',
10467                     range: [0, 1],
10468                     loc: {
10469                         start: { line: 1, column: 0 },
10470                         end: { line: 1, column: 1 }
10471                     }
10472                 },
10473                 right: {
10474                     type: 'Identifier',
10475                     name: 'y',
10476                     range: [5, 6],
10477                     loc: {
10478                         start: { line: 1, column: 5 },
10479                         end: { line: 1, column: 6 }
10480                     }
10481                 },
10482                 range: [0, 6],
10483                 loc: {
10484                     start: { line: 1, column: 0 },
10485                     end: { line: 1, column: 6 }
10486                 }
10487             },
10488             range: [0, 6],
10489             loc: {
10490                 start: { line: 1, column: 0 },
10491                 end: { line: 1, column: 6 }
10492             }
10493         },
10494
10495         'x instanceof y': {
10496             type: 'ExpressionStatement',
10497             expression: {
10498                 type: 'BinaryExpression',
10499                 operator: 'instanceof',
10500                 left: {
10501                     type: 'Identifier',
10502                     name: 'x',
10503                     range: [0, 1],
10504                     loc: {
10505                         start: { line: 1, column: 0 },
10506                         end: { line: 1, column: 1 }
10507                     }
10508                 },
10509                 right: {
10510                     type: 'Identifier',
10511                     name: 'y',
10512                     range: [13, 14],
10513                     loc: {
10514                         start: { line: 1, column: 13 },
10515                         end: { line: 1, column: 14 }
10516                     }
10517                 },
10518                 range: [0, 14],
10519                 loc: {
10520                     start: { line: 1, column: 0 },
10521                     end: { line: 1, column: 14 }
10522                 }
10523             },
10524             range: [0, 14],
10525             loc: {
10526                 start: { line: 1, column: 0 },
10527                 end: { line: 1, column: 14 }
10528             }
10529         },
10530
10531         'x < y < z': {
10532             type: 'ExpressionStatement',
10533             expression: {
10534                 type: 'BinaryExpression',
10535                 operator: '<',
10536                 left: {
10537                     type: 'BinaryExpression',
10538                     operator: '<',
10539                     left: {
10540                         type: 'Identifier',
10541                         name: 'x',
10542                         range: [0, 1],
10543                         loc: {
10544                             start: { line: 1, column: 0 },
10545                             end: { line: 1, column: 1 }
10546                         }
10547                     },
10548                     right: {
10549                         type: 'Identifier',
10550                         name: 'y',
10551                         range: [4, 5],
10552                         loc: {
10553                             start: { line: 1, column: 4 },
10554                             end: { line: 1, column: 5 }
10555                         }
10556                     },
10557                     range: [0, 5],
10558                     loc: {
10559                         start: { line: 1, column: 0 },
10560                         end: { line: 1, column: 5 }
10561                     }
10562                 },
10563                 right: {
10564                     type: 'Identifier',
10565                     name: 'z',
10566                     range: [8, 9],
10567                     loc: {
10568                         start: { line: 1, column: 8 },
10569                         end: { line: 1, column: 9 }
10570                     }
10571                 },
10572                 range: [0, 9],
10573                 loc: {
10574                     start: { line: 1, column: 0 },
10575                     end: { line: 1, column: 9 }
10576                 }
10577             },
10578             range: [0, 9],
10579             loc: {
10580                 start: { line: 1, column: 0 },
10581                 end: { line: 1, column: 9 }
10582             }
10583         }
10584
10585     },
10586
10587     'Equality Operators': {
10588
10589         'x == y': {
10590             type: 'ExpressionStatement',
10591             expression: {
10592                 type: 'BinaryExpression',
10593                 operator: '==',
10594                 left: {
10595                     type: 'Identifier',
10596                     name: 'x',
10597                     range: [0, 1],
10598                     loc: {
10599                         start: { line: 1, column: 0 },
10600                         end: { line: 1, column: 1 }
10601                     }
10602                 },
10603                 right: {
10604                     type: 'Identifier',
10605                     name: 'y',
10606                     range: [5, 6],
10607                     loc: {
10608                         start: { line: 1, column: 5 },
10609                         end: { line: 1, column: 6 }
10610                     }
10611                 },
10612                 range: [0, 6],
10613                 loc: {
10614                     start: { line: 1, column: 0 },
10615                     end: { line: 1, column: 6 }
10616                 }
10617             },
10618             range: [0, 6],
10619             loc: {
10620                 start: { line: 1, column: 0 },
10621                 end: { line: 1, column: 6 }
10622             }
10623         },
10624
10625         'x != y': {
10626             type: 'ExpressionStatement',
10627             expression: {
10628                 type: 'BinaryExpression',
10629                 operator: '!=',
10630                 left: {
10631                     type: 'Identifier',
10632                     name: 'x',
10633                     range: [0, 1],
10634                     loc: {
10635                         start: { line: 1, column: 0 },
10636                         end: { line: 1, column: 1 }
10637                     }
10638                 },
10639                 right: {
10640                     type: 'Identifier',
10641                     name: 'y',
10642                     range: [5, 6],
10643                     loc: {
10644                         start: { line: 1, column: 5 },
10645                         end: { line: 1, column: 6 }
10646                     }
10647                 },
10648                 range: [0, 6],
10649                 loc: {
10650                     start: { line: 1, column: 0 },
10651                     end: { line: 1, column: 6 }
10652                 }
10653             },
10654             range: [0, 6],
10655             loc: {
10656                 start: { line: 1, column: 0 },
10657                 end: { line: 1, column: 6 }
10658             }
10659         },
10660
10661         'x === y': {
10662             type: 'ExpressionStatement',
10663             expression: {
10664                 type: 'BinaryExpression',
10665                 operator: '===',
10666                 left: {
10667                     type: 'Identifier',
10668                     name: 'x',
10669                     range: [0, 1],
10670                     loc: {
10671                         start: { line: 1, column: 0 },
10672                         end: { line: 1, column: 1 }
10673                     }
10674                 },
10675                 right: {
10676                     type: 'Identifier',
10677                     name: 'y',
10678                     range: [6, 7],
10679                     loc: {
10680                         start: { line: 1, column: 6 },
10681                         end: { line: 1, column: 7 }
10682                     }
10683                 },
10684                 range: [0, 7],
10685                 loc: {
10686                     start: { line: 1, column: 0 },
10687                     end: { line: 1, column: 7 }
10688                 }
10689             },
10690             range: [0, 7],
10691             loc: {
10692                 start: { line: 1, column: 0 },
10693                 end: { line: 1, column: 7 }
10694             }
10695         },
10696
10697         'x !== y': {
10698             type: 'ExpressionStatement',
10699             expression: {
10700                 type: 'BinaryExpression',
10701                 operator: '!==',
10702                 left: {
10703                     type: 'Identifier',
10704                     name: 'x',
10705                     range: [0, 1],
10706                     loc: {
10707                         start: { line: 1, column: 0 },
10708                         end: { line: 1, column: 1 }
10709                     }
10710                 },
10711                 right: {
10712                     type: 'Identifier',
10713                     name: 'y',
10714                     range: [6, 7],
10715                     loc: {
10716                         start: { line: 1, column: 6 },
10717                         end: { line: 1, column: 7 }
10718                     }
10719                 },
10720                 range: [0, 7],
10721                 loc: {
10722                     start: { line: 1, column: 0 },
10723                     end: { line: 1, column: 7 }
10724                 }
10725             },
10726             range: [0, 7],
10727             loc: {
10728                 start: { line: 1, column: 0 },
10729                 end: { line: 1, column: 7 }
10730             }
10731         }
10732
10733     },
10734
10735     'Binary Bitwise Operators': {
10736
10737         'x & y': {
10738             type: 'ExpressionStatement',
10739             expression: {
10740                 type: 'BinaryExpression',
10741                 operator: '&',
10742                 left: {
10743                     type: 'Identifier',
10744                     name: 'x',
10745                     range: [0, 1],
10746                     loc: {
10747                         start: { line: 1, column: 0 },
10748                         end: { line: 1, column: 1 }
10749                     }
10750                 },
10751                 right: {
10752                     type: 'Identifier',
10753                     name: 'y',
10754                     range: [4, 5],
10755                     loc: {
10756                         start: { line: 1, column: 4 },
10757                         end: { line: 1, column: 5 }
10758                     }
10759                 },
10760                 range: [0, 5],
10761                 loc: {
10762                     start: { line: 1, column: 0 },
10763                     end: { line: 1, column: 5 }
10764                 }
10765             },
10766             range: [0, 5],
10767             loc: {
10768                 start: { line: 1, column: 0 },
10769                 end: { line: 1, column: 5 }
10770             }
10771         },
10772
10773         'x ^ y': {
10774             type: 'ExpressionStatement',
10775             expression: {
10776                 type: 'BinaryExpression',
10777                 operator: '^',
10778                 left: {
10779                     type: 'Identifier',
10780                     name: 'x',
10781                     range: [0, 1],
10782                     loc: {
10783                         start: { line: 1, column: 0 },
10784                         end: { line: 1, column: 1 }
10785                     }
10786                 },
10787                 right: {
10788                     type: 'Identifier',
10789                     name: 'y',
10790                     range: [4, 5],
10791                     loc: {
10792                         start: { line: 1, column: 4 },
10793                         end: { line: 1, column: 5 }
10794                     }
10795                 },
10796                 range: [0, 5],
10797                 loc: {
10798                     start: { line: 1, column: 0 },
10799                     end: { line: 1, column: 5 }
10800                 }
10801             },
10802             range: [0, 5],
10803             loc: {
10804                 start: { line: 1, column: 0 },
10805                 end: { line: 1, column: 5 }
10806             }
10807         },
10808
10809         'x | y': {
10810             type: 'ExpressionStatement',
10811             expression: {
10812                 type: 'BinaryExpression',
10813                 operator: '|',
10814                 left: {
10815                     type: 'Identifier',
10816                     name: 'x',
10817                     range: [0, 1],
10818                     loc: {
10819                         start: { line: 1, column: 0 },
10820                         end: { line: 1, column: 1 }
10821                     }
10822                 },
10823                 right: {
10824                     type: 'Identifier',
10825                     name: 'y',
10826                     range: [4, 5],
10827                     loc: {
10828                         start: { line: 1, column: 4 },
10829                         end: { line: 1, column: 5 }
10830                     }
10831                 },
10832                 range: [0, 5],
10833                 loc: {
10834                     start: { line: 1, column: 0 },
10835                     end: { line: 1, column: 5 }
10836                 }
10837             },
10838             range: [0, 5],
10839             loc: {
10840                 start: { line: 1, column: 0 },
10841                 end: { line: 1, column: 5 }
10842             }
10843         }
10844
10845     },
10846
10847     'Binary Expressions': {
10848
10849         'x + y + z': {
10850             type: 'ExpressionStatement',
10851             expression: {
10852                 type: 'BinaryExpression',
10853                 operator: '+',
10854                 left: {
10855                     type: 'BinaryExpression',
10856                     operator: '+',
10857                     left: {
10858                         type: 'Identifier',
10859                         name: 'x',
10860                         range: [0, 1],
10861                         loc: {
10862                             start: { line: 1, column: 0 },
10863                             end: { line: 1, column: 1 }
10864                         }
10865                     },
10866                     right: {
10867                         type: 'Identifier',
10868                         name: 'y',
10869                         range: [4, 5],
10870                         loc: {
10871                             start: { line: 1, column: 4 },
10872                             end: { line: 1, column: 5 }
10873                         }
10874                     },
10875                     range: [0, 5],
10876                     loc: {
10877                         start: { line: 1, column: 0 },
10878                         end: { line: 1, column: 5 }
10879                     }
10880                 },
10881                 right: {
10882                     type: 'Identifier',
10883                     name: 'z',
10884                     range: [8, 9],
10885                     loc: {
10886                         start: { line: 1, column: 8 },
10887                         end: { line: 1, column: 9 }
10888                     }
10889                 },
10890                 range: [0, 9],
10891                 loc: {
10892                     start: { line: 1, column: 0 },
10893                     end: { line: 1, column: 9 }
10894                 }
10895             },
10896             range: [0, 9],
10897             loc: {
10898                 start: { line: 1, column: 0 },
10899                 end: { line: 1, column: 9 }
10900             }
10901         },
10902
10903         'x - y + z': {
10904             type: 'ExpressionStatement',
10905             expression: {
10906                 type: 'BinaryExpression',
10907                 operator: '+',
10908                 left: {
10909                     type: 'BinaryExpression',
10910                     operator: '-',
10911                     left: {
10912                         type: 'Identifier',
10913                         name: 'x',
10914                         range: [0, 1],
10915                         loc: {
10916                             start: { line: 1, column: 0 },
10917                             end: { line: 1, column: 1 }
10918                         }
10919                     },
10920                     right: {
10921                         type: 'Identifier',
10922                         name: 'y',
10923                         range: [4, 5],
10924                         loc: {
10925                             start: { line: 1, column: 4 },
10926                             end: { line: 1, column: 5 }
10927                         }
10928                     },
10929                     range: [0, 5],
10930                     loc: {
10931                         start: { line: 1, column: 0 },
10932                         end: { line: 1, column: 5 }
10933                     }
10934                 },
10935                 right: {
10936                     type: 'Identifier',
10937                     name: 'z',
10938                     range: [8, 9],
10939                     loc: {
10940                         start: { line: 1, column: 8 },
10941                         end: { line: 1, column: 9 }
10942                     }
10943                 },
10944                 range: [0, 9],
10945                 loc: {
10946                     start: { line: 1, column: 0 },
10947                     end: { line: 1, column: 9 }
10948                 }
10949             },
10950             range: [0, 9],
10951             loc: {
10952                 start: { line: 1, column: 0 },
10953                 end: { line: 1, column: 9 }
10954             }
10955         },
10956
10957         'x + y - z': {
10958             type: 'ExpressionStatement',
10959             expression: {
10960                 type: 'BinaryExpression',
10961                 operator: '-',
10962                 left: {
10963                     type: 'BinaryExpression',
10964                     operator: '+',
10965                     left: {
10966                         type: 'Identifier',
10967                         name: 'x',
10968                         range: [0, 1],
10969                         loc: {
10970                             start: { line: 1, column: 0 },
10971                             end: { line: 1, column: 1 }
10972                         }
10973                     },
10974                     right: {
10975                         type: 'Identifier',
10976                         name: 'y',
10977                         range: [4, 5],
10978                         loc: {
10979                             start: { line: 1, column: 4 },
10980                             end: { line: 1, column: 5 }
10981                         }
10982                     },
10983                     range: [0, 5],
10984                     loc: {
10985                         start: { line: 1, column: 0 },
10986                         end: { line: 1, column: 5 }
10987                     }
10988                 },
10989                 right: {
10990                     type: 'Identifier',
10991                     name: 'z',
10992                     range: [8, 9],
10993                     loc: {
10994                         start: { line: 1, column: 8 },
10995                         end: { line: 1, column: 9 }
10996                     }
10997                 },
10998                 range: [0, 9],
10999                 loc: {
11000                     start: { line: 1, column: 0 },
11001                     end: { line: 1, column: 9 }
11002                 }
11003             },
11004             range: [0, 9],
11005             loc: {
11006                 start: { line: 1, column: 0 },
11007                 end: { line: 1, column: 9 }
11008             }
11009         },
11010
11011         'x - y - z': {
11012             type: 'ExpressionStatement',
11013             expression: {
11014                 type: 'BinaryExpression',
11015                 operator: '-',
11016                 left: {
11017                     type: 'BinaryExpression',
11018                     operator: '-',
11019                     left: {
11020                         type: 'Identifier',
11021                         name: 'x',
11022                         range: [0, 1],
11023                         loc: {
11024                             start: { line: 1, column: 0 },
11025                             end: { line: 1, column: 1 }
11026                         }
11027                     },
11028                     right: {
11029                         type: 'Identifier',
11030                         name: 'y',
11031                         range: [4, 5],
11032                         loc: {
11033                             start: { line: 1, column: 4 },
11034                             end: { line: 1, column: 5 }
11035                         }
11036                     },
11037                     range: [0, 5],
11038                     loc: {
11039                         start: { line: 1, column: 0 },
11040                         end: { line: 1, column: 5 }
11041                     }
11042                 },
11043                 right: {
11044                     type: 'Identifier',
11045                     name: 'z',
11046                     range: [8, 9],
11047                     loc: {
11048                         start: { line: 1, column: 8 },
11049                         end: { line: 1, column: 9 }
11050                     }
11051                 },
11052                 range: [0, 9],
11053                 loc: {
11054                     start: { line: 1, column: 0 },
11055                     end: { line: 1, column: 9 }
11056                 }
11057             },
11058             range: [0, 9],
11059             loc: {
11060                 start: { line: 1, column: 0 },
11061                 end: { line: 1, column: 9 }
11062             }
11063         },
11064
11065         'x + y * z': {
11066             type: 'ExpressionStatement',
11067             expression: {
11068                 type: 'BinaryExpression',
11069                 operator: '+',
11070                 left: {
11071                     type: 'Identifier',
11072                     name: 'x',
11073                     range: [0, 1],
11074                     loc: {
11075                         start: { line: 1, column: 0 },
11076                         end: { line: 1, column: 1 }
11077                     }
11078                 },
11079                 right: {
11080                     type: 'BinaryExpression',
11081                     operator: '*',
11082                     left: {
11083                         type: 'Identifier',
11084                         name: 'y',
11085                         range: [4, 5],
11086                         loc: {
11087                             start: { line: 1, column: 4 },
11088                             end: { line: 1, column: 5 }
11089                         }
11090                     },
11091                     right: {
11092                         type: 'Identifier',
11093                         name: 'z',
11094                         range: [8, 9],
11095                         loc: {
11096                             start: { line: 1, column: 8 },
11097                             end: { line: 1, column: 9 }
11098                         }
11099                     },
11100                     range: [4, 9],
11101                     loc: {
11102                         start: { line: 1, column: 4 },
11103                         end: { line: 1, column: 9 }
11104                     }
11105                 },
11106                 range: [0, 9],
11107                 loc: {
11108                     start: { line: 1, column: 0 },
11109                     end: { line: 1, column: 9 }
11110                 }
11111             },
11112             range: [0, 9],
11113             loc: {
11114                 start: { line: 1, column: 0 },
11115                 end: { line: 1, column: 9 }
11116             }
11117         },
11118
11119         'x + y / z': {
11120             type: 'ExpressionStatement',
11121             expression: {
11122                 type: 'BinaryExpression',
11123                 operator: '+',
11124                 left: {
11125                     type: 'Identifier',
11126                     name: 'x',
11127                     range: [0, 1],
11128                     loc: {
11129                         start: { line: 1, column: 0 },
11130                         end: { line: 1, column: 1 }
11131                     }
11132                 },
11133                 right: {
11134                     type: 'BinaryExpression',
11135                     operator: '/',
11136                     left: {
11137                         type: 'Identifier',
11138                         name: 'y',
11139                         range: [4, 5],
11140                         loc: {
11141                             start: { line: 1, column: 4 },
11142                             end: { line: 1, column: 5 }
11143                         }
11144                     },
11145                     right: {
11146                         type: 'Identifier',
11147                         name: 'z',
11148                         range: [8, 9],
11149                         loc: {
11150                             start: { line: 1, column: 8 },
11151                             end: { line: 1, column: 9 }
11152                         }
11153                     },
11154                     range: [4, 9],
11155                     loc: {
11156                         start: { line: 1, column: 4 },
11157                         end: { line: 1, column: 9 }
11158                     }
11159                 },
11160                 range: [0, 9],
11161                 loc: {
11162                     start: { line: 1, column: 0 },
11163                     end: { line: 1, column: 9 }
11164                 }
11165             },
11166             range: [0, 9],
11167             loc: {
11168                 start: { line: 1, column: 0 },
11169                 end: { line: 1, column: 9 }
11170             }
11171         },
11172
11173         'x - y % z': {
11174             type: 'ExpressionStatement',
11175             expression: {
11176                 type: 'BinaryExpression',
11177                 operator: '-',
11178                 left: {
11179                     type: 'Identifier',
11180                     name: 'x',
11181                     range: [0, 1],
11182                     loc: {
11183                         start: { line: 1, column: 0 },
11184                         end: { line: 1, column: 1 }
11185                     }
11186                 },
11187                 right: {
11188                     type: 'BinaryExpression',
11189                     operator: '%',
11190                     left: {
11191                         type: 'Identifier',
11192                         name: 'y',
11193                         range: [4, 5],
11194                         loc: {
11195                             start: { line: 1, column: 4 },
11196                             end: { line: 1, column: 5 }
11197                         }
11198                     },
11199                     right: {
11200                         type: 'Identifier',
11201                         name: 'z',
11202                         range: [8, 9],
11203                         loc: {
11204                             start: { line: 1, column: 8 },
11205                             end: { line: 1, column: 9 }
11206                         }
11207                     },
11208                     range: [4, 9],
11209                     loc: {
11210                         start: { line: 1, column: 4 },
11211                         end: { line: 1, column: 9 }
11212                     }
11213                 },
11214                 range: [0, 9],
11215                 loc: {
11216                     start: { line: 1, column: 0 },
11217                     end: { line: 1, column: 9 }
11218                 }
11219             },
11220             range: [0, 9],
11221             loc: {
11222                 start: { line: 1, column: 0 },
11223                 end: { line: 1, column: 9 }
11224             }
11225         },
11226
11227         'x * y * z': {
11228             type: 'ExpressionStatement',
11229             expression: {
11230                 type: 'BinaryExpression',
11231                 operator: '*',
11232                 left: {
11233                     type: 'BinaryExpression',
11234                     operator: '*',
11235                     left: {
11236                         type: 'Identifier',
11237                         name: 'x',
11238                         range: [0, 1],
11239                         loc: {
11240                             start: { line: 1, column: 0 },
11241                             end: { line: 1, column: 1 }
11242                         }
11243                     },
11244                     right: {
11245                         type: 'Identifier',
11246                         name: 'y',
11247                         range: [4, 5],
11248                         loc: {
11249                             start: { line: 1, column: 4 },
11250                             end: { line: 1, column: 5 }
11251                         }
11252                     },
11253                     range: [0, 5],
11254                     loc: {
11255                         start: { line: 1, column: 0 },
11256                         end: { line: 1, column: 5 }
11257                     }
11258                 },
11259                 right: {
11260                     type: 'Identifier',
11261                     name: 'z',
11262                     range: [8, 9],
11263                     loc: {
11264                         start: { line: 1, column: 8 },
11265                         end: { line: 1, column: 9 }
11266                     }
11267                 },
11268                 range: [0, 9],
11269                 loc: {
11270                     start: { line: 1, column: 0 },
11271                     end: { line: 1, column: 9 }
11272                 }
11273             },
11274             range: [0, 9],
11275             loc: {
11276                 start: { line: 1, column: 0 },
11277                 end: { line: 1, column: 9 }
11278             }
11279         },
11280
11281         'x * y / z': {
11282             type: 'ExpressionStatement',
11283             expression: {
11284                 type: 'BinaryExpression',
11285                 operator: '/',
11286                 left: {
11287                     type: 'BinaryExpression',
11288                     operator: '*',
11289                     left: {
11290                         type: 'Identifier',
11291                         name: 'x',
11292                         range: [0, 1],
11293                         loc: {
11294                             start: { line: 1, column: 0 },
11295                             end: { line: 1, column: 1 }
11296                         }
11297                     },
11298                     right: {
11299                         type: 'Identifier',
11300                         name: 'y',
11301                         range: [4, 5],
11302                         loc: {
11303                             start: { line: 1, column: 4 },
11304                             end: { line: 1, column: 5 }
11305                         }
11306                     },
11307                     range: [0, 5],
11308                     loc: {
11309                         start: { line: 1, column: 0 },
11310                         end: { line: 1, column: 5 }
11311                     }
11312                 },
11313                 right: {
11314                     type: 'Identifier',
11315                     name: 'z',
11316                     range: [8, 9],
11317                     loc: {
11318                         start: { line: 1, column: 8 },
11319                         end: { line: 1, column: 9 }
11320                     }
11321                 },
11322                 range: [0, 9],
11323                 loc: {
11324                     start: { line: 1, column: 0 },
11325                     end: { line: 1, column: 9 }
11326                 }
11327             },
11328             range: [0, 9],
11329             loc: {
11330                 start: { line: 1, column: 0 },
11331                 end: { line: 1, column: 9 }
11332             }
11333         },
11334
11335         'x * y % z': {
11336             type: 'ExpressionStatement',
11337             expression: {
11338                 type: 'BinaryExpression',
11339                 operator: '%',
11340                 left: {
11341                     type: 'BinaryExpression',
11342                     operator: '*',
11343                     left: {
11344                         type: 'Identifier',
11345                         name: 'x',
11346                         range: [0, 1],
11347                         loc: {
11348                             start: { line: 1, column: 0 },
11349                             end: { line: 1, column: 1 }
11350                         }
11351                     },
11352                     right: {
11353                         type: 'Identifier',
11354                         name: 'y',
11355                         range: [4, 5],
11356                         loc: {
11357                             start: { line: 1, column: 4 },
11358                             end: { line: 1, column: 5 }
11359                         }
11360                     },
11361                     range: [0, 5],
11362                     loc: {
11363                         start: { line: 1, column: 0 },
11364                         end: { line: 1, column: 5 }
11365                     }
11366                 },
11367                 right: {
11368                     type: 'Identifier',
11369                     name: 'z',
11370                     range: [8, 9],
11371                     loc: {
11372                         start: { line: 1, column: 8 },
11373                         end: { line: 1, column: 9 }
11374                     }
11375                 },
11376                 range: [0, 9],
11377                 loc: {
11378                     start: { line: 1, column: 0 },
11379                     end: { line: 1, column: 9 }
11380                 }
11381             },
11382             range: [0, 9],
11383             loc: {
11384                 start: { line: 1, column: 0 },
11385                 end: { line: 1, column: 9 }
11386             }
11387         },
11388
11389         'x % y * z': {
11390             type: 'ExpressionStatement',
11391             expression: {
11392                 type: 'BinaryExpression',
11393                 operator: '*',
11394                 left: {
11395                     type: 'BinaryExpression',
11396                     operator: '%',
11397                     left: {
11398                         type: 'Identifier',
11399                         name: 'x',
11400                         range: [0, 1],
11401                         loc: {
11402                             start: { line: 1, column: 0 },
11403                             end: { line: 1, column: 1 }
11404                         }
11405                     },
11406                     right: {
11407                         type: 'Identifier',
11408                         name: 'y',
11409                         range: [4, 5],
11410                         loc: {
11411                             start: { line: 1, column: 4 },
11412                             end: { line: 1, column: 5 }
11413                         }
11414                     },
11415                     range: [0, 5],
11416                     loc: {
11417                         start: { line: 1, column: 0 },
11418                         end: { line: 1, column: 5 }
11419                     }
11420                 },
11421                 right: {
11422                     type: 'Identifier',
11423                     name: 'z',
11424                     range: [8, 9],
11425                     loc: {
11426                         start: { line: 1, column: 8 },
11427                         end: { line: 1, column: 9 }
11428                     }
11429                 },
11430                 range: [0, 9],
11431                 loc: {
11432                     start: { line: 1, column: 0 },
11433                     end: { line: 1, column: 9 }
11434                 }
11435             },
11436             range: [0, 9],
11437             loc: {
11438                 start: { line: 1, column: 0 },
11439                 end: { line: 1, column: 9 }
11440             }
11441         },
11442
11443         'x << y << z': {
11444             type: 'ExpressionStatement',
11445             expression: {
11446                 type: 'BinaryExpression',
11447                 operator: '<<',
11448                 left: {
11449                     type: 'BinaryExpression',
11450                     operator: '<<',
11451                     left: {
11452                         type: 'Identifier',
11453                         name: 'x',
11454                         range: [0, 1],
11455                         loc: {
11456                             start: { line: 1, column: 0 },
11457                             end: { line: 1, column: 1 }
11458                         }
11459                     },
11460                     right: {
11461                         type: 'Identifier',
11462                         name: 'y',
11463                         range: [5, 6],
11464                         loc: {
11465                             start: { line: 1, column: 5 },
11466                             end: { line: 1, column: 6 }
11467                         }
11468                     },
11469                     range: [0, 6],
11470                     loc: {
11471                         start: { line: 1, column: 0 },
11472                         end: { line: 1, column: 6 }
11473                     }
11474                 },
11475                 right: {
11476                     type: 'Identifier',
11477                     name: 'z',
11478                     range: [10, 11],
11479                     loc: {
11480                         start: { line: 1, column: 10 },
11481                         end: { line: 1, column: 11 }
11482                     }
11483                 },
11484                 range: [0, 11],
11485                 loc: {
11486                     start: { line: 1, column: 0 },
11487                     end: { line: 1, column: 11 }
11488                 }
11489             },
11490             range: [0, 11],
11491             loc: {
11492                 start: { line: 1, column: 0 },
11493                 end: { line: 1, column: 11 }
11494             }
11495         },
11496
11497         'x | y | z': {
11498             type: 'ExpressionStatement',
11499             expression: {
11500                 type: 'BinaryExpression',
11501                 operator: '|',
11502                 left: {
11503                     type: 'BinaryExpression',
11504                     operator: '|',
11505                     left: {
11506                         type: 'Identifier',
11507                         name: 'x',
11508                         range: [0, 1],
11509                         loc: {
11510                             start: { line: 1, column: 0 },
11511                             end: { line: 1, column: 1 }
11512                         }
11513                     },
11514                     right: {
11515                         type: 'Identifier',
11516                         name: 'y',
11517                         range: [4, 5],
11518                         loc: {
11519                             start: { line: 1, column: 4 },
11520                             end: { line: 1, column: 5 }
11521                         }
11522                     },
11523                     range: [0, 5],
11524                     loc: {
11525                         start: { line: 1, column: 0 },
11526                         end: { line: 1, column: 5 }
11527                     }
11528                 },
11529                 right: {
11530                     type: 'Identifier',
11531                     name: 'z',
11532                     range: [8, 9],
11533                     loc: {
11534                         start: { line: 1, column: 8 },
11535                         end: { line: 1, column: 9 }
11536                     }
11537                 },
11538                 range: [0, 9],
11539                 loc: {
11540                     start: { line: 1, column: 0 },
11541                     end: { line: 1, column: 9 }
11542                 }
11543             },
11544             range: [0, 9],
11545             loc: {
11546                 start: { line: 1, column: 0 },
11547                 end: { line: 1, column: 9 }
11548             }
11549         },
11550
11551         'x & y & z': {
11552             type: 'ExpressionStatement',
11553             expression: {
11554                 type: 'BinaryExpression',
11555                 operator: '&',
11556                 left: {
11557                     type: 'BinaryExpression',
11558                     operator: '&',
11559                     left: {
11560                         type: 'Identifier',
11561                         name: 'x',
11562                         range: [0, 1],
11563                         loc: {
11564                             start: { line: 1, column: 0 },
11565                             end: { line: 1, column: 1 }
11566                         }
11567                     },
11568                     right: {
11569                         type: 'Identifier',
11570                         name: 'y',
11571                         range: [4, 5],
11572                         loc: {
11573                             start: { line: 1, column: 4 },
11574                             end: { line: 1, column: 5 }
11575                         }
11576                     },
11577                     range: [0, 5],
11578                     loc: {
11579                         start: { line: 1, column: 0 },
11580                         end: { line: 1, column: 5 }
11581                     }
11582                 },
11583                 right: {
11584                     type: 'Identifier',
11585                     name: 'z',
11586                     range: [8, 9],
11587                     loc: {
11588                         start: { line: 1, column: 8 },
11589                         end: { line: 1, column: 9 }
11590                     }
11591                 },
11592                 range: [0, 9],
11593                 loc: {
11594                     start: { line: 1, column: 0 },
11595                     end: { line: 1, column: 9 }
11596                 }
11597             },
11598             range: [0, 9],
11599             loc: {
11600                 start: { line: 1, column: 0 },
11601                 end: { line: 1, column: 9 }
11602             }
11603         },
11604
11605         'x ^ y ^ z': {
11606             type: 'ExpressionStatement',
11607             expression: {
11608                 type: 'BinaryExpression',
11609                 operator: '^',
11610                 left: {
11611                     type: 'BinaryExpression',
11612                     operator: '^',
11613                     left: {
11614                         type: 'Identifier',
11615                         name: 'x',
11616                         range: [0, 1],
11617                         loc: {
11618                             start: { line: 1, column: 0 },
11619                             end: { line: 1, column: 1 }
11620                         }
11621                     },
11622                     right: {
11623                         type: 'Identifier',
11624                         name: 'y',
11625                         range: [4, 5],
11626                         loc: {
11627                             start: { line: 1, column: 4 },
11628                             end: { line: 1, column: 5 }
11629                         }
11630                     },
11631                     range: [0, 5],
11632                     loc: {
11633                         start: { line: 1, column: 0 },
11634                         end: { line: 1, column: 5 }
11635                     }
11636                 },
11637                 right: {
11638                     type: 'Identifier',
11639                     name: 'z',
11640                     range: [8, 9],
11641                     loc: {
11642                         start: { line: 1, column: 8 },
11643                         end: { line: 1, column: 9 }
11644                     }
11645                 },
11646                 range: [0, 9],
11647                 loc: {
11648                     start: { line: 1, column: 0 },
11649                     end: { line: 1, column: 9 }
11650                 }
11651             },
11652             range: [0, 9],
11653             loc: {
11654                 start: { line: 1, column: 0 },
11655                 end: { line: 1, column: 9 }
11656             }
11657         },
11658
11659         'x & y | z': {
11660             type: 'ExpressionStatement',
11661             expression: {
11662                 type: 'BinaryExpression',
11663                 operator: '|',
11664                 left: {
11665                     type: 'BinaryExpression',
11666                     operator: '&',
11667                     left: {
11668                         type: 'Identifier',
11669                         name: 'x',
11670                         range: [0, 1],
11671                         loc: {
11672                             start: { line: 1, column: 0 },
11673                             end: { line: 1, column: 1 }
11674                         }
11675                     },
11676                     right: {
11677                         type: 'Identifier',
11678                         name: 'y',
11679                         range: [4, 5],
11680                         loc: {
11681                             start: { line: 1, column: 4 },
11682                             end: { line: 1, column: 5 }
11683                         }
11684                     },
11685                     range: [0, 5],
11686                     loc: {
11687                         start: { line: 1, column: 0 },
11688                         end: { line: 1, column: 5 }
11689                     }
11690                 },
11691                 right: {
11692                     type: 'Identifier',
11693                     name: 'z',
11694                     range: [8, 9],
11695                     loc: {
11696                         start: { line: 1, column: 8 },
11697                         end: { line: 1, column: 9 }
11698                     }
11699                 },
11700                 range: [0, 9],
11701                 loc: {
11702                     start: { line: 1, column: 0 },
11703                     end: { line: 1, column: 9 }
11704                 }
11705             },
11706             range: [0, 9],
11707             loc: {
11708                 start: { line: 1, column: 0 },
11709                 end: { line: 1, column: 9 }
11710             }
11711         },
11712
11713         'x | y ^ z': {
11714             type: 'ExpressionStatement',
11715             expression: {
11716                 type: 'BinaryExpression',
11717                 operator: '|',
11718                 left: {
11719                     type: 'Identifier',
11720                     name: 'x',
11721                     range: [0, 1],
11722                     loc: {
11723                         start: { line: 1, column: 0 },
11724                         end: { line: 1, column: 1 }
11725                     }
11726                 },
11727                 right: {
11728                     type: 'BinaryExpression',
11729                     operator: '^',
11730                     left: {
11731                         type: 'Identifier',
11732                         name: 'y',
11733                         range: [4, 5],
11734                         loc: {
11735                             start: { line: 1, column: 4 },
11736                             end: { line: 1, column: 5 }
11737                         }
11738                     },
11739                     right: {
11740                         type: 'Identifier',
11741                         name: 'z',
11742                         range: [8, 9],
11743                         loc: {
11744                             start: { line: 1, column: 8 },
11745                             end: { line: 1, column: 9 }
11746                         }
11747                     },
11748                     range: [4, 9],
11749                     loc: {
11750                         start: { line: 1, column: 4 },
11751                         end: { line: 1, column: 9 }
11752                     }
11753                 },
11754                 range: [0, 9],
11755                 loc: {
11756                     start: { line: 1, column: 0 },
11757                     end: { line: 1, column: 9 }
11758                 }
11759             },
11760             range: [0, 9],
11761             loc: {
11762                 start: { line: 1, column: 0 },
11763                 end: { line: 1, column: 9 }
11764             }
11765         },
11766
11767         'x | y & z': {
11768             type: 'ExpressionStatement',
11769             expression: {
11770                 type: 'BinaryExpression',
11771                 operator: '|',
11772                 left: {
11773                     type: 'Identifier',
11774                     name: 'x',
11775                     range: [0, 1],
11776                     loc: {
11777                         start: { line: 1, column: 0 },
11778                         end: { line: 1, column: 1 }
11779                     }
11780                 },
11781                 right: {
11782                     type: 'BinaryExpression',
11783                     operator: '&',
11784                     left: {
11785                         type: 'Identifier',
11786                         name: 'y',
11787                         range: [4, 5],
11788                         loc: {
11789                             start: { line: 1, column: 4 },
11790                             end: { line: 1, column: 5 }
11791                         }
11792                     },
11793                     right: {
11794                         type: 'Identifier',
11795                         name: 'z',
11796                         range: [8, 9],
11797                         loc: {
11798                             start: { line: 1, column: 8 },
11799                             end: { line: 1, column: 9 }
11800                         }
11801                     },
11802                     range: [4, 9],
11803                     loc: {
11804                         start: { line: 1, column: 4 },
11805                         end: { line: 1, column: 9 }
11806                     }
11807                 },
11808                 range: [0, 9],
11809                 loc: {
11810                     start: { line: 1, column: 0 },
11811                     end: { line: 1, column: 9 }
11812                 }
11813             },
11814             range: [0, 9],
11815             loc: {
11816                 start: { line: 1, column: 0 },
11817                 end: { line: 1, column: 9 }
11818             }
11819         }
11820
11821     },
11822
11823     'Binary Logical Operators': {
11824
11825         'x || y': {
11826             type: 'ExpressionStatement',
11827             expression: {
11828                 type: 'LogicalExpression',
11829                 operator: '||',
11830                 left: {
11831                     type: 'Identifier',
11832                     name: 'x',
11833                     range: [0, 1],
11834                     loc: {
11835                         start: { line: 1, column: 0 },
11836                         end: { line: 1, column: 1 }
11837                     }
11838                 },
11839                 right: {
11840                     type: 'Identifier',
11841                     name: 'y',
11842                     range: [5, 6],
11843                     loc: {
11844                         start: { line: 1, column: 5 },
11845                         end: { line: 1, column: 6 }
11846                     }
11847                 },
11848                 range: [0, 6],
11849                 loc: {
11850                     start: { line: 1, column: 0 },
11851                     end: { line: 1, column: 6 }
11852                 }
11853             },
11854             range: [0, 6],
11855             loc: {
11856                 start: { line: 1, column: 0 },
11857                 end: { line: 1, column: 6 }
11858             }
11859         },
11860
11861         'x && y': {
11862             type: 'ExpressionStatement',
11863             expression: {
11864                 type: 'LogicalExpression',
11865                 operator: '&&',
11866                 left: {
11867                     type: 'Identifier',
11868                     name: 'x',
11869                     range: [0, 1],
11870                     loc: {
11871                         start: { line: 1, column: 0 },
11872                         end: { line: 1, column: 1 }
11873                     }
11874                 },
11875                 right: {
11876                     type: 'Identifier',
11877                     name: 'y',
11878                     range: [5, 6],
11879                     loc: {
11880                         start: { line: 1, column: 5 },
11881                         end: { line: 1, column: 6 }
11882                     }
11883                 },
11884                 range: [0, 6],
11885                 loc: {
11886                     start: { line: 1, column: 0 },
11887                     end: { line: 1, column: 6 }
11888                 }
11889             },
11890             range: [0, 6],
11891             loc: {
11892                 start: { line: 1, column: 0 },
11893                 end: { line: 1, column: 6 }
11894             }
11895         },
11896
11897         'x || y || z': {
11898             type: 'ExpressionStatement',
11899             expression: {
11900                 type: 'LogicalExpression',
11901                 operator: '||',
11902                 left: {
11903                     type: 'LogicalExpression',
11904                     operator: '||',
11905                     left: {
11906                         type: 'Identifier',
11907                         name: 'x',
11908                         range: [0, 1],
11909                         loc: {
11910                             start: { line: 1, column: 0 },
11911                             end: { line: 1, column: 1 }
11912                         }
11913                     },
11914                     right: {
11915                         type: 'Identifier',
11916                         name: 'y',
11917                         range: [5, 6],
11918                         loc: {
11919                             start: { line: 1, column: 5 },
11920                             end: { line: 1, column: 6 }
11921                         }
11922                     },
11923                     range: [0, 6],
11924                     loc: {
11925                         start: { line: 1, column: 0 },
11926                         end: { line: 1, column: 6 }
11927                     }
11928                 },
11929                 right: {
11930                     type: 'Identifier',
11931                     name: 'z',
11932                     range: [10, 11],
11933                     loc: {
11934                         start: { line: 1, column: 10 },
11935                         end: { line: 1, column: 11 }
11936                     }
11937                 },
11938                 range: [0, 11],
11939                 loc: {
11940                     start: { line: 1, column: 0 },
11941                     end: { line: 1, column: 11 }
11942                 }
11943             },
11944             range: [0, 11],
11945             loc: {
11946                 start: { line: 1, column: 0 },
11947                 end: { line: 1, column: 11 }
11948             }
11949         },
11950
11951         'x && y && z': {
11952             type: 'ExpressionStatement',
11953             expression: {
11954                 type: 'LogicalExpression',
11955                 operator: '&&',
11956                 left: {
11957                     type: 'LogicalExpression',
11958                     operator: '&&',
11959                     left: {
11960                         type: 'Identifier',
11961                         name: 'x',
11962                         range: [0, 1],
11963                         loc: {
11964                             start: { line: 1, column: 0 },
11965                             end: { line: 1, column: 1 }
11966                         }
11967                     },
11968                     right: {
11969                         type: 'Identifier',
11970                         name: 'y',
11971                         range: [5, 6],
11972                         loc: {
11973                             start: { line: 1, column: 5 },
11974                             end: { line: 1, column: 6 }
11975                         }
11976                     },
11977                     range: [0, 6],
11978                     loc: {
11979                         start: { line: 1, column: 0 },
11980                         end: { line: 1, column: 6 }
11981                     }
11982                 },
11983                 right: {
11984                     type: 'Identifier',
11985                     name: 'z',
11986                     range: [10, 11],
11987                     loc: {
11988                         start: { line: 1, column: 10 },
11989                         end: { line: 1, column: 11 }
11990                     }
11991                 },
11992                 range: [0, 11],
11993                 loc: {
11994                     start: { line: 1, column: 0 },
11995                     end: { line: 1, column: 11 }
11996                 }
11997             },
11998             range: [0, 11],
11999             loc: {
12000                 start: { line: 1, column: 0 },
12001                 end: { line: 1, column: 11 }
12002             }
12003         },
12004
12005         'x || y && z': {
12006             type: 'ExpressionStatement',
12007             expression: {
12008                 type: 'LogicalExpression',
12009                 operator: '||',
12010                 left: {
12011                     type: 'Identifier',
12012                     name: 'x',
12013                     range: [0, 1],
12014                     loc: {
12015                         start: { line: 1, column: 0 },
12016                         end: { line: 1, column: 1 }
12017                     }
12018                 },
12019                 right: {
12020                     type: 'LogicalExpression',
12021                     operator: '&&',
12022                     left: {
12023                         type: 'Identifier',
12024                         name: 'y',
12025                         range: [5, 6],
12026                         loc: {
12027                             start: { line: 1, column: 5 },
12028                             end: { line: 1, column: 6 }
12029                         }
12030                     },
12031                     right: {
12032                         type: 'Identifier',
12033                         name: 'z',
12034                         range: [10, 11],
12035                         loc: {
12036                             start: { line: 1, column: 10 },
12037                             end: { line: 1, column: 11 }
12038                         }
12039                     },
12040                     range: [5, 11],
12041                     loc: {
12042                         start: { line: 1, column: 5 },
12043                         end: { line: 1, column: 11 }
12044                     }
12045                 },
12046                 range: [0, 11],
12047                 loc: {
12048                     start: { line: 1, column: 0 },
12049                     end: { line: 1, column: 11 }
12050                 }
12051             },
12052             range: [0, 11],
12053             loc: {
12054                 start: { line: 1, column: 0 },
12055                 end: { line: 1, column: 11 }
12056             }
12057         },
12058
12059         'x || y ^ z': {
12060             type: 'ExpressionStatement',
12061             expression: {
12062                 type: 'LogicalExpression',
12063                 operator: '||',
12064                 left: {
12065                     type: 'Identifier',
12066                     name: 'x',
12067                     range: [0, 1],
12068                     loc: {
12069                         start: { line: 1, column: 0 },
12070                         end: { line: 1, column: 1 }
12071                     }
12072                 },
12073                 right: {
12074                     type: 'BinaryExpression',
12075                     operator: '^',
12076                     left: {
12077                         type: 'Identifier',
12078                         name: 'y',
12079                         range: [5, 6],
12080                         loc: {
12081                             start: { line: 1, column: 5 },
12082                             end: { line: 1, column: 6 }
12083                         }
12084                     },
12085                     right: {
12086                         type: 'Identifier',
12087                         name: 'z',
12088                         range: [9, 10],
12089                         loc: {
12090                             start: { line: 1, column: 9 },
12091                             end: { line: 1, column: 10 }
12092                         }
12093                     },
12094                     range: [5, 10],
12095                     loc: {
12096                         start: { line: 1, column: 5 },
12097                         end: { line: 1, column: 10 }
12098                     }
12099                 },
12100                 range: [0, 10],
12101                 loc: {
12102                     start: { line: 1, column: 0 },
12103                     end: { line: 1, column: 10 }
12104                 }
12105             },
12106             range: [0, 10],
12107             loc: {
12108                 start: { line: 1, column: 0 },
12109                 end: { line: 1, column: 10 }
12110             }
12111         }
12112
12113     },
12114
12115     'Conditional Operator': {
12116
12117         'y ? 1 : 2': {
12118             type: 'ExpressionStatement',
12119             expression: {
12120                 type: 'ConditionalExpression',
12121                 test: {
12122                     type: 'Identifier',
12123                     name: 'y',
12124                     range: [0, 1],
12125                     loc: {
12126                         start: { line: 1, column: 0 },
12127                         end: { line: 1, column: 1 }
12128                     }
12129                 },
12130                 consequent: {
12131                     type: 'Literal',
12132                     value: 1,
12133                     raw: '1',
12134                     range: [4, 5],
12135                     loc: {
12136                         start: { line: 1, column: 4 },
12137                         end: { line: 1, column: 5 }
12138                     }
12139                 },
12140                 alternate: {
12141                     type: 'Literal',
12142                     value: 2,
12143                     raw: '2',
12144                     range: [8, 9],
12145                     loc: {
12146                         start: { line: 1, column: 8 },
12147                         end: { line: 1, column: 9 }
12148                     }
12149                 },
12150                 range: [0, 9],
12151                 loc: {
12152                     start: { line: 1, column: 0 },
12153                     end: { line: 1, column: 9 }
12154                 }
12155             },
12156             range: [0, 9],
12157             loc: {
12158                 start: { line: 1, column: 0 },
12159                 end: { line: 1, column: 9 }
12160             }
12161         },
12162
12163         'x && y ? 1 : 2': {
12164             type: 'ExpressionStatement',
12165             expression: {
12166                 type: 'ConditionalExpression',
12167                 test: {
12168                     type: 'LogicalExpression',
12169                     operator: '&&',
12170                     left: {
12171                         type: 'Identifier',
12172                         name: 'x',
12173                         range: [0, 1],
12174                         loc: {
12175                             start: { line: 1, column: 0 },
12176                             end: { line: 1, column: 1 }
12177                         }
12178                     },
12179                     right: {
12180                         type: 'Identifier',
12181                         name: 'y',
12182                         range: [5, 6],
12183                         loc: {
12184                             start: { line: 1, column: 5 },
12185                             end: { line: 1, column: 6 }
12186                         }
12187                     },
12188                     range: [0, 6],
12189                     loc: {
12190                         start: { line: 1, column: 0 },
12191                         end: { line: 1, column: 6 }
12192                     }
12193                 },
12194                 consequent: {
12195                     type: 'Literal',
12196                     value: 1,
12197                     raw: '1',
12198                     range: [9, 10],
12199                     loc: {
12200                         start: { line: 1, column: 9 },
12201                         end: { line: 1, column: 10 }
12202                     }
12203                 },
12204                 alternate: {
12205                     type: 'Literal',
12206                     value: 2,
12207                     raw: '2',
12208                     range: [13, 14],
12209                     loc: {
12210                         start: { line: 1, column: 13 },
12211                         end: { line: 1, column: 14 }
12212                     }
12213                 },
12214                 range: [0, 14],
12215                 loc: {
12216                     start: { line: 1, column: 0 },
12217                     end: { line: 1, column: 14 }
12218                 }
12219             },
12220             range: [0, 14],
12221             loc: {
12222                 start: { line: 1, column: 0 },
12223                 end: { line: 1, column: 14 }
12224             }
12225         },
12226         'x = (0) ? 1 : 2' : {
12227             type: 'ExpressionStatement',
12228             expression: {
12229                 type: 'AssignmentExpression',
12230                 operator: '=',
12231                 left: {
12232                     type: 'Identifier',
12233                     name: 'x',
12234                     range: [ 0, 1 ],
12235                     loc: {
12236                         start: { line: 1, column: 0 },
12237                         end: { line: 1, column: 1 }
12238                     }
12239                 },
12240                 right: {
12241                     type: 'ConditionalExpression',
12242                     test: {
12243                         type: 'Literal',
12244                         value: 0,
12245                         raw: '0',
12246                         range: [ 5, 6 ],
12247                         loc: { start: { line: 1, column: 5 }, end: { line: 1, column: 6 } }
12248                     },
12249                     consequent: {
12250                         type: 'Literal',
12251                         value: 1,
12252                         raw: '1',
12253                         range: [ 10, 11 ],
12254                         loc: { start: { line: 1, column: 10 }, end: { line: 1, column: 11 } }
12255                     },
12256                     alternate: {
12257                         type: 'Literal',
12258                         value: 2,
12259                         raw: '2',
12260                         range: [ 14, 15 ],
12261                         loc: { start: { line: 1, column: 14 }, end: { line: 1, column: 15 } }
12262                     },
12263                     range: [ 4, 15 ],
12264                     loc: { start: { line: 1, column: 4 }, end: { line: 1, column: 15 } }
12265                 },
12266                 range: [ 0, 15 ],
12267                 loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 15 } }
12268             },
12269             range: [ 0, 15 ],
12270             loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 15 } }
12271         }
12272     },
12273
12274     '[ES6] Arrow Function': {
12275
12276         '() => "test"': {
12277             type: 'ExpressionStatement',
12278             expression: {
12279                 type: 'ArrowFunctionExpression',
12280                 id: null,
12281                 params: [],
12282                 defaults: [],
12283                 body: {
12284                     type: 'Literal',
12285                     value: 'test',
12286                     raw: '"test"',
12287                     range: [6, 12],
12288                     loc: {
12289                         start: { line: 1, column: 6 },
12290                         end: { line: 1, column: 12 }
12291                     }
12292                 },
12293                 rest: null,
12294                 generator: false,
12295                 expression: true,
12296                 range: [0, 12],
12297                 loc: {
12298                     start: { line: 1, column: 0 },
12299                     end: { line: 1, column: 12 }
12300                 }
12301             },
12302             range: [0, 12],
12303             loc: {
12304                 start: { line: 1, column: 0 },
12305                 end: { line: 1, column: 12 }
12306             }
12307         },
12308
12309         'e => "test"': {
12310             type: 'ExpressionStatement',
12311             expression: {
12312                 type: 'ArrowFunctionExpression',
12313                 id: null,
12314                 params: [{
12315                     type: 'Identifier',
12316                     name: 'e',
12317                     range: [0, 1],
12318                     loc: {
12319                         start: { line: 1, column: 0 },
12320                         end: { line: 1, column: 1 }
12321                     }
12322                 }],
12323                 defaults: [],
12324                 body: {
12325                     type: 'Literal',
12326                     value: 'test',
12327                     raw: '"test"',
12328                     range: [5, 11],
12329                     loc: {
12330                         start: { line: 1, column: 5 },
12331                         end: { line: 1, column: 11 }
12332                     }
12333                 },
12334                 rest: null,
12335                 generator: false,
12336                 expression: true,
12337                 range: [0, 11],
12338                 loc: {
12339                     start: { line: 1, column: 0 },
12340                     end: { line: 1, column: 11 }
12341                 }
12342             },
12343             range: [0, 11],
12344             loc: {
12345                 start: { line: 1, column: 0 },
12346                 end: { line: 1, column: 11 }
12347             }
12348         },
12349
12350         '(e) => "test"': {
12351             type: 'ExpressionStatement',
12352             expression: {
12353                 type: 'ArrowFunctionExpression',
12354                 id: null,
12355                 params: [{
12356                     type: 'Identifier',
12357                     name: 'e',
12358                     range: [1, 2],
12359                     loc: {
12360                         start: { line: 1, column: 1 },
12361                         end: { line: 1, column: 2 }
12362                     }
12363                 }],
12364                 defaults: [],
12365                 body: {
12366                     type: 'Literal',
12367                     value: 'test',
12368                     raw: '"test"',
12369                     range: [7, 13],
12370                     loc: {
12371                         start: { line: 1, column: 7 },
12372                         end: { line: 1, column: 13 }
12373                     }
12374                 },
12375                 rest: null,
12376                 generator: false,
12377                 expression: true,
12378                 range: [0, 13],
12379                 loc: {
12380                     start: { line: 1, column: 0 },
12381                     end: { line: 1, column: 13 }
12382                 }
12383             },
12384             range: [0, 13],
12385             loc: {
12386                 start: { line: 1, column: 0 },
12387                 end: { line: 1, column: 13 }
12388             }
12389         },
12390
12391         '(a, b) => "test"': {
12392             type: 'ExpressionStatement',
12393             expression: {
12394                 type: 'ArrowFunctionExpression',
12395                 id: null,
12396                 params: [{
12397                     type: 'Identifier',
12398                     name: 'a',
12399                     range: [1, 2],
12400                     loc: {
12401                         start: { line: 1, column: 1 },
12402                         end: { line: 1, column: 2 }
12403                     }
12404                 }, {
12405                     type: 'Identifier',
12406                     name: 'b',
12407                     range: [4, 5],
12408                     loc: {
12409                         start: { line: 1, column: 4 },
12410                         end: { line: 1, column: 5 }
12411                     }
12412                 }],
12413                 defaults: [],
12414                 body: {
12415                     type: 'Literal',
12416                     value: 'test',
12417                     raw: '"test"',
12418                     range: [10, 16],
12419                     loc: {
12420                         start: { line: 1, column: 10 },
12421                         end: { line: 1, column: 16 }
12422                     }
12423                 },
12424                 rest: null,
12425                 generator: false,
12426                 expression: true,
12427                 range: [0, 16],
12428                 loc: {
12429                     start: { line: 1, column: 0 },
12430                     end: { line: 1, column: 16 }
12431                 }
12432             },
12433             range: [0, 16],
12434             loc: {
12435                 start: { line: 1, column: 0 },
12436                 end: { line: 1, column: 16 }
12437             }
12438         },
12439
12440         'e => { 42; }': {
12441             type: 'ExpressionStatement',
12442             expression: {
12443                 type: 'ArrowFunctionExpression',
12444                 id: null,
12445                 params: [{
12446                     type: 'Identifier',
12447                     name: 'e',
12448                     range: [0, 1],
12449                     loc: {
12450                         start: { line: 1, column: 0 },
12451                         end: { line: 1, column: 1 }
12452                     }
12453                 }],
12454                 defaults: [],
12455                 body: {
12456                     type: 'BlockStatement',
12457                     body: [{
12458                         type: 'ExpressionStatement',
12459                         expression: {
12460                             type: 'Literal',
12461                             value: 42,
12462                             raw: '42',
12463                             range: [7, 9],
12464                             loc: {
12465                                 start: { line: 1, column: 7 },
12466                                 end: { line: 1, column: 9 }
12467                             }
12468                         },
12469                         range: [7, 10],
12470                         loc: {
12471                             start: { line: 1, column: 7 },
12472                             end: { line: 1, column: 10 }
12473                         }
12474                     }],
12475                     range: [5, 12],
12476                     loc: {
12477                         start: { line: 1, column: 5 },
12478                         end: { line: 1, column: 12 }
12479                     }
12480                 },
12481                 rest: null,
12482                 generator: false,
12483                 expression: false,
12484                 range: [0, 12],
12485                 loc: {
12486                     start: { line: 1, column: 0 },
12487                     end: { line: 1, column: 12 }
12488                 }
12489             },
12490             range: [0, 12],
12491             loc: {
12492                 start: { line: 1, column: 0 },
12493                 end: { line: 1, column: 12 }
12494             }
12495         },
12496
12497         'e => ({ property: 42 })': {
12498             type: 'ExpressionStatement',
12499             expression: {
12500                 type: 'ArrowFunctionExpression',
12501                 id: null,
12502                 params: [{
12503                     type: 'Identifier',
12504                     name: 'e',
12505                     range: [0, 1],
12506                     loc: {
12507                         start: { line: 1, column: 0 },
12508                         end: { line: 1, column: 1 }
12509                     }
12510                 }],
12511                 defaults: [],
12512                 body: {
12513                     type: 'ObjectExpression',
12514                     properties: [{
12515                         type: 'Property',
12516                         key: {
12517                             type: 'Identifier',
12518                             name: 'property',
12519                             range: [8, 16],
12520                             loc: {
12521                                 start: { line: 1, column: 8 },
12522                                 end: { line: 1, column: 16 }
12523                             }
12524                         },
12525                         value: {
12526                             type: 'Literal',
12527                             value: 42,
12528                             raw: '42',
12529                             range: [18, 20],
12530                             loc: {
12531                                 start: { line: 1, column: 18 },
12532                                 end: { line: 1, column: 20 }
12533                             }
12534                         },
12535                         kind: 'init',
12536                         method: false,
12537                         shorthand: false,
12538                         range: [8, 20],
12539                         loc: {
12540                             start: { line: 1, column: 8 },
12541                             end: { line: 1, column: 20 }
12542                         }
12543                     }],
12544                     range: [6, 22],
12545                     loc: {
12546                         start: { line: 1, column: 6 },
12547                         end: { line: 1, column: 22 }
12548                     }
12549                 },
12550                 rest: null,
12551                 generator: false,
12552                 expression: true,
12553                 range: [0, 23],
12554                 loc: {
12555                     start: { line: 1, column: 0 },
12556                     end: { line: 1, column: 23 }
12557                 }
12558             },
12559             range: [0, 23],
12560             loc: {
12561                 start: { line: 1, column: 0 },
12562                 end: { line: 1, column: 23 }
12563             }
12564         },
12565
12566         // Not an object!
12567         'e => { label: 42 }': {
12568             type: 'ExpressionStatement',
12569             expression: {
12570                 type: 'ArrowFunctionExpression',
12571                 id: null,
12572                 params: [{
12573                     type: 'Identifier',
12574                     name: 'e',
12575                     range: [0, 1],
12576                     loc: {
12577                         start: { line: 1, column: 0 },
12578                         end: { line: 1, column: 1 }
12579                     }
12580                 }],
12581                 defaults: [],
12582                 body: {
12583                     type: 'BlockStatement',
12584                     body: [{
12585                         type: 'LabeledStatement',
12586                         label: {
12587                             type: 'Identifier',
12588                             name: 'label',
12589                             range: [7, 12],
12590                             loc: {
12591                                 start: { line: 1, column: 7 },
12592                                 end: { line: 1, column: 12 }
12593                             }
12594                         },
12595                         body: {
12596                             type: 'ExpressionStatement',
12597                             expression: {
12598                                 type: 'Literal',
12599                                 value: 42,
12600                                 raw: '42',
12601                                 range: [14, 16],
12602                                 loc: {
12603                                     start: { line: 1, column: 14 },
12604                                     end: { line: 1, column: 16 }
12605                                 }
12606                             },
12607                             range: [14, 17],
12608                             loc: {
12609                                 start: { line: 1, column: 14 },
12610                                 end: { line: 1, column: 17 }
12611                             }
12612                         },
12613                         range: [7, 17],
12614                         loc: {
12615                             start: { line: 1, column: 7 },
12616                             end: { line: 1, column: 17 }
12617                         }
12618                     }],
12619                     range: [5, 18],
12620                     loc: {
12621                         start: { line: 1, column: 5 },
12622                         end: { line: 1, column: 18 }
12623                     }
12624                 },
12625                 rest: null,
12626                 generator: false,
12627                 expression: false,
12628                 range: [0, 18],
12629                 loc: {
12630                     start: { line: 1, column: 0 },
12631                     end: { line: 1, column: 18 }
12632                 }
12633             },
12634             range: [0, 18],
12635             loc: {
12636                 start: { line: 1, column: 0 },
12637                 end: { line: 1, column: 18 }
12638             }
12639         },
12640
12641         '(a, b) => { 42; }': {
12642             type: 'ExpressionStatement',
12643             expression: {
12644                 type: 'ArrowFunctionExpression',
12645                 id: null,
12646                 params: [{
12647                     type: 'Identifier',
12648                     name: 'a',
12649                     range: [1, 2],
12650                     loc: {
12651                         start: { line: 1, column: 1 },
12652                         end: { line: 1, column: 2 }
12653                     }
12654                 }, {
12655                     type: 'Identifier',
12656                     name: 'b',
12657                     range: [4, 5],
12658                     loc: {
12659                         start: { line: 1, column: 4 },
12660                         end: { line: 1, column: 5 }
12661                     }
12662                 }],
12663                 defaults: [],
12664                 body: {
12665                     type: 'BlockStatement',
12666                     body: [{
12667                         type: 'ExpressionStatement',
12668                         expression: {
12669                             type: 'Literal',
12670                             value: 42,
12671                             raw: '42',
12672                             range: [12, 14],
12673                             loc: {
12674                                 start: { line: 1, column: 12 },
12675                                 end: { line: 1, column: 14 }
12676                             }
12677                         },
12678                         range: [12, 15],
12679                         loc: {
12680                             start: { line: 1, column: 12 },
12681                             end: { line: 1, column: 15 }
12682                         }
12683                     }],
12684                     range: [10, 17],
12685                     loc: {
12686                         start: { line: 1, column: 10 },
12687                         end: { line: 1, column: 17 }
12688                     }
12689                 },
12690                 rest: null,
12691                 generator: false,
12692                 expression: false,
12693                 range: [0, 17],
12694                 loc: {
12695                     start: { line: 1, column: 0 },
12696                     end: { line: 1, column: 17 }
12697                 }
12698             },
12699             range: [0, 17],
12700             loc: {
12701                 start: { line: 1, column: 0 },
12702                 end: { line: 1, column: 17 }
12703             }
12704         },
12705
12706         '(x=1) => x * x': {
12707             type: 'ExpressionStatement',
12708             expression: {
12709                 type: 'ArrowFunctionExpression',
12710                 id: null,
12711                 params: [{
12712                     type: 'Identifier',
12713                     name: 'x',
12714                     range: [1, 2],
12715                     loc: {
12716                         start: { line: 1, column: 1 },
12717                         end: { line: 1, column: 2 }
12718                     }
12719                 }],
12720                 defaults: [{
12721                     type: 'Literal',
12722                     value: 1,
12723                     raw: '1',
12724                     range: [3, 4],
12725                     loc: {
12726                         start: { line: 1, column: 3 },
12727                         end: { line: 1, column: 4 }
12728                     }
12729                 }],
12730                 body: {
12731                     type: 'BinaryExpression',
12732                     operator: '*',
12733                     left: {
12734                         type: 'Identifier',
12735                         name: 'x',
12736                         range: [9, 10],
12737                         loc: {
12738                             start: { line: 1, column: 9 },
12739                             end: { line: 1, column: 10 }
12740                         }
12741                     },
12742                     right: {
12743                         type: 'Identifier',
12744                         name: 'x',
12745                         range: [13, 14],
12746                         loc: {
12747                             start: { line: 1, column: 13 },
12748                             end: { line: 1, column: 14 }
12749                         }
12750                     },
12751                     range: [9, 14],
12752                     loc: {
12753                         start: { line: 1, column: 9 },
12754                         end: { line: 1, column: 14 }
12755                     }
12756                 },
12757                 rest: null,
12758                 generator: false,
12759                 expression: true,
12760                 range: [0, 14],
12761                 loc: {
12762                     start: { line: 1, column: 0 },
12763                     end: { line: 1, column: 14 }
12764                 }
12765             },
12766             range: [0, 14],
12767             loc: {
12768                 start: { line: 1, column: 0 },
12769                 end: { line: 1, column: 14 }
12770             }
12771         },
12772
12773         // not strict mode, using eval
12774         'eval => 42': {
12775             type: 'ExpressionStatement',
12776             expression: {
12777                 type: 'ArrowFunctionExpression',
12778                 id: null,
12779                 params: [{
12780                     type: 'Identifier',
12781                     name: 'eval',
12782                     range: [0, 4],
12783                     loc: {
12784                         start: { line: 1, column: 0 },
12785                         end: { line: 1, column: 4 }
12786                     }
12787                 }],
12788                 defaults: [],
12789                 body: {
12790                     type: 'Literal',
12791                     value: 42,
12792                     raw: '42',
12793                     range: [8, 10],
12794                     loc: {
12795                         start: { line: 1, column: 8 },
12796                         end: { line: 1, column: 10 }
12797                     }
12798                 },
12799                 rest: null,
12800                 generator: false,
12801                 expression: true,
12802                 range: [0, 10],
12803                 loc: {
12804                     start: { line: 1, column: 0 },
12805                     end: { line: 1, column: 10 }
12806                 }
12807             },
12808             range: [0, 10],
12809             loc: {
12810                 start: { line: 1, column: 0 },
12811                 end: { line: 1, column: 10 }
12812             }
12813         },
12814
12815         // not strict mode, using arguments
12816         'arguments => 42': {
12817             type: 'ExpressionStatement',
12818             expression: {
12819                 type: 'ArrowFunctionExpression',
12820                 id: null,
12821                 params: [{
12822                     type: 'Identifier',
12823                     name: 'arguments',
12824                     range: [0, 9],
12825                     loc: {
12826                         start: { line: 1, column: 0 },
12827                         end: { line: 1, column: 9 }
12828                     }
12829                 }],
12830                 defaults: [],
12831                 body: {
12832                     type: 'Literal',
12833                     value: 42,
12834                     raw: '42',
12835                     range: [13, 15],
12836                     loc: {
12837                         start: { line: 1, column: 13 },
12838                         end: { line: 1, column: 15 }
12839                     }
12840                 },
12841                 rest: null,
12842                 generator: false,
12843                 expression: true,
12844                 range: [0, 15],
12845                 loc: {
12846                     start: { line: 1, column: 0 },
12847                     end: { line: 1, column: 15 }
12848                 }
12849             },
12850             range: [0, 15],
12851             loc: {
12852                 start: { line: 1, column: 0 },
12853                 end: { line: 1, column: 15 }
12854             }
12855         },
12856
12857         // not strict mode, using octals
12858         '(a) => 00': {
12859             type: 'ExpressionStatement',
12860             expression: {
12861                 type: 'ArrowFunctionExpression',
12862                 id: null,
12863                 params: [{
12864                     type: 'Identifier',
12865                     name: 'a',
12866                     range: [1, 2],
12867                     loc: {
12868                         start: { line: 1, column: 1 },
12869                         end: { line: 1, column: 2 }
12870                     }
12871                 }],
12872                 defaults: [],
12873                 body: {
12874                     type: 'Literal',
12875                     value: 0,
12876                     raw: '00',
12877                     range: [7, 9],
12878                     loc: {
12879                         start: { line: 1, column: 7 },
12880                         end: { line: 1, column: 9 }
12881                     }
12882                 },
12883                 rest: null,
12884                 generator: false,
12885                 expression: true,
12886                 range: [0, 9],
12887                 loc: {
12888                     start: { line: 1, column: 0 },
12889                     end: { line: 1, column: 9 }
12890                 }
12891             },
12892             range: [0, 9],
12893             loc: {
12894                 start: { line: 1, column: 0 },
12895                 end: { line: 1, column: 9 }
12896             }
12897         },
12898
12899         // not strict mode, using eval, IsSimpleParameterList is true
12900         '(eval, a) => 42': {
12901             type: 'ExpressionStatement',
12902             expression: {
12903                 type: 'ArrowFunctionExpression',
12904                 id: null,
12905                 params: [{
12906                     type: 'Identifier',
12907                     name: 'eval',
12908                     range: [1, 5],
12909                     loc: {
12910                         start: { line: 1, column: 1 },
12911                         end: { line: 1, column: 5 }
12912                     }
12913                 }, {
12914                     type: 'Identifier',
12915                     name: 'a',
12916                     range: [7, 8],
12917                     loc: {
12918                         start: { line: 1, column: 7 },
12919                         end: { line: 1, column: 8 }
12920                     }
12921                 }],
12922                 defaults: [],
12923                 body: {
12924                     type: 'Literal',
12925                     value: 42,
12926                     raw: '42',
12927                     range: [13, 15],
12928                     loc: {
12929                         start: { line: 1, column: 13 },
12930                         end: { line: 1, column: 15 }
12931                     }
12932                 },
12933                 rest: null,
12934                 generator: false,
12935                 expression: true,
12936                 range: [0, 15],
12937                 loc: {
12938                     start: { line: 1, column: 0 },
12939                     end: { line: 1, column: 15 }
12940                 }
12941             },
12942             range: [0, 15],
12943             loc: {
12944                 start: { line: 1, column: 0 },
12945                 end: { line: 1, column: 15 }
12946             }
12947         },
12948
12949         // not strict mode, assigning to eval
12950         '(eval = 10) => 42': {
12951             type: 'ExpressionStatement',
12952             expression: {
12953                 type: 'ArrowFunctionExpression',
12954                 id: null,
12955                 params: [{
12956                     type: 'Identifier',
12957                     name: 'eval',
12958                     range: [1, 5],
12959                     loc: {
12960                         start: { line: 1, column: 1 },
12961                         end: { line: 1, column: 5 }
12962                     }
12963                 }],
12964                 defaults: [{
12965                     type: 'Literal',
12966                     value: 10,
12967                     raw: '10',
12968                     range: [8, 10],
12969                     loc: {
12970                         start: { line: 1, column: 8 },
12971                         end: { line: 1, column: 10 }
12972                     }
12973                 }],
12974                 body: {
12975                     type: 'Literal',
12976                     value: 42,
12977                     raw: '42',
12978                     range: [15, 17],
12979                     loc: {
12980                         start: { line: 1, column: 15 },
12981                         end: { line: 1, column: 17 }
12982                     }
12983                 },
12984                 rest: null,
12985                 generator: false,
12986                 expression: true,
12987                 range: [0, 17],
12988                 loc: {
12989                     start: { line: 1, column: 0 },
12990                     end: { line: 1, column: 17 }
12991                 }
12992             },
12993             range: [0, 17],
12994             loc: {
12995                 start: { line: 1, column: 0 },
12996                 end: { line: 1, column: 17 }
12997             }
12998         },
12999
13000         // not strict mode, using eval, IsSimpleParameterList is false
13001         '(eval, a = 10) => 42': {
13002             type: 'ExpressionStatement',
13003             expression: {
13004                 type: 'ArrowFunctionExpression',
13005                 id: null,
13006                 params: [{
13007                     type: 'Identifier',
13008                     name: 'eval',
13009                     range: [1, 5],
13010                     loc: {
13011                         start: { line: 1, column: 1 },
13012                         end: { line: 1, column: 5 }
13013                     }
13014                 }, {
13015                     type: 'Identifier',
13016                     name: 'a',
13017                     range: [7, 8],
13018                     loc: {
13019                         start: { line: 1, column: 7 },
13020                         end: { line: 1, column: 8 }
13021                     }
13022                 }],
13023                 defaults: [null, {
13024                     type: 'Literal',
13025                     value: 10,
13026                     raw: '10',
13027                     range: [11, 13],
13028                     loc: {
13029                         start: { line: 1, column: 11 },
13030                         end: { line: 1, column: 13 }
13031                     }
13032                 }],
13033                 body: {
13034                     type: 'Literal',
13035                     value: 42,
13036                     raw: '42',
13037                     range: [18, 20],
13038                     loc: {
13039                         start: { line: 1, column: 18 },
13040                         end: { line: 1, column: 20 }
13041                     }
13042                 },
13043                 rest: null,
13044                 generator: false,
13045                 expression: true,
13046                 range: [0, 20],
13047                 loc: {
13048                     start: { line: 1, column: 0 },
13049                     end: { line: 1, column: 20 }
13050                 }
13051             },
13052             range: [0, 20],
13053             loc: {
13054                 start: { line: 1, column: 0 },
13055                 end: { line: 1, column: 20 }
13056             }
13057         },
13058
13059         '(x => x)': {
13060             type: 'ExpressionStatement',
13061             expression: {
13062                 type: 'ArrowFunctionExpression',
13063                 id: null,
13064                 params: [{
13065                     type: 'Identifier',
13066                     name: 'x',
13067                     range: [1, 2],
13068                     loc: {
13069                         start: { line: 1, column: 1 },
13070                         end: { line: 1, column: 2 }
13071                     }
13072                 }],
13073                 defaults: [],
13074                 body: {
13075                     type: 'Identifier',
13076                     name: 'x',
13077                     range: [6, 7],
13078                     loc: {
13079                         start: { line: 1, column: 6 },
13080                         end: { line: 1, column: 7 }
13081                     }
13082                 },
13083                 rest: null,
13084                 generator: false,
13085                 expression: true,
13086                 range: [1, 7],
13087                 loc: {
13088                     start: { line: 1, column: 1 },
13089                     end: { line: 1, column: 7 }
13090                 }
13091             },
13092             range: [0, 8],
13093             loc: {
13094                 start: { line: 1, column: 0 },
13095                 end: { line: 1, column: 8 }
13096             }
13097         },
13098
13099         'x => y => 42': {
13100             type: 'ExpressionStatement',
13101             expression: {
13102                 type: 'ArrowFunctionExpression',
13103                 id: null,
13104                 params: [{
13105                     type: 'Identifier',
13106                     name: 'x',
13107                     range: [0, 1],
13108                     loc: {
13109                         start: { line: 1, column: 0 },
13110                         end: { line: 1, column: 1 }
13111                     }
13112                 }],
13113                 defaults: [],
13114                 body: {
13115                     type: 'ArrowFunctionExpression',
13116                     id: null,
13117                     params: [{
13118                         type: 'Identifier',
13119                         name: 'y',
13120                         range: [5, 6],
13121                         loc: {
13122                             start: { line: 1, column: 5 },
13123                             end: { line: 1, column: 6 }
13124                         }
13125                     }],
13126                     defaults: [],
13127                     body: {
13128                         type: 'Literal',
13129                         value: 42,
13130                         raw: '42',
13131                         range: [10, 12],
13132                         loc: {
13133                             start: { line: 1, column: 10 },
13134                             end: { line: 1, column: 12 }
13135                         }
13136                     },
13137                     rest: null,
13138                     generator: false,
13139                     expression: true,
13140                     range: [5, 12],
13141                     loc: {
13142                         start: { line: 1, column: 5 },
13143                         end: { line: 1, column: 12 }
13144                     }
13145                 },
13146                 rest: null,
13147                 generator: false,
13148                 expression: true,
13149                 range: [0, 12],
13150                 loc: {
13151                     start: { line: 1, column: 0 },
13152                     end: { line: 1, column: 12 }
13153                 }
13154             },
13155             range: [0, 12],
13156             loc: {
13157                 start: { line: 1, column: 0 },
13158                 end: { line: 1, column: 12 }
13159             }
13160         },
13161
13162         '(x) => ((y, z) => (x, y, z))': {
13163             type: 'ExpressionStatement',
13164             expression: {
13165                 type: 'ArrowFunctionExpression',
13166                 id: null,
13167                 params: [{
13168                     type: 'Identifier',
13169                     name: 'x',
13170                     range: [1, 2],
13171                     loc: {
13172                         start: { line: 1, column: 1 },
13173                         end: { line: 1, column: 2 }
13174                     }
13175                 }],
13176                 defaults: [],
13177                 body: {
13178                     type: 'ArrowFunctionExpression',
13179                     id: null,
13180                     params: [{
13181                         type: 'Identifier',
13182                         name: 'y',
13183                         range: [9, 10],
13184                         loc: {
13185                             start: { line: 1, column: 9 },
13186                             end: { line: 1, column: 10 }
13187                         }
13188                     }, {
13189                         type: 'Identifier',
13190                         name: 'z',
13191                         range: [12, 13],
13192                         loc: {
13193                             start: { line: 1, column: 12 },
13194                             end: { line: 1, column: 13 }
13195                         }
13196                     }],
13197                     defaults: [],
13198                     body: {
13199                         type: 'SequenceExpression',
13200                         expressions: [{
13201                             type: 'Identifier',
13202                             name: 'x',
13203                             range: [19, 20],
13204                             loc: {
13205                                 start: { line: 1, column: 19 },
13206                                 end: { line: 1, column: 20 }
13207                             }
13208                         }, {
13209                             type: 'Identifier',
13210                             name: 'y',
13211                             range: [22, 23],
13212                             loc: {
13213                                 start: { line: 1, column: 22 },
13214                                 end: { line: 1, column: 23 }
13215                             }
13216                         }, {
13217                             type: 'Identifier',
13218                             name: 'z',
13219                             range: [25, 26],
13220                             loc: {
13221                                 start: { line: 1, column: 25 },
13222                                 end: { line: 1, column: 26 }
13223                             }
13224                         }],
13225                         range: [19, 26],
13226                         loc: {
13227                             start: { line: 1, column: 19 },
13228                             end: { line: 1, column: 26 }
13229                         }
13230                     },
13231                     rest: null,
13232                     generator: false,
13233                     expression: true,
13234                     range: [8, 27],
13235                     loc: {
13236                         start: { line: 1, column: 8 },
13237                         end: { line: 1, column: 27 }
13238                     }
13239                 },
13240                 rest: null,
13241                 generator: false,
13242                 expression: true,
13243                 range: [0, 28],
13244                 loc: {
13245                     start: { line: 1, column: 0 },
13246                     end: { line: 1, column: 28 }
13247                 }
13248             },
13249             range: [0, 28],
13250             loc: {
13251                 start: { line: 1, column: 0 },
13252                 end: { line: 1, column: 28 }
13253             }
13254         },
13255
13256         'foo(() => {})': {
13257             type: 'ExpressionStatement',
13258             expression: {
13259                 type: 'CallExpression',
13260                 callee: {
13261                     type: 'Identifier',
13262                     name: 'foo',
13263                     range: [0, 3],
13264                     loc: {
13265                         start: { line: 1, column: 0 },
13266                         end: { line: 1, column: 3 }
13267                     }
13268                 },
13269                 'arguments': [{
13270                     type: 'ArrowFunctionExpression',
13271                     id: null,
13272                     params: [],
13273                     defaults: [],
13274                     body: {
13275                         type: 'BlockStatement',
13276                         body: [],
13277                         range: [10, 12],
13278                         loc: {
13279                             start: { line: 1, column: 10 },
13280                             end: { line: 1, column: 12 }
13281                         }
13282                     },
13283                     rest: null,
13284                     generator: false,
13285                     expression: false,
13286                     range: [4, 12],
13287                     loc: {
13288                         start: { line: 1, column: 4 },
13289                         end: { line: 1, column: 12 }
13290                     }
13291                 }],
13292                 range: [0, 13],
13293                 loc: {
13294                     start: { line: 1, column: 0 },
13295                     end: { line: 1, column: 13 }
13296                 }
13297             },
13298             range: [0, 13],
13299             loc: {
13300                 start: { line: 1, column: 0 },
13301                 end: { line: 1, column: 13 }
13302             }
13303         },
13304
13305         'foo((x, y) => {})': {
13306             type: 'ExpressionStatement',
13307             expression: {
13308                 type: 'CallExpression',
13309                 callee: {
13310                     type: 'Identifier',
13311                     name: 'foo',
13312                     range: [0, 3],
13313                     loc: {
13314                         start: { line: 1, column: 0 },
13315                         end: { line: 1, column: 3 }
13316                     }
13317                 },
13318                 'arguments': [{
13319                     type: 'ArrowFunctionExpression',
13320                     id: null,
13321                     params: [{
13322                         type: 'Identifier',
13323                         name: 'x',
13324                         range: [5, 6],
13325                         loc: {
13326                             start: { line: 1, column: 5 },
13327                             end: { line: 1, column: 6 }
13328                         }
13329                     }, {
13330                         type: 'Identifier',
13331                         name: 'y',
13332                         range: [8, 9],
13333                         loc: {
13334                             start: { line: 1, column: 8 },
13335                             end: { line: 1, column: 9 }
13336                         }
13337                     }],
13338                     defaults: [],
13339                     body: {
13340                         type: 'BlockStatement',
13341                         body: [],
13342                         range: [14, 16],
13343                         loc: {
13344                             start: { line: 1, column: 14 },
13345                             end: { line: 1, column: 16 }
13346                         }
13347                     },
13348                     rest: null,
13349                     generator: false,
13350                     expression: false,
13351                     range: [4, 16],
13352                     loc: {
13353                         start: { line: 1, column: 4 },
13354                         end: { line: 1, column: 16 }
13355                     }
13356                 }],
13357                 range: [0, 17],
13358                 loc: {
13359                     start: { line: 1, column: 0 },
13360                     end: { line: 1, column: 17 }
13361                 }
13362             },
13363             range: [0, 17],
13364             loc: {
13365                 start: { line: 1, column: 0 },
13366                 end: { line: 1, column: 17 }
13367             }
13368         },
13369
13370         '(sun) => earth': {
13371             type: "Program",
13372             body: [{
13373                 type: "ExpressionStatement",
13374                 expression: {
13375                     type: "ArrowFunctionExpression",
13376                     id: null,
13377                     params: [{
13378                         type: "Identifier",
13379                         name: "sun",
13380                         range: [1, 4],
13381                         loc: {
13382                             start: { line: 1, column: 1 },
13383                             end: { line: 1, column: 4 }
13384                         }
13385                     }],
13386                     defaults: [],
13387                     body: {
13388                         type: "Identifier",
13389                         name: "earth",
13390                         range: [9, 14],
13391                         loc: {
13392                             start: { line: 1, column: 9 },
13393                             end: { line: 1, column: 14 }
13394                         }
13395                     },
13396                     rest: null,
13397                     generator: false,
13398                     expression: true,
13399                     range: [0, 14],
13400                     loc: {
13401                         start: { line: 1, column: 0 },
13402                         end: { line: 1, column: 14 }
13403                     }
13404                 },
13405                 range: [0, 14],
13406                 loc: {
13407                     start: { line: 1, column: 0 },
13408                     end: { line: 1, column: 14 }
13409                 }
13410             }],
13411             range: [0, 14],
13412             loc: {
13413                 start: { line: 1, column: 0 },
13414                 end: { line: 1, column: 14 }
13415             },
13416             tokens: [{
13417                 type: "Punctuator",
13418                 value: "(",
13419                 range: [0, 1],
13420                 loc: {
13421                     start: { line: 1, column: 0 },
13422                     end: { line: 1, column: 1 }
13423                 }
13424             }, {
13425                 type: "Identifier",
13426                 value: "sun",
13427                 range: [1, 4],
13428                 loc: {
13429                     start: { line: 1, column: 1 },
13430                     end: { line: 1, column: 4 }
13431                 }
13432             }, {
13433                 type: "Punctuator",
13434                 value: ")",
13435                 range: [4, 5],
13436                 loc: {
13437                     start: { line: 1, column: 4 },
13438                     end: { line: 1, column: 5 }
13439                 }
13440             }, {
13441                 type: "Punctuator",
13442                 value: "=>",
13443                 range: [6, 8],
13444                 loc: {
13445                     start: { line: 1, column: 6 },
13446                     end: { line: 1, column: 8 }
13447                 }
13448             }, {
13449                 type: "Identifier",
13450                 value: "earth",
13451                 range: [9, 14],
13452                 loc: {
13453                     start: { line: 1, column: 9 },
13454                     end: { line: 1, column: 14 }
13455                 }
13456             }]
13457         }
13458
13459     },
13460
13461     '[ES6] Method Definition': {
13462
13463         'x = { method() { } }': {
13464             type: 'ExpressionStatement',
13465             expression: {
13466                 type: 'AssignmentExpression',
13467                 operator: '=',
13468                 left: {
13469                     type: 'Identifier',
13470                     name: 'x',
13471                     range: [0, 1],
13472                     loc: {
13473                         start: { line: 1, column: 0 },
13474                         end: { line: 1, column: 1 }
13475                     }
13476                 },
13477                 right: {
13478                     type: 'ObjectExpression',
13479                     properties: [{
13480                         type: 'Property',
13481                         key: {
13482                             type: 'Identifier',
13483                             name: 'method',
13484                             range: [6, 12],
13485                             loc: {
13486                                 start: { line: 1, column: 6 },
13487                                 end: { line: 1, column: 12 }
13488                             }
13489                         },
13490                         value: {
13491                             type: 'FunctionExpression',
13492                             id: null,
13493                             params: [],
13494                             defaults: [],
13495                             body: {
13496                                 type: 'BlockStatement',
13497                                 body: [],
13498                                 range: [15, 18],
13499                                 loc: {
13500                                     start: { line: 1, column: 15 },
13501                                     end: { line: 1, column: 18 }
13502                                 }
13503                             },
13504                             rest: null,
13505                             generator: false,
13506                             expression: false,
13507                             range: [15, 18],
13508                             loc: {
13509                                 start: { line: 1, column: 15 },
13510                                 end: { line: 1, column: 18 }
13511                             }
13512                         },
13513                         kind: 'init',
13514                         method: true,
13515                         shorthand: false,
13516                         range: [6, 18],
13517                         loc: {
13518                             start: { line: 1, column: 6 },
13519                             end: { line: 1, column: 18 }
13520                         }
13521                     }],
13522                     range: [4, 20],
13523                     loc: {
13524                         start: { line: 1, column: 4 },
13525                         end: { line: 1, column: 20 }
13526                     }
13527                 },
13528                 range: [0, 20],
13529                 loc: {
13530                     start: { line: 1, column: 0 },
13531                     end: { line: 1, column: 20 }
13532                 }
13533             },
13534             range: [0, 20],
13535             loc: {
13536                 start: { line: 1, column: 0 },
13537                 end: { line: 1, column: 20 }
13538             }
13539         },
13540
13541         'x = { method(test) { } }': {
13542             type: 'ExpressionStatement',
13543             expression: {
13544                 type: 'AssignmentExpression',
13545                 operator: '=',
13546                 left: {
13547                     type: 'Identifier',
13548                     name: 'x',
13549                     range: [0, 1],
13550                     loc: {
13551                         start: { line: 1, column: 0 },
13552                         end: { line: 1, column: 1 }
13553                     }
13554                 },
13555                 right: {
13556                     type: 'ObjectExpression',
13557                     properties: [{
13558                         type: 'Property',
13559                         key: {
13560                             type: 'Identifier',
13561                             name: 'method',
13562                             range: [6, 12],
13563                             loc: {
13564                                 start: { line: 1, column: 6 },
13565                                 end: { line: 1, column: 12 }
13566                             }
13567                         },
13568                         value: {
13569                             type: 'FunctionExpression',
13570                             id: null,
13571                             params: [{
13572                                 type: 'Identifier',
13573                                 name: 'test',
13574                                 range: [13, 17],
13575                                 loc: {
13576                                     start: { line: 1, column: 13 },
13577                                     end: { line: 1, column: 17 }
13578                                 }
13579                             }],
13580                             defaults: [],
13581                             body: {
13582                                 type: 'BlockStatement',
13583                                 body: [],
13584                                 range: [19, 22],
13585                                 loc: {
13586                                     start: { line: 1, column: 19 },
13587                                     end: { line: 1, column: 22 }
13588                                 }
13589                             },
13590                             rest: null,
13591                             generator: false,
13592                             expression: false,
13593                             range: [19, 22],
13594                             loc: {
13595                                 start: { line: 1, column: 19 },
13596                                 end: { line: 1, column: 22 }
13597                             }
13598                         },
13599                         kind: 'init',
13600                         method: true,
13601                         shorthand: false,
13602                         range: [6, 22],
13603                         loc: {
13604                             start: { line: 1, column: 6 },
13605                             end: { line: 1, column: 22 }
13606                         }
13607                     }],
13608                     range: [4, 24],
13609                     loc: {
13610                         start: { line: 1, column: 4 },
13611                         end: { line: 1, column: 24 }
13612                     }
13613                 },
13614                 range: [0, 24],
13615                 loc: {
13616                     start: { line: 1, column: 0 },
13617                     end: { line: 1, column: 24 }
13618                 }
13619             },
13620             range: [0, 24],
13621             loc: {
13622                 start: { line: 1, column: 0 },
13623                 end: { line: 1, column: 24 }
13624             }
13625         },
13626
13627         'x = { \'method\'() { } }': {
13628             type: 'ExpressionStatement',
13629             expression: {
13630                 type: 'AssignmentExpression',
13631                 operator: '=',
13632                 left: {
13633                     type: 'Identifier',
13634                     name: 'x',
13635                     range: [0, 1],
13636                     loc: {
13637                         start: { line: 1, column: 0 },
13638                         end: { line: 1, column: 1 }
13639                     }
13640                 },
13641                 right: {
13642                     type: 'ObjectExpression',
13643                     properties: [{
13644                         type: 'Property',
13645                         key: {
13646                             type: 'Literal',
13647                             value: 'method',
13648                             raw: '\'method\'',
13649                             range: [6, 14],
13650                             loc: {
13651                                 start: { line: 1, column: 6 },
13652                                 end: { line: 1, column: 14 }
13653                             }
13654                         },
13655                         value: {
13656                             type: 'FunctionExpression',
13657                             id: null,
13658                             params: [],
13659                             defaults: [],
13660                             body: {
13661                                 type: 'BlockStatement',
13662                                 body: [],
13663                                 range: [17, 20],
13664                                 loc: {
13665                                     start: { line: 1, column: 17 },
13666                                     end: { line: 1, column: 20 }
13667                                 }
13668                             },
13669                             rest: null,
13670                             generator: false,
13671                             expression: false,
13672                             range: [17, 20],
13673                             loc: {
13674                                 start: { line: 1, column: 17 },
13675                                 end: { line: 1, column: 20 }
13676                             }
13677                         },
13678                         kind: 'init',
13679                         method: true,
13680                         shorthand: false,
13681                         range: [6, 20],
13682                         loc: {
13683                             start: { line: 1, column: 6 },
13684                             end: { line: 1, column: 20 }
13685                         }
13686                     }],
13687                     range: [4, 22],
13688                     loc: {
13689                         start: { line: 1, column: 4 },
13690                         end: { line: 1, column: 22 }
13691                     }
13692                 },
13693                 range: [0, 22],
13694                 loc: {
13695                     start: { line: 1, column: 0 },
13696                     end: { line: 1, column: 22 }
13697                 }
13698             },
13699             range: [0, 22],
13700             loc: {
13701                 start: { line: 1, column: 0 },
13702                 end: { line: 1, column: 22 }
13703             }
13704         },
13705
13706         'x = { get() { } }': {
13707             type: 'ExpressionStatement',
13708             expression: {
13709                 type: 'AssignmentExpression',
13710                 operator: '=',
13711                 left: {
13712                     type: 'Identifier',
13713                     name: 'x',
13714                     range: [0, 1],
13715                     loc: {
13716                         start: { line: 1, column: 0 },
13717                         end: { line: 1, column: 1 }
13718                     }
13719                 },
13720                 right: {
13721                     type: 'ObjectExpression',
13722                     properties: [{
13723                         type: 'Property',
13724                         key: {
13725                             type: 'Identifier',
13726                             name: 'get',
13727                             range: [6, 9],
13728                             loc: {
13729                                 start: { line: 1, column: 6 },
13730                                 end: { line: 1, column: 9 }
13731                             }
13732                         },
13733                         value: {
13734                             type: 'FunctionExpression',
13735                             id: null,
13736                             params: [],
13737                             defaults: [],
13738                             body: {
13739                                 type: 'BlockStatement',
13740                                 body: [],
13741                                 range: [12, 15],
13742                                 loc: {
13743                                     start: { line: 1, column: 12 },
13744                                     end: { line: 1, column: 15 }
13745                                 }
13746                             },
13747                             rest: null,
13748                             generator: false,
13749                             expression: false,
13750                             range: [12, 15],
13751                             loc: {
13752                                 start: { line: 1, column: 12 },
13753                                 end: { line: 1, column: 15 }
13754                             }
13755                         },
13756                         kind: 'init',
13757                         method: true,
13758                         shorthand: false,
13759                         range: [6, 15],
13760                         loc: {
13761                             start: { line: 1, column: 6 },
13762                             end: { line: 1, column: 15 }
13763                         }
13764                     }],
13765                     range: [4, 17],
13766                     loc: {
13767                         start: { line: 1, column: 4 },
13768                         end: { line: 1, column: 17 }
13769                     }
13770                 },
13771                 range: [0, 17],
13772                 loc: {
13773                     start: { line: 1, column: 0 },
13774                     end: { line: 1, column: 17 }
13775                 }
13776             },
13777             range: [0, 17],
13778             loc: {
13779                 start: { line: 1, column: 0 },
13780                 end: { line: 1, column: 17 }
13781             }
13782         },
13783
13784         'x = { set() { } }': {
13785             type: 'ExpressionStatement',
13786             expression: {
13787                 type: 'AssignmentExpression',
13788                 operator: '=',
13789                 left: {
13790                     type: 'Identifier',
13791                     name: 'x',
13792                     range: [0, 1],
13793                     loc: {
13794                         start: { line: 1, column: 0 },
13795                         end: { line: 1, column: 1 }
13796                     }
13797                 },
13798                 right: {
13799                     type: 'ObjectExpression',
13800                     properties: [{
13801                         type: 'Property',
13802                         key: {
13803                             type: 'Identifier',
13804                             name: 'set',
13805                             range: [6, 9],
13806                             loc: {
13807                                 start: { line: 1, column: 6 },
13808                                 end: { line: 1, column: 9 }
13809                             }
13810                         },
13811                         value: {
13812                             type: 'FunctionExpression',
13813                             id: null,
13814                             params: [],
13815                             defaults: [],
13816                             body: {
13817                                 type: 'BlockStatement',
13818                                 body: [],
13819                                 range: [12, 15],
13820                                 loc: {
13821                                     start: { line: 1, column: 12 },
13822                                     end: { line: 1, column: 15 }
13823                                 }
13824                             },
13825                             rest: null,
13826                             generator: false,
13827                             expression: false,
13828                             range: [12, 15],
13829                             loc: {
13830                                 start: { line: 1, column: 12 },
13831                                 end: { line: 1, column: 15 }
13832                             }
13833                         },
13834                         kind: 'init',
13835                         method: true,
13836                         shorthand: false,
13837                         range: [6, 15],
13838                         loc: {
13839                             start: { line: 1, column: 6 },
13840                             end: { line: 1, column: 15 }
13841                         }
13842                     }],
13843                     range: [4, 17],
13844                     loc: {
13845                         start: { line: 1, column: 4 },
13846                         end: { line: 1, column: 17 }
13847                     }
13848                 },
13849                 range: [0, 17],
13850                 loc: {
13851                     start: { line: 1, column: 0 },
13852                     end: { line: 1, column: 17 }
13853                 }
13854             },
13855             range: [0, 17],
13856             loc: {
13857                 start: { line: 1, column: 0 },
13858                 end: { line: 1, column: 17 }
13859             }
13860         }
13861
13862     },
13863
13864     '[ES6] Object Literal Property Value Shorthand': {
13865
13866         'x = { y, z }': {
13867             type: 'ExpressionStatement',
13868             expression: {
13869                 type: 'AssignmentExpression',
13870                 operator: '=',
13871                 left: {
13872                     type: 'Identifier',
13873                     name: 'x',
13874                     range: [0, 1],
13875                     loc: {
13876                         start: { line: 1, column: 0 },
13877                         end: { line: 1, column: 1 }
13878                     }
13879                 },
13880                 right: {
13881                     type: 'ObjectExpression',
13882                     properties: [{
13883                         type: 'Property',
13884                         key: {
13885                             type: 'Identifier',
13886                             name: 'y',
13887                             range: [6, 7],
13888                             loc: {
13889                                 start: { line: 1, column: 6 },
13890                                 end: { line: 1, column: 7 }
13891                             }
13892                         },
13893                         value: {
13894                             type: 'Identifier',
13895                             name: 'y',
13896                             range: [6, 7],
13897                             loc: {
13898                                 start: { line: 1, column: 6 },
13899                                 end: { line: 1, column: 7 }
13900                             }
13901                         },
13902                         kind: 'init',
13903                         method: false,
13904                         shorthand: true,
13905                         range: [6, 7],
13906                         loc: {
13907                             start: { line: 1, column: 6 },
13908                             end: { line: 1, column: 7 }
13909                         }
13910                     }, {
13911                         type: 'Property',
13912                         key: {
13913                             type: 'Identifier',
13914                             name: 'z',
13915                             range: [9, 10],
13916                             loc: {
13917                                 start: { line: 1, column: 9 },
13918                                 end: { line: 1, column: 10 }
13919                             }
13920                         },
13921                         value: {
13922                             type: 'Identifier',
13923                             name: 'z',
13924                             range: [9, 10],
13925                             loc: {
13926                                 start: { line: 1, column: 9 },
13927                                 end: { line: 1, column: 10 }
13928                             }
13929                         },
13930                         kind: 'init',
13931                         method: false,
13932                         shorthand: true,
13933                         range: [9, 10],
13934                         loc: {
13935                             start: { line: 1, column: 9 },
13936                             end: { line: 1, column: 10 }
13937                         }
13938                     }],
13939                     range: [4, 12],
13940                     loc: {
13941                         start: { line: 1, column: 4 },
13942                         end: { line: 1, column: 12 }
13943                     }
13944                 },
13945                 range: [0, 12],
13946                 loc: {
13947                     start: { line: 1, column: 0 },
13948                     end: { line: 1, column: 12 }
13949                 }
13950             },
13951             range: [0, 12],
13952             loc: {
13953                 start: { line: 1, column: 0 },
13954                 end: { line: 1, column: 12 }
13955             }
13956         }
13957     },
13958
13959     'Assignment Operators': {
13960
13961         'x = 42': {
13962             type: 'ExpressionStatement',
13963             expression: {
13964                 type: 'AssignmentExpression',
13965                 operator: '=',
13966                 left: {
13967                     type: 'Identifier',
13968                     name: 'x',
13969                     range: [0, 1],
13970                     loc: {
13971                         start: { line: 1, column: 0 },
13972                         end: { line: 1, column: 1 }
13973                     }
13974                 },
13975                 right: {
13976                     type: 'Literal',
13977                     value: 42,
13978                     raw: '42',
13979                     range: [4, 6],
13980                     loc: {
13981                         start: { line: 1, column: 4 },
13982                         end: { line: 1, column: 6 }
13983                     }
13984                 },
13985                 range: [0, 6],
13986                 loc: {
13987                     start: { line: 1, column: 0 },
13988                     end: { line: 1, column: 6 }
13989                 }
13990             },
13991             range: [0, 6],
13992             loc: {
13993                 start: { line: 1, column: 0 },
13994                 end: { line: 1, column: 6 }
13995             }
13996         },
13997
13998         'eval = 42': {
13999             type: 'ExpressionStatement',
14000             expression: {
14001                 type: 'AssignmentExpression',
14002                 operator: '=',
14003                 left: {
14004                     type: 'Identifier',
14005                     name: 'eval',
14006                     range: [0, 4],
14007                     loc: {
14008                         start: { line: 1, column: 0 },
14009                         end: { line: 1, column: 4 }
14010                     }
14011                 },
14012                 right: {
14013                     type: 'Literal',
14014                     value: 42,
14015                     raw: '42',
14016                     range: [7, 9],
14017                     loc: {
14018                         start: { line: 1, column: 7 },
14019                         end: { line: 1, column: 9 }
14020                     }
14021                 },
14022                 range: [0, 9],
14023                 loc: {
14024                     start: { line: 1, column: 0 },
14025                     end: { line: 1, column: 9 }
14026                 }
14027             },
14028             range: [0, 9],
14029             loc: {
14030                 start: { line: 1, column: 0 },
14031                 end: { line: 1, column: 9 }
14032             }
14033         },
14034
14035         'arguments = 42': {
14036             type: 'ExpressionStatement',
14037             expression: {
14038                 type: 'AssignmentExpression',
14039                 operator: '=',
14040                 left: {
14041                     type: 'Identifier',
14042                     name: 'arguments',
14043                     range: [0, 9],
14044                     loc: {
14045                         start: { line: 1, column: 0 },
14046                         end: { line: 1, column: 9 }
14047                     }
14048                 },
14049                 right: {
14050                     type: 'Literal',
14051                     value: 42,
14052                     raw: '42',
14053                     range: [12, 14],
14054                     loc: {
14055                         start: { line: 1, column: 12 },
14056                         end: { line: 1, column: 14 }
14057                     }
14058                 },
14059                 range: [0, 14],
14060                 loc: {
14061                     start: { line: 1, column: 0 },
14062                     end: { line: 1, column: 14 }
14063                 }
14064             },
14065             range: [0, 14],
14066             loc: {
14067                 start: { line: 1, column: 0 },
14068                 end: { line: 1, column: 14 }
14069             }
14070         },
14071
14072         'x *= 42': {
14073             type: 'ExpressionStatement',
14074             expression: {
14075                 type: 'AssignmentExpression',
14076                 operator: '*=',
14077                 left: {
14078                     type: 'Identifier',
14079                     name: 'x',
14080                     range: [0, 1],
14081                     loc: {
14082                         start: { line: 1, column: 0 },
14083                         end: { line: 1, column: 1 }
14084                     }
14085                 },
14086                 right: {
14087                     type: 'Literal',
14088                     value: 42,
14089                     raw: '42',
14090                     range: [5, 7],
14091                     loc: {
14092                         start: { line: 1, column: 5 },
14093                         end: { line: 1, column: 7 }
14094                     }
14095                 },
14096                 range: [0, 7],
14097                 loc: {
14098                     start: { line: 1, column: 0 },
14099                     end: { line: 1, column: 7 }
14100                 }
14101             },
14102             range: [0, 7],
14103             loc: {
14104                 start: { line: 1, column: 0 },
14105                 end: { line: 1, column: 7 }
14106             }
14107         },
14108
14109         'x /= 42': {
14110             type: 'ExpressionStatement',
14111             expression: {
14112                 type: 'AssignmentExpression',
14113                 operator: '/=',
14114                 left: {
14115                     type: 'Identifier',
14116                     name: 'x',
14117                     range: [0, 1],
14118                     loc: {
14119                         start: { line: 1, column: 0 },
14120                         end: { line: 1, column: 1 }
14121                     }
14122                 },
14123                 right: {
14124                     type: 'Literal',
14125                     value: 42,
14126                     raw: '42',
14127                     range: [5, 7],
14128                     loc: {
14129                         start: { line: 1, column: 5 },
14130                         end: { line: 1, column: 7 }
14131                     }
14132                 },
14133                 range: [0, 7],
14134                 loc: {
14135                     start: { line: 1, column: 0 },
14136                     end: { line: 1, column: 7 }
14137                 }
14138             },
14139             range: [0, 7],
14140             loc: {
14141                 start: { line: 1, column: 0 },
14142                 end: { line: 1, column: 7 }
14143             }
14144         },
14145
14146         'x %= 42': {
14147             type: 'ExpressionStatement',
14148             expression: {
14149                 type: 'AssignmentExpression',
14150                 operator: '%=',
14151                 left: {
14152                     type: 'Identifier',
14153                     name: 'x',
14154                     range: [0, 1],
14155                     loc: {
14156                         start: { line: 1, column: 0 },
14157                         end: { line: 1, column: 1 }
14158                     }
14159                 },
14160                 right: {
14161                     type: 'Literal',
14162                     value: 42,
14163                     raw: '42',
14164                     range: [5, 7],
14165                     loc: {
14166                         start: { line: 1, column: 5 },
14167                         end: { line: 1, column: 7 }
14168                     }
14169                 },
14170                 range: [0, 7],
14171                 loc: {
14172                     start: { line: 1, column: 0 },
14173                     end: { line: 1, column: 7 }
14174                 }
14175             },
14176             range: [0, 7],
14177             loc: {
14178                 start: { line: 1, column: 0 },
14179                 end: { line: 1, column: 7 }
14180             }
14181         },
14182
14183         'x += 42': {
14184             type: 'ExpressionStatement',
14185             expression: {
14186                 type: 'AssignmentExpression',
14187                 operator: '+=',
14188                 left: {
14189                     type: 'Identifier',
14190                     name: 'x',
14191                     range: [0, 1],
14192                     loc: {
14193                         start: { line: 1, column: 0 },
14194                         end: { line: 1, column: 1 }
14195                     }
14196                 },
14197                 right: {
14198                     type: 'Literal',
14199                     value: 42,
14200                     raw: '42',
14201                     range: [5, 7],
14202                     loc: {
14203                         start: { line: 1, column: 5 },
14204                         end: { line: 1, column: 7 }
14205                     }
14206                 },
14207                 range: [0, 7],
14208                 loc: {
14209                     start: { line: 1, column: 0 },
14210                     end: { line: 1, column: 7 }
14211                 }
14212             },
14213             range: [0, 7],
14214             loc: {
14215                 start: { line: 1, column: 0 },
14216                 end: { line: 1, column: 7 }
14217             }
14218         },
14219
14220         'x -= 42': {
14221             type: 'ExpressionStatement',
14222             expression: {
14223                 type: 'AssignmentExpression',
14224                 operator: '-=',
14225                 left: {
14226                     type: 'Identifier',
14227                     name: 'x',
14228                     range: [0, 1],
14229                     loc: {
14230                         start: { line: 1, column: 0 },
14231                         end: { line: 1, column: 1 }
14232                     }
14233                 },
14234                 right: {
14235                     type: 'Literal',
14236                     value: 42,
14237                     raw: '42',
14238                     range: [5, 7],
14239                     loc: {
14240                         start: { line: 1, column: 5 },
14241                         end: { line: 1, column: 7 }
14242                     }
14243                 },
14244                 range: [0, 7],
14245                 loc: {
14246                     start: { line: 1, column: 0 },
14247                     end: { line: 1, column: 7 }
14248                 }
14249             },
14250             range: [0, 7],
14251             loc: {
14252                 start: { line: 1, column: 0 },
14253                 end: { line: 1, column: 7 }
14254             }
14255         },
14256
14257         'x <<= 42': {
14258             type: 'ExpressionStatement',
14259             expression: {
14260                 type: 'AssignmentExpression',
14261                 operator: '<<=',
14262                 left: {
14263                     type: 'Identifier',
14264                     name: 'x',
14265                     range: [0, 1],
14266                     loc: {
14267                         start: { line: 1, column: 0 },
14268                         end: { line: 1, column: 1 }
14269                     }
14270                 },
14271                 right: {
14272                     type: 'Literal',
14273                     value: 42,
14274                     raw: '42',
14275                     range: [6, 8],
14276                     loc: {
14277                         start: { line: 1, column: 6 },
14278                         end: { line: 1, column: 8 }
14279                     }
14280                 },
14281                 range: [0, 8],
14282                 loc: {
14283                     start: { line: 1, column: 0 },
14284                     end: { line: 1, column: 8 }
14285                 }
14286             },
14287             range: [0, 8],
14288             loc: {
14289                 start: { line: 1, column: 0 },
14290                 end: { line: 1, column: 8 }
14291             }
14292         },
14293
14294         'x >>= 42': {
14295             type: 'ExpressionStatement',
14296             expression: {
14297                 type: 'AssignmentExpression',
14298                 operator: '>>=',
14299                 left: {
14300                     type: 'Identifier',
14301                     name: 'x',
14302                     range: [0, 1],
14303                     loc: {
14304                         start: { line: 1, column: 0 },
14305                         end: { line: 1, column: 1 }
14306                     }
14307                 },
14308                 right: {
14309                     type: 'Literal',
14310                     value: 42,
14311                     raw: '42',
14312                     range: [6, 8],
14313                     loc: {
14314                         start: { line: 1, column: 6 },
14315                         end: { line: 1, column: 8 }
14316                     }
14317                 },
14318                 range: [0, 8],
14319                 loc: {
14320                     start: { line: 1, column: 0 },
14321                     end: { line: 1, column: 8 }
14322                 }
14323             },
14324             range: [0, 8],
14325             loc: {
14326                 start: { line: 1, column: 0 },
14327                 end: { line: 1, column: 8 }
14328             }
14329         },
14330
14331         'x >>>= 42': {
14332             type: 'ExpressionStatement',
14333             expression: {
14334                 type: 'AssignmentExpression',
14335                 operator: '>>>=',
14336                 left: {
14337                     type: 'Identifier',
14338                     name: 'x',
14339                     range: [0, 1],
14340                     loc: {
14341                         start: { line: 1, column: 0 },
14342                         end: { line: 1, column: 1 }
14343                     }
14344                 },
14345                 right: {
14346                     type: 'Literal',
14347                     value: 42,
14348                     raw: '42',
14349                     range: [7, 9],
14350                     loc: {
14351                         start: { line: 1, column: 7 },
14352                         end: { line: 1, column: 9 }
14353                     }
14354                 },
14355                 range: [0, 9],
14356                 loc: {
14357                     start: { line: 1, column: 0 },
14358                     end: { line: 1, column: 9 }
14359                 }
14360             },
14361             range: [0, 9],
14362             loc: {
14363                 start: { line: 1, column: 0 },
14364                 end: { line: 1, column: 9 }
14365             }
14366         },
14367
14368         'x &= 42': {
14369             type: 'ExpressionStatement',
14370             expression: {
14371                 type: 'AssignmentExpression',
14372                 operator: '&=',
14373                 left: {
14374                     type: 'Identifier',
14375                     name: 'x',
14376                     range: [0, 1],
14377                     loc: {
14378                         start: { line: 1, column: 0 },
14379                         end: { line: 1, column: 1 }
14380                     }
14381                 },
14382                 right: {
14383                     type: 'Literal',
14384                     value: 42,
14385                     raw: '42',
14386                     range: [5, 7],
14387                     loc: {
14388                         start: { line: 1, column: 5 },
14389                         end: { line: 1, column: 7 }
14390                     }
14391                 },
14392                 range: [0, 7],
14393                 loc: {
14394                     start: { line: 1, column: 0 },
14395                     end: { line: 1, column: 7 }
14396                 }
14397             },
14398             range: [0, 7],
14399             loc: {
14400                 start: { line: 1, column: 0 },
14401                 end: { line: 1, column: 7 }
14402             }
14403         },
14404
14405         'x ^= 42': {
14406             type: 'ExpressionStatement',
14407             expression: {
14408                 type: 'AssignmentExpression',
14409                 operator: '^=',
14410                 left: {
14411                     type: 'Identifier',
14412                     name: 'x',
14413                     range: [0, 1],
14414                     loc: {
14415                         start: { line: 1, column: 0 },
14416                         end: { line: 1, column: 1 }
14417                     }
14418                 },
14419                 right: {
14420                     type: 'Literal',
14421                     value: 42,
14422                     raw: '42',
14423                     range: [5, 7],
14424                     loc: {
14425                         start: { line: 1, column: 5 },
14426                         end: { line: 1, column: 7 }
14427                     }
14428                 },
14429                 range: [0, 7],
14430                 loc: {
14431                     start: { line: 1, column: 0 },
14432                     end: { line: 1, column: 7 }
14433                 }
14434             },
14435             range: [0, 7],
14436             loc: {
14437                 start: { line: 1, column: 0 },
14438                 end: { line: 1, column: 7 }
14439             }
14440         },
14441
14442         'x |= 42': {
14443             type: 'ExpressionStatement',
14444             expression: {
14445                 type: 'AssignmentExpression',
14446                 operator: '|=',
14447                 left: {
14448                     type: 'Identifier',
14449                     name: 'x',
14450                     range: [0, 1],
14451                     loc: {
14452                         start: { line: 1, column: 0 },
14453                         end: { line: 1, column: 1 }
14454                     }
14455                 },
14456                 right: {
14457                     type: 'Literal',
14458                     value: 42,
14459                     raw: '42',
14460                     range: [5, 7],
14461                     loc: {
14462                         start: { line: 1, column: 5 },
14463                         end: { line: 1, column: 7 }
14464                     }
14465                 },
14466                 range: [0, 7],
14467                 loc: {
14468                     start: { line: 1, column: 0 },
14469                     end: { line: 1, column: 7 }
14470                 }
14471             },
14472             range: [0, 7],
14473             loc: {
14474                 start: { line: 1, column: 0 },
14475                 end: { line: 1, column: 7 }
14476             }
14477         }
14478
14479     },
14480
14481     'Complex Expression': {
14482
14483         'a || b && c | d ^ e & f == g < h >>> i + j * k': {
14484             type: 'ExpressionStatement',
14485             expression: {
14486                 type: 'LogicalExpression',
14487                 operator: '||',
14488                 left: {
14489                     type: 'Identifier',
14490                     name: 'a',
14491                     range: [0, 1],
14492                     loc: {
14493                         start: { line: 1, column: 0 },
14494                         end: { line: 1, column: 1 }
14495                     }
14496                 },
14497                 right: {
14498                     type: 'LogicalExpression',
14499                     operator: '&&',
14500                     left: {
14501                         type: 'Identifier',
14502                         name: 'b',
14503                         range: [5, 6],
14504                         loc: {
14505                             start: { line: 1, column: 5 },
14506                             end: { line: 1, column: 6 }
14507                         }
14508                     },
14509                     right: {
14510                         type: 'BinaryExpression',
14511                         operator: '|',
14512                         left: {
14513                             type: 'Identifier',
14514                             name: 'c',
14515                             range: [10, 11],
14516                             loc: {
14517                                 start: { line: 1, column: 10 },
14518                                 end: { line: 1, column: 11 }
14519                             }
14520                         },
14521                         right: {
14522                             type: 'BinaryExpression',
14523                             operator: '^',
14524                             left: {
14525                                 type: 'Identifier',
14526                                 name: 'd',
14527                                 range: [14, 15],
14528                                 loc: {
14529                                     start: { line: 1, column: 14 },
14530                                     end: { line: 1, column: 15 }
14531                                 }
14532                             },
14533                             right: {
14534                                 type: 'BinaryExpression',
14535                                 operator: '&',
14536                                 left: {
14537                                     type: 'Identifier',
14538                                     name: 'e',
14539                                     range: [18, 19],
14540                                     loc: {
14541                                         start: { line: 1, column: 18 },
14542                                         end: { line: 1, column: 19 }
14543                                     }
14544                                 },
14545                                 right: {
14546                                     type: 'BinaryExpression',
14547                                     operator: '==',
14548                                     left: {
14549                                         type: 'Identifier',
14550                                         name: 'f',
14551                                         range: [22, 23],
14552                                         loc: {
14553                                             start: { line: 1, column: 22 },
14554                                             end: { line: 1, column: 23 }
14555                                         }
14556                                     },
14557                                     right: {
14558                                         type: 'BinaryExpression',
14559                                         operator: '<',
14560                                         left: {
14561                                             type: 'Identifier',
14562                                             name: 'g',
14563                                             range: [27, 28],
14564                                             loc: {
14565                                                 start: { line: 1, column: 27 },
14566                                                 end: { line: 1, column: 28 }
14567                                             }
14568                                         },
14569                                         right: {
14570                                             type: 'BinaryExpression',
14571                                             operator: '>>>',
14572                                             left: {
14573                                                 type: 'Identifier',
14574                                                 name: 'h',
14575                                                 range: [31, 32],
14576                                                 loc: {
14577                                                     start: { line: 1, column: 31 },
14578                                                     end: { line: 1, column: 32 }
14579                                                 }
14580                                             },
14581                                             right: {
14582                                                 type: 'BinaryExpression',
14583                                                 operator: '+',
14584                                                 left: {
14585                                                     type: 'Identifier',
14586                                                     name: 'i',
14587                                                     range: [37, 38],
14588                                                     loc: {
14589                                                         start: { line: 1, column: 37 },
14590                                                         end: { line: 1, column: 38 }
14591                                                     }
14592                                                 },
14593                                                 right: {
14594                                                     type: 'BinaryExpression',
14595                                                     operator: '*',
14596                                                     left: {
14597                                                         type: 'Identifier',
14598                                                         name: 'j',
14599                                                         range: [41, 42],
14600                                                         loc: {
14601                                                             start: { line: 1, column: 41 },
14602                                                             end: { line: 1, column: 42 }
14603                                                         }
14604                                                     },
14605                                                     right: {
14606                                                         type: 'Identifier',
14607                                                         name: 'k',
14608                                                         range: [45, 46],
14609                                                         loc: {
14610                                                             start: { line: 1, column: 45 },
14611                                                             end: { line: 1, column: 46 }
14612                                                         }
14613                                                     },
14614                                                     range: [41, 46],
14615                                                     loc: {
14616                                                         start: { line: 1, column: 41 },
14617                                                         end: { line: 1, column: 46 }
14618                                                     }
14619                                                 },
14620                                                 range: [37, 46],
14621                                                 loc: {
14622                                                     start: { line: 1, column: 37 },
14623                                                     end: { line: 1, column: 46 }
14624                                                 }
14625                                             },
14626                                             range: [31, 46],
14627                                             loc: {
14628                                                 start: { line: 1, column: 31 },
14629                                                 end: { line: 1, column: 46 }
14630                                             }
14631                                         },
14632                                         range: [27, 46],
14633                                         loc: {
14634                                             start: { line: 1, column: 27 },
14635                                             end: { line: 1, column: 46 }
14636                                         }
14637                                     },
14638                                     range: [22, 46],
14639                                     loc: {
14640                                         start: { line: 1, column: 22 },
14641                                         end: { line: 1, column: 46 }
14642                                     }
14643                                 },
14644                                 range: [18, 46],
14645                                 loc: {
14646                                     start: { line: 1, column: 18 },
14647                                     end: { line: 1, column: 46 }
14648                                 }
14649                             },
14650                             range: [14, 46],
14651                             loc: {
14652                                 start: { line: 1, column: 14 },
14653                                 end: { line: 1, column: 46 }
14654                             }
14655                         },
14656                         range: [10, 46],
14657                         loc: {
14658                             start: { line: 1, column: 10 },
14659                             end: { line: 1, column: 46 }
14660                         }
14661                     },
14662                     range: [5, 46],
14663                     loc: {
14664                         start: { line: 1, column: 5 },
14665                         end: { line: 1, column: 46 }
14666                     }
14667                 },
14668                 range: [0, 46],
14669                 loc: {
14670                     start: { line: 1, column: 0 },
14671                     end: { line: 1, column: 46 }
14672                 }
14673             },
14674             range: [0, 46],
14675             loc: {
14676                 start: { line: 1, column: 0 },
14677                 end: { line: 1, column: 46 }
14678             }
14679         }
14680
14681     },
14682
14683     'Block': {
14684
14685         '{ foo }': {
14686             type: 'BlockStatement',
14687             body: [{
14688                 type: 'ExpressionStatement',
14689                 expression: {
14690                     type: 'Identifier',
14691                     name: 'foo',
14692                     range: [2, 5],
14693                     loc: {
14694                         start: { line: 1, column: 2 },
14695                         end: { line: 1, column: 5 }
14696                     }
14697                 },
14698                 range: [2, 6],
14699                 loc: {
14700                     start: { line: 1, column: 2 },
14701                     end: { line: 1, column: 6 }
14702                 }
14703             }],
14704             range: [0, 7],
14705             loc: {
14706                 start: { line: 1, column: 0 },
14707                 end: { line: 1, column: 7 }
14708             }
14709         },
14710
14711         '{ doThis(); doThat(); }': {
14712             type: 'BlockStatement',
14713             body: [{
14714                 type: 'ExpressionStatement',
14715                 expression: {
14716                     type: 'CallExpression',
14717                     callee: {
14718                         type: 'Identifier',
14719                         name: 'doThis',
14720                         range: [2, 8],
14721                         loc: {
14722                             start: { line: 1, column: 2 },
14723                             end: { line: 1, column: 8 }
14724                         }
14725                     },
14726                     'arguments': [],
14727                     range: [2, 10],
14728                     loc: {
14729                         start: { line: 1, column: 2 },
14730                         end: { line: 1, column: 10 }
14731                     }
14732                 },
14733                 range: [2, 11],
14734                 loc: {
14735                     start: { line: 1, column: 2 },
14736                     end: { line: 1, column: 11 }
14737                 }
14738             }, {
14739                 type: 'ExpressionStatement',
14740                 expression: {
14741                     type: 'CallExpression',
14742                     callee: {
14743                         type: 'Identifier',
14744                         name: 'doThat',
14745                         range: [12, 18],
14746                         loc: {
14747                             start: { line: 1, column: 12 },
14748                             end: { line: 1, column: 18 }
14749                         }
14750                     },
14751                     'arguments': [],
14752                     range: [12, 20],
14753                     loc: {
14754                         start: { line: 1, column: 12 },
14755                         end: { line: 1, column: 20 }
14756                     }
14757                 },
14758                 range: [12, 21],
14759                 loc: {
14760                     start: { line: 1, column: 12 },
14761                     end: { line: 1, column: 21 }
14762                 }
14763             }],
14764             range: [0, 23],
14765             loc: {
14766                 start: { line: 1, column: 0 },
14767                 end: { line: 1, column: 23 }
14768             }
14769         },
14770
14771         '{}': {
14772             type: 'BlockStatement',
14773             body: [],
14774             range: [0, 2],
14775             loc: {
14776                 start: { line: 1, column: 0 },
14777                 end: { line: 1, column: 2 }
14778             }
14779         }
14780
14781     },
14782
14783     'Variable Statement': {
14784
14785         'var x': {
14786             type: 'VariableDeclaration',
14787             declarations: [{
14788                 type: 'VariableDeclarator',
14789                 id: {
14790                     type: 'Identifier',
14791                     name: 'x',
14792                     range: [4, 5],
14793                     loc: {
14794                         start: { line: 1, column: 4 },
14795                         end: { line: 1, column: 5 }
14796                     }
14797                 },
14798                 init: null,
14799                 range: [4, 5],
14800                 loc: {
14801                     start: { line: 1, column: 4 },
14802                     end: { line: 1, column: 5 }
14803                 }
14804             }],
14805             kind: 'var',
14806             range: [0, 5],
14807             loc: {
14808                 start: { line: 1, column: 0 },
14809                 end: { line: 1, column: 5 }
14810             }
14811         },
14812
14813         'var x, y;': {
14814             type: 'VariableDeclaration',
14815             declarations: [{
14816                 type: 'VariableDeclarator',
14817                 id: {
14818                     type: 'Identifier',
14819                     name: 'x',
14820                     range: [4, 5],
14821                     loc: {
14822                         start: { line: 1, column: 4 },
14823                         end: { line: 1, column: 5 }
14824                     }
14825                 },
14826                 init: null,
14827                 range: [4, 5],
14828                 loc: {
14829                     start: { line: 1, column: 4 },
14830                     end: { line: 1, column: 5 }
14831                 }
14832             }, {
14833                 type: 'VariableDeclarator',
14834                 id: {
14835                     type: 'Identifier',
14836                     name: 'y',
14837                     range: [7, 8],
14838                     loc: {
14839                         start: { line: 1, column: 7 },
14840                         end: { line: 1, column: 8 }
14841                     }
14842                 },
14843                 init: null,
14844                 range: [7, 8],
14845                 loc: {
14846                     start: { line: 1, column: 7 },
14847                     end: { line: 1, column: 8 }
14848                 }
14849             }],
14850             kind: 'var',
14851             range: [0, 9],
14852             loc: {
14853                 start: { line: 1, column: 0 },
14854                 end: { line: 1, column: 9 }
14855             }
14856         },
14857
14858         'var x = 42': {
14859             type: 'VariableDeclaration',
14860             declarations: [{
14861                 type: 'VariableDeclarator',
14862                 id: {
14863                     type: 'Identifier',
14864                     name: 'x',
14865                     range: [4, 5],
14866                     loc: {
14867                         start: { line: 1, column: 4 },
14868                         end: { line: 1, column: 5 }
14869                     }
14870                 },
14871                 init: {
14872                     type: 'Literal',
14873                     value: 42,
14874                     raw: '42',
14875                     range: [8, 10],
14876                     loc: {
14877                         start: { line: 1, column: 8 },
14878                         end: { line: 1, column: 10 }
14879                     }
14880                 },
14881                 range: [4, 10],
14882                 loc: {
14883                     start: { line: 1, column: 4 },
14884                     end: { line: 1, column: 10 }
14885                 }
14886             }],
14887             kind: 'var',
14888             range: [0, 10],
14889             loc: {
14890                 start: { line: 1, column: 0 },
14891                 end: { line: 1, column: 10 }
14892             }
14893         },
14894
14895         'var eval = 42, arguments = 42': {
14896             type: 'VariableDeclaration',
14897             declarations: [{
14898                 type: 'VariableDeclarator',
14899                 id: {
14900                     type: 'Identifier',
14901                     name: 'eval',
14902                     range: [4, 8],
14903                     loc: {
14904                         start: { line: 1, column: 4 },
14905                         end: { line: 1, column: 8 }
14906                     }
14907                 },
14908                 init: {
14909                     type: 'Literal',
14910                     value: 42,
14911                     raw: '42',
14912                     range: [11, 13],
14913                     loc: {
14914                         start: { line: 1, column: 11 },
14915                         end: { line: 1, column: 13 }
14916                     }
14917                 },
14918                 range: [4, 13],
14919                 loc: {
14920                     start: { line: 1, column: 4 },
14921                     end: { line: 1, column: 13 }
14922                 }
14923             }, {
14924                 type: 'VariableDeclarator',
14925                 id: {
14926                     type: 'Identifier',
14927                     name: 'arguments',
14928                     range: [15, 24],
14929                     loc: {
14930                         start: { line: 1, column: 15 },
14931                         end: { line: 1, column: 24 }
14932                     }
14933                 },
14934                 init: {
14935                     type: 'Literal',
14936                     value: 42,
14937                     raw: '42',
14938                     range: [27, 29],
14939                     loc: {
14940                         start: { line: 1, column: 27 },
14941                         end: { line: 1, column: 29 }
14942                     }
14943                 },
14944                 range: [15, 29],
14945                 loc: {
14946                     start: { line: 1, column: 15 },
14947                     end: { line: 1, column: 29 }
14948                 }
14949             }],
14950             kind: 'var',
14951             range: [0, 29],
14952             loc: {
14953                 start: { line: 1, column: 0 },
14954                 end: { line: 1, column: 29 }
14955             }
14956         },
14957
14958         'var x = 14, y = 3, z = 1977': {
14959             type: 'VariableDeclaration',
14960             declarations: [{
14961                 type: 'VariableDeclarator',
14962                 id: {
14963                     type: 'Identifier',
14964                     name: 'x',
14965                     range: [4, 5],
14966                     loc: {
14967                         start: { line: 1, column: 4 },
14968                         end: { line: 1, column: 5 }
14969                     }
14970                 },
14971                 init: {
14972                     type: 'Literal',
14973                     value: 14,
14974                     raw: '14',
14975                     range: [8, 10],
14976                     loc: {
14977                         start: { line: 1, column: 8 },
14978                         end: { line: 1, column: 10 }
14979                     }
14980                 },
14981                 range: [4, 10],
14982                 loc: {
14983                     start: { line: 1, column: 4 },
14984                     end: { line: 1, column: 10 }
14985                 }
14986             }, {
14987                 type: 'VariableDeclarator',
14988                 id: {
14989                     type: 'Identifier',
14990                     name: 'y',
14991                     range: [12, 13],
14992                     loc: {
14993                         start: { line: 1, column: 12 },
14994                         end: { line: 1, column: 13 }
14995                     }
14996                 },
14997                 init: {
14998                     type: 'Literal',
14999                     value: 3,
15000                     raw: '3',
15001                     range: [16, 17],
15002                     loc: {
15003                         start: { line: 1, column: 16 },
15004                         end: { line: 1, column: 17 }
15005                     }
15006                 },
15007                 range: [12, 17],
15008                 loc: {
15009                     start: { line: 1, column: 12 },
15010                     end: { line: 1, column: 17 }
15011                 }
15012             }, {
15013                 type: 'VariableDeclarator',
15014                 id: {
15015                     type: 'Identifier',
15016                     name: 'z',
15017                     range: [19, 20],
15018                     loc: {
15019                         start: { line: 1, column: 19 },
15020                         end: { line: 1, column: 20 }
15021                     }
15022                 },
15023                 init: {
15024                     type: 'Literal',
15025                     value: 1977,
15026                     raw: '1977',
15027                     range: [23, 27],
15028                     loc: {
15029                         start: { line: 1, column: 23 },
15030                         end: { line: 1, column: 27 }
15031                     }
15032                 },
15033                 range: [19, 27],
15034                 loc: {
15035                     start: { line: 1, column: 19 },
15036                     end: { line: 1, column: 27 }
15037                 }
15038             }],
15039             kind: 'var',
15040             range: [0, 27],
15041             loc: {
15042                 start: { line: 1, column: 0 },
15043                 end: { line: 1, column: 27 }
15044             }
15045         },
15046
15047         'var implements, interface, package': {
15048             type: 'VariableDeclaration',
15049             declarations: [{
15050                 type: 'VariableDeclarator',
15051                 id: {
15052                     type: 'Identifier',
15053                     name: 'implements',
15054                     range: [4, 14],
15055                     loc: {
15056                         start: { line: 1, column: 4 },
15057                         end: { line: 1, column: 14 }
15058                     }
15059                 },
15060                 init: null,
15061                 range: [4, 14],
15062                 loc: {
15063                     start: { line: 1, column: 4 },
15064                     end: { line: 1, column: 14 }
15065                 }
15066             }, {
15067                 type: 'VariableDeclarator',
15068                 id: {
15069                     type: 'Identifier',
15070                     name: 'interface',
15071                     range: [16, 25],
15072                     loc: {
15073                         start: { line: 1, column: 16 },
15074                         end: { line: 1, column: 25 }
15075                     }
15076                 },
15077                 init: null,
15078                 range: [16, 25],
15079                 loc: {
15080                     start: { line: 1, column: 16 },
15081                     end: { line: 1, column: 25 }
15082                 }
15083             }, {
15084                 type: 'VariableDeclarator',
15085                 id: {
15086                     type: 'Identifier',
15087                     name: 'package',
15088                     range: [27, 34],
15089                     loc: {
15090                         start: { line: 1, column: 27 },
15091                         end: { line: 1, column: 34 }
15092                     }
15093                 },
15094                 init: null,
15095                 range: [27, 34],
15096                 loc: {
15097                     start: { line: 1, column: 27 },
15098                     end: { line: 1, column: 34 }
15099                 }
15100             }],
15101             kind: 'var',
15102             range: [0, 34],
15103             loc: {
15104                 start: { line: 1, column: 0 },
15105                 end: { line: 1, column: 34 }
15106             }
15107         },
15108
15109         'var private, protected, public, static': {
15110             type: 'VariableDeclaration',
15111             declarations: [{
15112                 type: 'VariableDeclarator',
15113                 id: {
15114                     type: 'Identifier',
15115                     name: 'private',
15116                     range: [4, 11],
15117                     loc: {
15118                         start: { line: 1, column: 4 },
15119                         end: { line: 1, column: 11 }
15120                     }
15121                 },
15122                 init: null,
15123                 range: [4, 11],
15124                 loc: {
15125                     start: { line: 1, column: 4 },
15126                     end: { line: 1, column: 11 }
15127                 }
15128             }, {
15129                 type: 'VariableDeclarator',
15130                 id: {
15131                     type: 'Identifier',
15132                     name: 'protected',
15133                     range: [13, 22],
15134                     loc: {
15135                         start: { line: 1, column: 13 },
15136                         end: { line: 1, column: 22 }
15137                     }
15138                 },
15139                 init: null,
15140                 range: [13, 22],
15141                 loc: {
15142                     start: { line: 1, column: 13 },
15143                     end: { line: 1, column: 22 }
15144                 }
15145             }, {
15146                 type: 'VariableDeclarator',
15147                 id: {
15148                     type: 'Identifier',
15149                     name: 'public',
15150                     range: [24, 30],
15151                     loc: {
15152                         start: { line: 1, column: 24 },
15153                         end: { line: 1, column: 30 }
15154                     }
15155                 },
15156                 init: null,
15157                 range: [24, 30],
15158                 loc: {
15159                     start: { line: 1, column: 24 },
15160                     end: { line: 1, column: 30 }
15161                 }
15162             }, {
15163                 type: 'VariableDeclarator',
15164                 id: {
15165                     type: 'Identifier',
15166                     name: 'static',
15167                     range: [32, 38],
15168                     loc: {
15169                         start: { line: 1, column: 32 },
15170                         end: { line: 1, column: 38 }
15171                     }
15172                 },
15173                 init: null,
15174                 range: [32, 38],
15175                 loc: {
15176                     start: { line: 1, column: 32 },
15177                     end: { line: 1, column: 38 }
15178                 }
15179             }],
15180             kind: 'var',
15181             range: [0, 38],
15182             loc: {
15183                 start: { line: 1, column: 0 },
15184                 end: { line: 1, column: 38 }
15185             }
15186         }
15187
15188     },
15189
15190     'Let Statement': {
15191
15192         'let x': {
15193             type: 'VariableDeclaration',
15194             declarations: [{
15195                 type: 'VariableDeclarator',
15196                 id: {
15197                     type: 'Identifier',
15198                     name: 'x',
15199                     range: [4, 5],
15200                     loc: {
15201                         start: { line: 1, column: 4 },
15202                         end: { line: 1, column: 5 }
15203                     }
15204                 },
15205                 init: null,
15206                 range: [4, 5],
15207                 loc: {
15208                     start: { line: 1, column: 4 },
15209                     end: { line: 1, column: 5 }
15210                 }
15211             }],
15212             kind: 'let',
15213             range: [0, 5],
15214             loc: {
15215                 start: { line: 1, column: 0 },
15216                 end: { line: 1, column: 5 }
15217             }
15218         },
15219
15220         '{ let x }': {
15221             type: 'BlockStatement',
15222             body: [{
15223                 type: 'VariableDeclaration',
15224                 declarations: [{
15225                     type: 'VariableDeclarator',
15226                     id: {
15227                         type: 'Identifier',
15228                         name: 'x',
15229                         range: [6, 7],
15230                         loc: {
15231                             start: { line: 1, column: 6 },
15232                             end: { line: 1, column: 7 }
15233                         }
15234                     },
15235                     init: null,
15236                     range: [6, 7],
15237                     loc: {
15238                         start: { line: 1, column: 6 },
15239                         end: { line: 1, column: 7 }
15240                     }
15241                 }],
15242                 kind: 'let',
15243                 range: [2, 8],
15244                 loc: {
15245                     start: { line: 1, column: 2 },
15246                     end: { line: 1, column: 8 }
15247                 }
15248             }],
15249             range: [0, 9],
15250             loc: {
15251                 start: { line: 1, column: 0 },
15252                 end: { line: 1, column: 9 }
15253             }
15254         },
15255
15256         '{ let x = 42 }': {
15257             type: 'BlockStatement',
15258             body: [{
15259                 type: 'VariableDeclaration',
15260                 declarations: [{
15261                     type: 'VariableDeclarator',
15262                     id: {
15263                         type: 'Identifier',
15264                         name: 'x',
15265                         range: [6, 7],
15266                         loc: {
15267                             start: { line: 1, column: 6 },
15268                             end: { line: 1, column: 7 }
15269                         }
15270                     },
15271                     init: {
15272                         type: 'Literal',
15273                         value: 42,
15274                         raw: '42',
15275                         range: [10, 12],
15276                         loc: {
15277                             start: { line: 1, column: 10 },
15278                             end: { line: 1, column: 12 }
15279                         }
15280                     },
15281                     range: [6, 12],
15282                     loc: {
15283                         start: { line: 1, column: 6 },
15284                         end: { line: 1, column: 12 }
15285                     }
15286                 }],
15287                 kind: 'let',
15288                 range: [2, 13],
15289                 loc: {
15290                     start: { line: 1, column: 2 },
15291                     end: { line: 1, column: 13 }
15292                 }
15293             }],
15294             range: [0, 14],
15295             loc: {
15296                 start: { line: 1, column: 0 },
15297                 end: { line: 1, column: 14 }
15298             }
15299         },
15300
15301         '{ let x = 14, y = 3, z = 1977 }': {
15302             type: 'BlockStatement',
15303             body: [{
15304                 type: 'VariableDeclaration',
15305                 declarations: [{
15306                     type: 'VariableDeclarator',
15307                     id: {
15308                         type: 'Identifier',
15309                         name: 'x',
15310                         range: [6, 7],
15311                         loc: {
15312                             start: { line: 1, column: 6 },
15313                             end: { line: 1, column: 7 }
15314                         }
15315                     },
15316                     init: {
15317                         type: 'Literal',
15318                         value: 14,
15319                         raw: '14',
15320                         range: [10, 12],
15321                         loc: {
15322                             start: { line: 1, column: 10 },
15323                             end: { line: 1, column: 12 }
15324                         }
15325                     },
15326                     range: [6, 12],
15327                     loc: {
15328                         start: { line: 1, column: 6 },
15329                         end: { line: 1, column: 12 }
15330                     }
15331                 }, {
15332                     type: 'VariableDeclarator',
15333                     id: {
15334                         type: 'Identifier',
15335                         name: 'y',
15336                         range: [14, 15],
15337                         loc: {
15338                             start: { line: 1, column: 14 },
15339                             end: { line: 1, column: 15 }
15340                         }
15341                     },
15342                     init: {
15343                         type: 'Literal',
15344                         value: 3,
15345                         raw: '3',
15346                         range: [18, 19],
15347                         loc: {
15348                             start: { line: 1, column: 18 },
15349                             end: { line: 1, column: 19 }
15350                         }
15351                     },
15352                     range: [14, 19],
15353                     loc: {
15354                         start: { line: 1, column: 14 },
15355                         end: { line: 1, column: 19 }
15356                     }
15357                 }, {
15358                     type: 'VariableDeclarator',
15359                     id: {
15360                         type: 'Identifier',
15361                         name: 'z',
15362                         range: [21, 22],
15363                         loc: {
15364                             start: { line: 1, column: 21 },
15365                             end: { line: 1, column: 22 }
15366                         }
15367                     },
15368                     init: {
15369                         type: 'Literal',
15370                         value: 1977,
15371                         raw: '1977',
15372                         range: [25, 29],
15373                         loc: {
15374                             start: { line: 1, column: 25 },
15375                             end: { line: 1, column: 29 }
15376                         }
15377                     },
15378                     range: [21, 29],
15379                     loc: {
15380                         start: { line: 1, column: 21 },
15381                         end: { line: 1, column: 29 }
15382                     }
15383                 }],
15384                 kind: 'let',
15385                 range: [2, 30],
15386                 loc: {
15387                     start: { line: 1, column: 2 },
15388                     end: { line: 1, column: 30 }
15389                 }
15390             }],
15391             range: [0, 31],
15392             loc: {
15393                 start: { line: 1, column: 0 },
15394                 end: { line: 1, column: 31 }
15395             }
15396         }
15397
15398     },
15399
15400     'Const Statement': {
15401
15402         'const x = 42': {
15403             type: 'VariableDeclaration',
15404             declarations: [{
15405                 type: 'VariableDeclarator',
15406                 id: {
15407                     type: 'Identifier',
15408                     name: 'x',
15409                     range: [6, 7],
15410                     loc: {
15411                         start: { line: 1, column: 6 },
15412                         end: { line: 1, column: 7 }
15413                     }
15414                 },
15415                 init: {
15416                     type: 'Literal',
15417                     value: 42,
15418                     raw: '42',
15419                     range: [10, 12],
15420                     loc: {
15421                         start: { line: 1, column: 10 },
15422                         end: { line: 1, column: 12 }
15423                     }
15424                 },
15425                 range: [6, 12],
15426                 loc: {
15427                     start: { line: 1, column: 6 },
15428                     end: { line: 1, column: 12 }
15429                 }
15430             }],
15431             kind: 'const',
15432             range: [0, 12],
15433             loc: {
15434                 start: { line: 1, column: 0 },
15435                 end: { line: 1, column: 12 }
15436             }
15437         },
15438
15439         '{ const x = 42 }': {
15440             type: 'BlockStatement',
15441             body: [{
15442                 type: 'VariableDeclaration',
15443                 declarations: [{
15444                     type: 'VariableDeclarator',
15445                     id: {
15446                         type: 'Identifier',
15447                         name: 'x',
15448                         range: [8, 9],
15449                         loc: {
15450                             start: { line: 1, column: 8 },
15451                             end: { line: 1, column: 9 }
15452                         }
15453                     },
15454                     init: {
15455                         type: 'Literal',
15456                         value: 42,
15457                         raw: '42',
15458                         range: [12, 14],
15459                         loc: {
15460                             start: { line: 1, column: 12 },
15461                             end: { line: 1, column: 14 }
15462                         }
15463                     },
15464                     range: [8, 14],
15465                     loc: {
15466                         start: { line: 1, column: 8 },
15467                         end: { line: 1, column: 14 }
15468                     }
15469                 }],
15470                 kind: 'const',
15471                 range: [2, 15],
15472                 loc: {
15473                     start: { line: 1, column: 2 },
15474                     end: { line: 1, column: 15 }
15475                 }
15476             }],
15477             range: [0, 16],
15478             loc: {
15479                 start: { line: 1, column: 0 },
15480                 end: { line: 1, column: 16 }
15481             }
15482         },
15483
15484         '{ const x = 14, y = 3, z = 1977 }': {
15485             type: 'BlockStatement',
15486             body: [{
15487                 type: 'VariableDeclaration',
15488                 declarations: [{
15489                     type: 'VariableDeclarator',
15490                     id: {
15491                         type: 'Identifier',
15492                         name: 'x',
15493                         range: [8, 9],
15494                         loc: {
15495                             start: { line: 1, column: 8 },
15496                             end: { line: 1, column: 9 }
15497                         }
15498                     },
15499                     init: {
15500                         type: 'Literal',
15501                         value: 14,
15502                         raw: '14',
15503                         range: [12, 14],
15504                         loc: {
15505                             start: { line: 1, column: 12 },
15506                             end: { line: 1, column: 14 }
15507                         }
15508                     },
15509                     range: [8, 14],
15510                     loc: {
15511                         start: { line: 1, column: 8 },
15512                         end: { line: 1, column: 14 }
15513                     }
15514                 }, {
15515                     type: 'VariableDeclarator',
15516                     id: {
15517                         type: 'Identifier',
15518                         name: 'y',
15519                         range: [16, 17],
15520                         loc: {
15521                             start: { line: 1, column: 16 },
15522                             end: { line: 1, column: 17 }
15523                         }
15524                     },
15525                     init: {
15526                         type: 'Literal',
15527                         value: 3,
15528                         raw: '3',
15529                         range: [20, 21],
15530                         loc: {
15531                             start: { line: 1, column: 20 },
15532                             end: { line: 1, column: 21 }
15533                         }
15534                     },
15535                     range: [16, 21],
15536                     loc: {
15537                         start: { line: 1, column: 16 },
15538                         end: { line: 1, column: 21 }
15539                     }
15540                 }, {
15541                     type: 'VariableDeclarator',
15542                     id: {
15543                         type: 'Identifier',
15544                         name: 'z',
15545                         range: [23, 24],
15546                         loc: {
15547                             start: { line: 1, column: 23 },
15548                             end: { line: 1, column: 24 }
15549                         }
15550                     },
15551                     init: {
15552                         type: 'Literal',
15553                         value: 1977,
15554                         raw: '1977',
15555                         range: [27, 31],
15556                         loc: {
15557                             start: { line: 1, column: 27 },
15558                             end: { line: 1, column: 31 }
15559                         }
15560                     },
15561                     range: [23, 31],
15562                     loc: {
15563                         start: { line: 1, column: 23 },
15564                         end: { line: 1, column: 31 }
15565                     }
15566                 }],
15567                 kind: 'const',
15568                 range: [2, 32],
15569                 loc: {
15570                     start: { line: 1, column: 2 },
15571                     end: { line: 1, column: 32 }
15572                 }
15573             }],
15574             range: [0, 33],
15575             loc: {
15576                 start: { line: 1, column: 0 },
15577                 end: { line: 1, column: 33 }
15578             }
15579         }
15580
15581     },
15582
15583     'Empty Statement': {
15584
15585         ';': {
15586             type: 'EmptyStatement',
15587             range: [0, 1],
15588             loc: {
15589                 start: { line: 1, column: 0 },
15590                 end: { line: 1, column: 1 }
15591             }
15592         }
15593
15594     },
15595
15596     'Expression Statement': {
15597
15598         'x': {
15599             type: 'ExpressionStatement',
15600             expression: {
15601                 type: 'Identifier',
15602                 name: 'x',
15603                 range: [0, 1],
15604                 loc: {
15605                     start: { line: 1, column: 0 },
15606                     end: { line: 1, column: 1 }
15607                 }
15608             },
15609             range: [0, 1],
15610             loc: {
15611                 start: { line: 1, column: 0 },
15612                 end: { line: 1, column: 1 }
15613             }
15614         },
15615
15616         'x, y': {
15617             type: 'ExpressionStatement',
15618             expression: {
15619                 type: 'SequenceExpression',
15620                 expressions: [{
15621                     type: 'Identifier',
15622                     name: 'x',
15623                     range: [0, 1],
15624                     loc: {
15625                         start: { line: 1, column: 0 },
15626                         end: { line: 1, column: 1 }
15627                     }
15628                 }, {
15629                     type: 'Identifier',
15630                     name: 'y',
15631                     range: [3, 4],
15632                     loc: {
15633                         start: { line: 1, column: 3 },
15634                         end: { line: 1, column: 4 }
15635                     }
15636                 }],
15637                 range: [0, 4],
15638                 loc: {
15639                     start: { line: 1, column: 0 },
15640                     end: { line: 1, column: 4 }
15641                 }
15642             },
15643             range: [0, 4],
15644             loc: {
15645                 start: { line: 1, column: 0 },
15646                 end: { line: 1, column: 4 }
15647             }
15648         },
15649
15650         '\\u0061': {
15651             type: 'ExpressionStatement',
15652             expression: {
15653                 type: 'Identifier',
15654                 name: 'a',
15655                 range: [0, 6],
15656                 loc: {
15657                     start: { line: 1, column: 0 },
15658                     end: { line: 1, column: 6 }
15659                 }
15660             },
15661             range: [0, 6],
15662             loc: {
15663                 start: { line: 1, column: 0 },
15664                 end: { line: 1, column: 6 }
15665             }
15666         },
15667
15668         'a\\u0061': {
15669             type: 'ExpressionStatement',
15670             expression: {
15671                 type: 'Identifier',
15672                 name: 'aa',
15673                 range: [0, 7],
15674                 loc: {
15675                     start: { line: 1, column: 0 },
15676                     end: { line: 1, column: 7 }
15677                 }
15678             },
15679             range: [0, 7],
15680             loc: {
15681                 start: { line: 1, column: 0 },
15682                 end: { line: 1, column: 7 }
15683             }
15684         },
15685
15686         '\\u0061a': {
15687             type: 'ExpressionStatement',
15688             expression: {
15689                 type: 'Identifier',
15690                 name: 'aa',
15691                 range: [0, 7],
15692                 loc: {
15693                     start: { line: 1, column: 0 },
15694                     end: { line: 1, column: 7 }
15695                 }
15696             },
15697             range: [0, 7],
15698             loc: {
15699                 start: { line: 1, column: 0 },
15700                 end: { line: 1, column: 7 }
15701             }
15702         },
15703
15704         '\\u0061a ': {
15705             type: 'ExpressionStatement',
15706             expression: {
15707                 type: 'Identifier',
15708                 name: 'aa',
15709                 range: [0, 7],
15710                 loc: {
15711                     start: { line: 1, column: 0 },
15712                     end: { line: 1, column: 7 }
15713                 }
15714             },
15715             range: [0, 8],
15716             loc: {
15717                 start: { line: 1, column: 0 },
15718                 end: { line: 1, column: 8 }
15719             }
15720         }
15721     },
15722
15723     'If Statement': {
15724
15725         'if (morning) goodMorning()': {
15726             type: 'IfStatement',
15727             test: {
15728                 type: 'Identifier',
15729                 name: 'morning',
15730                 range: [4, 11],
15731                 loc: {
15732                     start: { line: 1, column: 4 },
15733                     end: { line: 1, column: 11 }
15734                 }
15735             },
15736             consequent: {
15737                 type: 'ExpressionStatement',
15738                 expression: {
15739                     type: 'CallExpression',
15740                     callee: {
15741                         type: 'Identifier',
15742                         name: 'goodMorning',
15743                         range: [13, 24],
15744                         loc: {
15745                             start: { line: 1, column: 13 },
15746                             end: { line: 1, column: 24 }
15747                         }
15748                     },
15749                     'arguments': [],
15750                     range: [13, 26],
15751                     loc: {
15752                         start: { line: 1, column: 13 },
15753                         end: { line: 1, column: 26 }
15754                     }
15755                 },
15756                 range: [13, 26],
15757                 loc: {
15758                     start: { line: 1, column: 13 },
15759                     end: { line: 1, column: 26 }
15760                 }
15761             },
15762             alternate: null,
15763             range: [0, 26],
15764             loc: {
15765                 start: { line: 1, column: 0 },
15766                 end: { line: 1, column: 26 }
15767             }
15768         },
15769
15770         'if (morning) (function(){})': {
15771             type: 'IfStatement',
15772             test: {
15773                 type: 'Identifier',
15774                 name: 'morning',
15775                 range: [4, 11],
15776                 loc: {
15777                     start: { line: 1, column: 4 },
15778                     end: { line: 1, column: 11 }
15779                 }
15780             },
15781             consequent: {
15782                 type: 'ExpressionStatement',
15783                 expression: {
15784                     type: 'FunctionExpression',
15785                     id: null,
15786                     params: [],
15787                     defaults: [],
15788                     body: {
15789                         type: 'BlockStatement',
15790                         body: [],
15791                         range: [24, 26],
15792                         loc: {
15793                             start: { line: 1, column: 24 },
15794                             end: { line: 1, column: 26 }
15795                         }
15796                     },
15797                     rest: null,
15798                     generator: false,
15799                     expression: false,
15800                     range: [14, 26],
15801                     loc: {
15802                         start: { line: 1, column: 14 },
15803                         end: { line: 1, column: 26 }
15804                     }
15805                 },
15806                 range: [13, 27],
15807                 loc: {
15808                     start: { line: 1, column: 13 },
15809                     end: { line: 1, column: 27 }
15810                 }
15811             },
15812             alternate: null,
15813             range: [0, 27],
15814             loc: {
15815                 start: { line: 1, column: 0 },
15816                 end: { line: 1, column: 27 }
15817             }
15818         },
15819
15820         'if (morning) var x = 0;': {
15821             type: 'IfStatement',
15822             test: {
15823                 type: 'Identifier',
15824                 name: 'morning',
15825                 range: [4, 11],
15826                 loc: {
15827                     start: { line: 1, column: 4 },
15828                     end: { line: 1, column: 11 }
15829                 }
15830             },
15831             consequent: {
15832                 type: 'VariableDeclaration',
15833                 declarations: [{
15834                     type: 'VariableDeclarator',
15835                     id: {
15836                         type: 'Identifier',
15837                         name: 'x',
15838                         range: [17, 18],
15839                         loc: {
15840                             start: { line: 1, column: 17 },
15841                             end: { line: 1, column: 18 }
15842                         }
15843                     },
15844                     init: {
15845                         type: 'Literal',
15846                         value: 0,
15847                         raw: '0',
15848                         range: [21, 22],
15849                         loc: {
15850                             start: { line: 1, column: 21 },
15851                             end: { line: 1, column: 22 }
15852                         }
15853                     },
15854                     range: [17, 22],
15855                     loc: {
15856                         start: { line: 1, column: 17 },
15857                         end: { line: 1, column: 22 }
15858                     }
15859                 }],
15860                 kind: 'var',
15861                 range: [13, 23],
15862                 loc: {
15863                     start: { line: 1, column: 13 },
15864                     end: { line: 1, column: 23 }
15865                 }
15866             },
15867             alternate: null,
15868             range: [0, 23],
15869             loc: {
15870                 start: { line: 1, column: 0 },
15871                 end: { line: 1, column: 23 }
15872             }
15873         },
15874
15875         'if (morning) function a(){}': {
15876             type: 'IfStatement',
15877             test: {
15878                 type: 'Identifier',
15879                 name: 'morning',
15880                 range: [4, 11],
15881                 loc: {
15882                     start: { line: 1, column: 4 },
15883                     end: { line: 1, column: 11 }
15884                 }
15885             },
15886             consequent: {
15887                 type: 'FunctionDeclaration',
15888                 id: {
15889                     type: 'Identifier',
15890                     name: 'a',
15891                     range: [22, 23],
15892                     loc: {
15893                         start: { line: 1, column: 22 },
15894                         end: { line: 1, column: 23 }
15895                     }
15896                 },
15897                 params: [],
15898                 defaults: [],
15899                 body: {
15900                     type: 'BlockStatement',
15901                     body: [],
15902                     range: [25, 27],
15903                     loc: {
15904                         start: { line: 1, column: 25 },
15905                         end: { line: 1, column: 27 }
15906                     }
15907                 },
15908                 rest: null,
15909                 generator: false,
15910                 expression: false,
15911                 range: [13, 27],
15912                 loc: {
15913                     start: { line: 1, column: 13 },
15914                     end: { line: 1, column: 27 }
15915                 }
15916             },
15917             alternate: null,
15918             range: [0, 27],
15919             loc: {
15920                 start: { line: 1, column: 0 },
15921                 end: { line: 1, column: 27 }
15922             }
15923         },
15924
15925         'if (morning) goodMorning(); else goodDay()': {
15926             type: 'IfStatement',
15927             test: {
15928                 type: 'Identifier',
15929                 name: 'morning',
15930                 range: [4, 11],
15931                 loc: {
15932                     start: { line: 1, column: 4 },
15933                     end: { line: 1, column: 11 }
15934                 }
15935             },
15936             consequent: {
15937                 type: 'ExpressionStatement',
15938                 expression: {
15939                     type: 'CallExpression',
15940                     callee: {
15941                         type: 'Identifier',
15942                         name: 'goodMorning',
15943                         range: [13, 24],
15944                         loc: {
15945                             start: { line: 1, column: 13 },
15946                             end: { line: 1, column: 24 }
15947                         }
15948                     },
15949                     'arguments': [],
15950                     range: [13, 26],
15951                     loc: {
15952                         start: { line: 1, column: 13 },
15953                         end: { line: 1, column: 26 }
15954                     }
15955                 },
15956                 range: [13, 27],
15957                 loc: {
15958                     start: { line: 1, column: 13 },
15959                     end: { line: 1, column: 27 }
15960                 }
15961             },
15962             alternate: {
15963                 type: 'ExpressionStatement',
15964                 expression: {
15965                     type: 'CallExpression',
15966                     callee: {
15967                         type: 'Identifier',
15968                         name: 'goodDay',
15969                         range: [33, 40],
15970                         loc: {
15971                             start: { line: 1, column: 33 },
15972                             end: { line: 1, column: 40 }
15973                         }
15974                     },
15975                     'arguments': [],
15976                     range: [33, 42],
15977                     loc: {
15978                         start: { line: 1, column: 33 },
15979                         end: { line: 1, column: 42 }
15980                     }
15981                 },
15982                 range: [33, 42],
15983                 loc: {
15984                     start: { line: 1, column: 33 },
15985                     end: { line: 1, column: 42 }
15986                 }
15987             },
15988             range: [0, 42],
15989             loc: {
15990                 start: { line: 1, column: 0 },
15991                 end: { line: 1, column: 42 }
15992             }
15993         },
15994
15995         'if (true) that()\n; else;': {
15996             type: "IfStatement",
15997             test: {
15998                 type: "Literal",
15999                 value: true,
16000                 raw: "true",
16001                 range: [4, 8],
16002                 loc: {
16003                     start: { line: 1, column: 4 },
16004                     end: { line: 1, column: 8 }
16005                 }
16006             },
16007             consequent: {
16008                 type: "ExpressionStatement",
16009                 expression: {
16010                     type: "CallExpression",
16011                     callee: {
16012                         type: "Identifier",
16013                         name: "that",
16014                         range: [10, 14],
16015                         loc: {
16016                             start: { line: 1, column: 10 },
16017                             end: { line: 1, column: 14 }
16018                         }
16019                     },
16020                     "arguments": [],
16021                     range: [10, 16],
16022                     loc: {
16023                         start: { line: 1, column: 10 },
16024                         end: { line: 1, column: 16 }
16025                     }
16026                 },
16027                 range: [10, 18],
16028                 loc: {
16029                     start: { line: 1, column: 10 },
16030                     end: { line: 2, column: 1 }
16031                 }
16032             },
16033             alternate: {
16034                 type: "EmptyStatement",
16035                 range: [23, 24],
16036                 loc: {
16037                     start: { line: 2, column: 6 },
16038                     end: { line: 2, column: 7 }
16039                 }
16040             },
16041             range: [0, 24],
16042             loc: {
16043                 start: { line: 1, column: 0 },
16044                 end: { line: 2, column: 7 }
16045             }
16046         },
16047
16048         'if (true) that(); else;': {
16049             type: "IfStatement",
16050             test: {
16051                 type: "Literal",
16052                 value: true,
16053                 raw: "true",
16054                 range: [4, 8],
16055                 loc: {
16056                     start: { line: 1, column: 4 },
16057                     end: { line: 1, column: 8 }
16058                 }
16059             },
16060             consequent: {
16061                 type: "ExpressionStatement",
16062                 expression: {
16063                     type: "CallExpression",
16064                     callee: {
16065                         type: "Identifier",
16066                         name: "that",
16067                         range: [10, 14],
16068                         loc: {
16069                             start: { line: 1, column: 10 },
16070                             end: { line: 1, column: 14 }
16071                         }
16072                     },
16073                     "arguments": [],
16074                     range: [10, 16],
16075                     loc: {
16076                         start: { line: 1, column: 10 },
16077                         end: { line: 1, column: 16 }
16078                     }
16079                 },
16080                 range: [10, 17],
16081                 loc: {
16082                     start: { line: 1, column: 10 },
16083                     end: { line: 1, column: 17 }
16084                 }
16085             },
16086             alternate: {
16087                 type: "EmptyStatement",
16088                 range: [22, 23],
16089                 loc: {
16090                     start: { line: 1, column: 22 },
16091                     end: { line: 1, column: 23 }
16092                 }
16093             },
16094             range: [0, 23],
16095             loc: {
16096                 start: { line: 1, column: 0 },
16097                 end: { line: 1, column: 23 }
16098             }
16099         }
16100
16101     },
16102
16103     'Iteration Statements': {
16104
16105         'do keep(); while (true)': {
16106             type: 'DoWhileStatement',
16107             body: {
16108                 type: 'ExpressionStatement',
16109                 expression: {
16110                     type: 'CallExpression',
16111                     callee: {
16112                         type: 'Identifier',
16113                         name: 'keep',
16114                         range: [3, 7],
16115                         loc: {
16116                             start: { line: 1, column: 3 },
16117                             end: { line: 1, column: 7 }
16118                         }
16119                     },
16120                     'arguments': [],
16121                     range: [3, 9],
16122                     loc: {
16123                         start: { line: 1, column: 3 },
16124                         end: { line: 1, column: 9 }
16125                     }
16126                 },
16127                 range: [3, 10],
16128                 loc: {
16129                     start: { line: 1, column: 3 },
16130                     end: { line: 1, column: 10 }
16131                 }
16132             },
16133             test: {
16134                 type: 'Literal',
16135                 value: true,
16136                 raw: 'true',
16137                 range: [18, 22],
16138                 loc: {
16139                     start: { line: 1, column: 18 },
16140                     end: { line: 1, column: 22 }
16141                 }
16142             },
16143             range: [0, 23],
16144             loc: {
16145                 start: { line: 1, column: 0 },
16146                 end: { line: 1, column: 23 }
16147             }
16148         },
16149
16150         'do keep(); while (true);': {
16151             type: 'DoWhileStatement',
16152             body: {
16153                 type: 'ExpressionStatement',
16154                 expression: {
16155                     type: 'CallExpression',
16156                     callee: {
16157                         type: 'Identifier',
16158                         name: 'keep',
16159                         range: [3, 7],
16160                         loc: {
16161                             start: { line: 1, column: 3 },
16162                             end: { line: 1, column: 7 }
16163                         }
16164                     },
16165                     'arguments': [],
16166                     range: [3, 9],
16167                     loc: {
16168                         start: { line: 1, column: 3 },
16169                         end: { line: 1, column: 9 }
16170                     }
16171                 },
16172                 range: [3, 10],
16173                 loc: {
16174                     start: { line: 1, column: 3 },
16175                     end: { line: 1, column: 10 }
16176                 }
16177             },
16178             test: {
16179                 type: 'Literal',
16180                 value: true,
16181                 raw: 'true',
16182                 range: [18, 22],
16183                 loc: {
16184                     start: { line: 1, column: 18 },
16185                     end: { line: 1, column: 22 }
16186                 }
16187             },
16188             range: [0, 24],
16189             loc: {
16190                 start: { line: 1, column: 0 },
16191                 end: { line: 1, column: 24 }
16192             }
16193         },
16194
16195         'do { x++; y--; } while (x < 10)': {
16196             type: 'DoWhileStatement',
16197             body: {
16198                 type: 'BlockStatement',
16199                 body: [{
16200                     type: 'ExpressionStatement',
16201                     expression: {
16202                         type: 'UpdateExpression',
16203                         operator: '++',
16204                         argument: {
16205                             type: 'Identifier',
16206                             name: 'x',
16207                             range: [5, 6],
16208                             loc: {
16209                                 start: { line: 1, column: 5 },
16210                                 end: { line: 1, column: 6 }
16211                             }
16212                         },
16213                         prefix: false,
16214                         range: [5, 8],
16215                         loc: {
16216                             start: { line: 1, column: 5 },
16217                             end: { line: 1, column: 8 }
16218                         }
16219                     },
16220                     range: [5, 9],
16221                     loc: {
16222                         start: { line: 1, column: 5 },
16223                         end: { line: 1, column: 9 }
16224                     }
16225                 }, {
16226                     type: 'ExpressionStatement',
16227                     expression: {
16228                         type: 'UpdateExpression',
16229                         operator: '--',
16230                         argument: {
16231                             type: 'Identifier',
16232                             name: 'y',
16233                             range: [10, 11],
16234                             loc: {
16235                                 start: { line: 1, column: 10 },
16236                                 end: { line: 1, column: 11 }
16237                             }
16238                         },
16239                         prefix: false,
16240                         range: [10, 13],
16241                         loc: {
16242                             start: { line: 1, column: 10 },
16243                             end: { line: 1, column: 13 }
16244                         }
16245                     },
16246                     range: [10, 14],
16247                     loc: {
16248                         start: { line: 1, column: 10 },
16249                         end: { line: 1, column: 14 }
16250                     }
16251                 }],
16252                 range: [3, 16],
16253                 loc: {
16254                     start: { line: 1, column: 3 },
16255                     end: { line: 1, column: 16 }
16256                 }
16257             },
16258             test: {
16259                 type: 'BinaryExpression',
16260                 operator: '<',
16261                 left: {
16262                     type: 'Identifier',
16263                     name: 'x',
16264                     range: [24, 25],
16265                     loc: {
16266                         start: { line: 1, column: 24 },
16267                         end: { line: 1, column: 25 }
16268                     }
16269                 },
16270                 right: {
16271                     type: 'Literal',
16272                     value: 10,
16273                     raw: '10',
16274                     range: [28, 30],
16275                     loc: {
16276                         start: { line: 1, column: 28 },
16277                         end: { line: 1, column: 30 }
16278                     }
16279                 },
16280                 range: [24, 30],
16281                 loc: {
16282                     start: { line: 1, column: 24 },
16283                     end: { line: 1, column: 30 }
16284                 }
16285             },
16286             range: [0, 31],
16287             loc: {
16288                 start: { line: 1, column: 0 },
16289                 end: { line: 1, column: 31 }
16290             }
16291         },
16292
16293         '{ do { } while (false) false }': {
16294             type: 'BlockStatement',
16295             body: [{
16296                 type: 'DoWhileStatement',
16297                 body: {
16298                     type: 'BlockStatement',
16299                     body: [],
16300                     range: [5, 8],
16301                     loc: {
16302                         start: { line: 1, column: 5 },
16303                         end: { line: 1, column: 8 }
16304                     }
16305                 },
16306                 test: {
16307                     type: 'Literal',
16308                     value: false,
16309                     raw: 'false',
16310                     range: [16, 21],
16311                     loc: {
16312                         start: { line: 1, column: 16 },
16313                         end: { line: 1, column: 21 }
16314                     }
16315                 },
16316                 range: [2, 22],
16317                 loc: {
16318                     start: { line: 1, column: 2 },
16319                     end: { line: 1, column: 22 }
16320                 }
16321             }, {
16322                 type: 'ExpressionStatement',
16323                 expression: {
16324                     type: 'Literal',
16325                     value: false,
16326                     raw: 'false',
16327                     range: [23, 28],
16328                     loc: {
16329                         start: { line: 1, column: 23 },
16330                         end: { line: 1, column: 28 }
16331                     }
16332                 },
16333                 range: [23, 29],
16334                 loc: {
16335                     start: { line: 1, column: 23 },
16336                     end: { line: 1, column: 29 }
16337                 }
16338             }],
16339             range: [0, 30],
16340             loc: {
16341                 start: { line: 1, column: 0 },
16342                 end: { line: 1, column: 30 }
16343             }
16344         },
16345
16346         'do that();while (true)': {
16347             type: "DoWhileStatement",
16348             body: {
16349                 type: "ExpressionStatement",
16350                 expression: {
16351                     type: "CallExpression",
16352                     callee: {
16353                         type: "Identifier",
16354                         name: "that",
16355                         range: [3, 7],
16356                         loc: {
16357                             start: { line: 1, column: 3 },
16358                             end: { line: 1, column: 7 }
16359                         }
16360                     },
16361                     "arguments": [],
16362                     range: [3, 9],
16363                     loc: {
16364                         start: { line: 1, column: 3 },
16365                         end: { line: 1, column: 9 }
16366                     }
16367                 },
16368                 range: [3, 10],
16369                 loc: {
16370                     start: { line: 1, column: 3 },
16371                     end: { line: 1, column: 10 }
16372                 }
16373             },
16374             test: {
16375                 type: "Literal",
16376                 value: true,
16377                 raw: "true",
16378                 range: [17, 21],
16379                 loc: {
16380                     start: { line: 1, column: 17 },
16381                     end: { line: 1, column: 21 }
16382                 }
16383             },
16384             range: [0, 22],
16385             loc: {
16386                 start: { line: 1, column: 0 },
16387                 end: { line: 1, column: 22 }
16388             }
16389         },
16390
16391         'do that()\n;while (true)': {
16392             type: "DoWhileStatement",
16393             body: {
16394                 type: "ExpressionStatement",
16395                 expression: {
16396                     type: "CallExpression",
16397                     callee: {
16398                         type: "Identifier",
16399                         name: "that",
16400                         range: [3, 7],
16401                         loc: {
16402                             start: { line: 1, column: 3 },
16403                             end: { line: 1, column: 7 }
16404                         }
16405                     },
16406                     "arguments": [],
16407                     range: [3, 9],
16408                     loc: {
16409                         start: { line: 1, column: 3 },
16410                         end: { line: 1, column: 9 }
16411                     }
16412                 },
16413                 range: [3, 11],
16414                 loc: {
16415                     start: { line: 1, column: 3 },
16416                     end: { line: 2, column: 1 }
16417                 }
16418             },
16419             test: {
16420                 type: "Literal",
16421                 value: true,
16422                 raw: "true",
16423                 range: [18, 22],
16424                 loc: {
16425                     start: { line: 2, column: 8 },
16426                     end: { line: 2, column: 12 }
16427                 }
16428             },
16429             range: [0, 23],
16430             loc: {
16431                 start: { line: 1, column: 0 },
16432                 end: { line: 2, column: 13 }
16433             }
16434         },
16435
16436         'while (true) doSomething()': {
16437             type: 'WhileStatement',
16438             test: {
16439                 type: 'Literal',
16440                 value: true,
16441                 raw: 'true',
16442                 range: [7, 11],
16443                 loc: {
16444                     start: { line: 1, column: 7 },
16445                     end: { line: 1, column: 11 }
16446                 }
16447             },
16448             body: {
16449                 type: 'ExpressionStatement',
16450                 expression: {
16451                     type: 'CallExpression',
16452                     callee: {
16453                         type: 'Identifier',
16454                         name: 'doSomething',
16455                         range: [13, 24],
16456                         loc: {
16457                             start: { line: 1, column: 13 },
16458                             end: { line: 1, column: 24 }
16459                         }
16460                     },
16461                     'arguments': [],
16462                     range: [13, 26],
16463                     loc: {
16464                         start: { line: 1, column: 13 },
16465                         end: { line: 1, column: 26 }
16466                     }
16467                 },
16468                 range: [13, 26],
16469                 loc: {
16470                     start: { line: 1, column: 13 },
16471                     end: { line: 1, column: 26 }
16472                 }
16473             },
16474             range: [0, 26],
16475             loc: {
16476                 start: { line: 1, column: 0 },
16477                 end: { line: 1, column: 26 }
16478             }
16479         },
16480
16481         'while (x < 10) { x++; y--; }': {
16482             type: 'WhileStatement',
16483             test: {
16484                 type: 'BinaryExpression',
16485                 operator: '<',
16486                 left: {
16487                     type: 'Identifier',
16488                     name: 'x',
16489                     range: [7, 8],
16490                     loc: {
16491                         start: { line: 1, column: 7 },
16492                         end: { line: 1, column: 8 }
16493                     }
16494                 },
16495                 right: {
16496                     type: 'Literal',
16497                     value: 10,
16498                     raw: '10',
16499                     range: [11, 13],
16500                     loc: {
16501                         start: { line: 1, column: 11 },
16502                         end: { line: 1, column: 13 }
16503                     }
16504                 },
16505                 range: [7, 13],
16506                 loc: {
16507                     start: { line: 1, column: 7 },
16508                     end: { line: 1, column: 13 }
16509                 }
16510             },
16511             body: {
16512                 type: 'BlockStatement',
16513                 body: [{
16514                     type: 'ExpressionStatement',
16515                     expression: {
16516                         type: 'UpdateExpression',
16517                         operator: '++',
16518                         argument: {
16519                             type: 'Identifier',
16520                             name: 'x',
16521                             range: [17, 18],
16522                             loc: {
16523                                 start: { line: 1, column: 17 },
16524                                 end: { line: 1, column: 18 }
16525                             }
16526                         },
16527                         prefix: false,
16528                         range: [17, 20],
16529                         loc: {
16530                             start: { line: 1, column: 17 },
16531                             end: { line: 1, column: 20 }
16532                         }
16533                     },
16534                     range: [17, 21],
16535                     loc: {
16536                         start: { line: 1, column: 17 },
16537                         end: { line: 1, column: 21 }
16538                     }
16539                 }, {
16540                     type: 'ExpressionStatement',
16541                     expression: {
16542                         type: 'UpdateExpression',
16543                         operator: '--',
16544                         argument: {
16545                             type: 'Identifier',
16546                             name: 'y',
16547                             range: [22, 23],
16548                             loc: {
16549                                 start: { line: 1, column: 22 },
16550                                 end: { line: 1, column: 23 }
16551                             }
16552                         },
16553                         prefix: false,
16554                         range: [22, 25],
16555                         loc: {
16556                             start: { line: 1, column: 22 },
16557                             end: { line: 1, column: 25 }
16558                         }
16559                     },
16560                     range: [22, 26],
16561                     loc: {
16562                         start: { line: 1, column: 22 },
16563                         end: { line: 1, column: 26 }
16564                     }
16565                 }],
16566                 range: [15, 28],
16567                 loc: {
16568                     start: { line: 1, column: 15 },
16569                     end: { line: 1, column: 28 }
16570                 }
16571             },
16572             range: [0, 28],
16573             loc: {
16574                 start: { line: 1, column: 0 },
16575                 end: { line: 1, column: 28 }
16576             }
16577         },
16578
16579         'for(;;);': {
16580             type: 'ForStatement',
16581             init: null,
16582             test: null,
16583             update: null,
16584             body: {
16585                 type: 'EmptyStatement',
16586                 range: [7, 8],
16587                 loc: {
16588                     start: { line: 1, column: 7 },
16589                     end: { line: 1, column: 8 }
16590                 }
16591             },
16592             range: [0, 8],
16593             loc: {
16594                 start: { line: 1, column: 0 },
16595                 end: { line: 1, column: 8 }
16596             }
16597         },
16598
16599         'for(;;){}': {
16600             type: 'ForStatement',
16601             init: null,
16602             test: null,
16603             update: null,
16604             body: {
16605                 type: 'BlockStatement',
16606                 body: [],
16607                 range: [7, 9],
16608                 loc: {
16609                     start: { line: 1, column: 7 },
16610                     end: { line: 1, column: 9 }
16611                 }
16612             },
16613             range: [0, 9],
16614             loc: {
16615                 start: { line: 1, column: 0 },
16616                 end: { line: 1, column: 9 }
16617             }
16618         },
16619
16620         'for(x = 0;;);': {
16621             type: 'ForStatement',
16622             init: {
16623                 type: 'AssignmentExpression',
16624                 operator: '=',
16625                 left: {
16626                     type: 'Identifier',
16627                     name: 'x',
16628                     range: [4, 5],
16629                     loc: {
16630                         start: { line: 1, column: 4 },
16631                         end: { line: 1, column: 5 }
16632                     }
16633                 },
16634                 right: {
16635                     type: 'Literal',
16636                     value: 0,
16637                     raw: '0',
16638                     range: [8, 9],
16639                     loc: {
16640                         start: { line: 1, column: 8 },
16641                         end: { line: 1, column: 9 }
16642                     }
16643                 },
16644                 range: [4, 9],
16645                 loc: {
16646                     start: { line: 1, column: 4 },
16647                     end: { line: 1, column: 9 }
16648                 }
16649             },
16650             test: null,
16651             update: null,
16652             body: {
16653                 type: 'EmptyStatement',
16654                 range: [12, 13],
16655                 loc: {
16656                     start: { line: 1, column: 12 },
16657                     end: { line: 1, column: 13 }
16658                 }
16659             },
16660             range: [0, 13],
16661             loc: {
16662                 start: { line: 1, column: 0 },
16663                 end: { line: 1, column: 13 }
16664             }
16665         },
16666
16667         'for(var x = 0;;);': {
16668             type: 'ForStatement',
16669             init: {
16670                 type: 'VariableDeclaration',
16671                 declarations: [{
16672                     type: 'VariableDeclarator',
16673                     id: {
16674                         type: 'Identifier',
16675                         name: 'x',
16676                         range: [8, 9],
16677                         loc: {
16678                             start: { line: 1, column: 8 },
16679                             end: { line: 1, column: 9 }
16680                         }
16681                     },
16682                     init: {
16683                         type: 'Literal',
16684                         value: 0,
16685                         raw: '0',
16686                         range: [12, 13],
16687                         loc: {
16688                             start: { line: 1, column: 12 },
16689                             end: { line: 1, column: 13 }
16690                         }
16691                     },
16692                     range: [8, 13],
16693                     loc: {
16694                         start: { line: 1, column: 8 },
16695                         end: { line: 1, column: 13 }
16696                     }
16697                 }],
16698                 kind: 'var',
16699                 range: [4, 13],
16700                 loc: {
16701                     start: { line: 1, column: 4 },
16702                     end: { line: 1, column: 13 }
16703                 }
16704             },
16705             test: null,
16706             update: null,
16707             body: {
16708                 type: 'EmptyStatement',
16709                 range: [16, 17],
16710                 loc: {
16711                     start: { line: 1, column: 16 },
16712                     end: { line: 1, column: 17 }
16713                 }
16714             },
16715             range: [0, 17],
16716             loc: {
16717                 start: { line: 1, column: 0 },
16718                 end: { line: 1, column: 17 }
16719             }
16720         },
16721
16722         'for(let x = 0;;);': {
16723             type: 'ForStatement',
16724             init: {
16725                 type: 'VariableDeclaration',
16726                 declarations: [{
16727                     type: 'VariableDeclarator',
16728                     id: {
16729                         type: 'Identifier',
16730                         name: 'x',
16731                         range: [8, 9],
16732                         loc: {
16733                             start: { line: 1, column: 8 },
16734                             end: { line: 1, column: 9 }
16735                         }
16736                     },
16737                     init: {
16738                         type: 'Literal',
16739                         value: 0,
16740                         raw: '0',
16741                         range: [12, 13],
16742                         loc: {
16743                             start: { line: 1, column: 12 },
16744                             end: { line: 1, column: 13 }
16745                         }
16746                     },
16747                     range: [8, 13],
16748                     loc: {
16749                         start: { line: 1, column: 8 },
16750                         end: { line: 1, column: 13 }
16751                     }
16752                 }],
16753                 kind: 'let',
16754                 range: [4, 13],
16755                 loc: {
16756                     start: { line: 1, column: 4 },
16757                     end: { line: 1, column: 13 }
16758                 }
16759             },
16760             test: null,
16761             update: null,
16762             body: {
16763                 type: 'EmptyStatement',
16764                 range: [16, 17],
16765                 loc: {
16766                     start: { line: 1, column: 16 },
16767                     end: { line: 1, column: 17 }
16768                 }
16769             },
16770             range: [0, 17],
16771             loc: {
16772                 start: { line: 1, column: 0 },
16773                 end: { line: 1, column: 17 }
16774             }
16775         },
16776
16777         'for(var x = 0, y = 1;;);': {
16778             type: 'ForStatement',
16779             init: {
16780                 type: 'VariableDeclaration',
16781                 declarations: [{
16782                     type: 'VariableDeclarator',
16783                     id: {
16784                         type: 'Identifier',
16785                         name: 'x',
16786                         range: [8, 9],
16787                         loc: {
16788                             start: { line: 1, column: 8 },
16789                             end: { line: 1, column: 9 }
16790                         }
16791                     },
16792                     init: {
16793                         type: 'Literal',
16794                         value: 0,
16795                         raw: '0',
16796                         range: [12, 13],
16797                         loc: {
16798                             start: { line: 1, column: 12 },
16799                             end: { line: 1, column: 13 }
16800                         }
16801                     },
16802                     range: [8, 13],
16803                     loc: {
16804                         start: { line: 1, column: 8 },
16805                         end: { line: 1, column: 13 }
16806                     }
16807                 }, {
16808                     type: 'VariableDeclarator',
16809                     id: {
16810                         type: 'Identifier',
16811                         name: 'y',
16812                         range: [15, 16],
16813                         loc: {
16814                             start: { line: 1, column: 15 },
16815                             end: { line: 1, column: 16 }
16816                         }
16817                     },
16818                     init: {
16819                         type: 'Literal',
16820                         value: 1,
16821                         raw: '1',
16822                         range: [19, 20],
16823                         loc: {
16824                             start: { line: 1, column: 19 },
16825                             end: { line: 1, column: 20 }
16826                         }
16827                     },
16828                     range: [15, 20],
16829                     loc: {
16830                         start: { line: 1, column: 15 },
16831                         end: { line: 1, column: 20 }
16832                     }
16833                 }],
16834                 kind: 'var',
16835                 range: [4, 20],
16836                 loc: {
16837                     start: { line: 1, column: 4 },
16838                     end: { line: 1, column: 20 }
16839                 }
16840             },
16841             test: null,
16842             update: null,
16843             body: {
16844                 type: 'EmptyStatement',
16845                 range: [23, 24],
16846                 loc: {
16847                     start: { line: 1, column: 23 },
16848                     end: { line: 1, column: 24 }
16849                 }
16850             },
16851             range: [0, 24],
16852             loc: {
16853                 start: { line: 1, column: 0 },
16854                 end: { line: 1, column: 24 }
16855             }
16856         },
16857
16858         'for(x = 0; x < 42;);': {
16859             type: 'ForStatement',
16860             init: {
16861                 type: 'AssignmentExpression',
16862                 operator: '=',
16863                 left: {
16864                     type: 'Identifier',
16865                     name: 'x',
16866                     range: [4, 5],
16867                     loc: {
16868                         start: { line: 1, column: 4 },
16869                         end: { line: 1, column: 5 }
16870                     }
16871                 },
16872                 right: {
16873                     type: 'Literal',
16874                     value: 0,
16875                     raw: '0',
16876                     range: [8, 9],
16877                     loc: {
16878                         start: { line: 1, column: 8 },
16879                         end: { line: 1, column: 9 }
16880                     }
16881                 },
16882                 range: [4, 9],
16883                 loc: {
16884                     start: { line: 1, column: 4 },
16885                     end: { line: 1, column: 9 }
16886                 }
16887             },
16888             test: {
16889                 type: 'BinaryExpression',
16890                 operator: '<',
16891                 left: {
16892                     type: 'Identifier',
16893                     name: 'x',
16894                     range: [11, 12],
16895                     loc: {
16896                         start: { line: 1, column: 11 },
16897                         end: { line: 1, column: 12 }
16898                     }
16899                 },
16900                 right: {
16901                     type: 'Literal',
16902                     value: 42,
16903                     raw: '42',
16904                     range: [15, 17],
16905                     loc: {
16906                         start: { line: 1, column: 15 },
16907                         end: { line: 1, column: 17 }
16908                     }
16909                 },
16910                 range: [11, 17],
16911                 loc: {
16912                     start: { line: 1, column: 11 },
16913                     end: { line: 1, column: 17 }
16914                 }
16915             },
16916             update: null,
16917             body: {
16918                 type: 'EmptyStatement',
16919                 range: [19, 20],
16920                 loc: {
16921                     start: { line: 1, column: 19 },
16922                     end: { line: 1, column: 20 }
16923                 }
16924             },
16925             range: [0, 20],
16926             loc: {
16927                 start: { line: 1, column: 0 },
16928                 end: { line: 1, column: 20 }
16929             }
16930         },
16931
16932         'for(x = 0; x < 42; x++);': {
16933             type: 'ForStatement',
16934             init: {
16935                 type: 'AssignmentExpression',
16936                 operator: '=',
16937                 left: {
16938                     type: 'Identifier',
16939                     name: 'x',
16940                     range: [4, 5],
16941                     loc: {
16942                         start: { line: 1, column: 4 },
16943                         end: { line: 1, column: 5 }
16944                     }
16945                 },
16946                 right: {
16947                     type: 'Literal',
16948                     value: 0,
16949                     raw: '0',
16950                     range: [8, 9],
16951                     loc: {
16952                         start: { line: 1, column: 8 },
16953                         end: { line: 1, column: 9 }
16954                     }
16955                 },
16956                 range: [4, 9],
16957                 loc: {
16958                     start: { line: 1, column: 4 },
16959                     end: { line: 1, column: 9 }
16960                 }
16961             },
16962             test: {
16963                 type: 'BinaryExpression',
16964                 operator: '<',
16965                 left: {
16966                     type: 'Identifier',
16967                     name: 'x',
16968                     range: [11, 12],
16969                     loc: {
16970                         start: { line: 1, column: 11 },
16971                         end: { line: 1, column: 12 }
16972                     }
16973                 },
16974                 right: {
16975                     type: 'Literal',
16976                     value: 42,
16977                     raw: '42',
16978                     range: [15, 17],
16979                     loc: {
16980                         start: { line: 1, column: 15 },
16981                         end: { line: 1, column: 17 }
16982                     }
16983                 },
16984                 range: [11, 17],
16985                 loc: {
16986                     start: { line: 1, column: 11 },
16987                     end: { line: 1, column: 17 }
16988                 }
16989             },
16990             update: {
16991                 type: 'UpdateExpression',
16992                 operator: '++',
16993                 argument: {
16994                     type: 'Identifier',
16995                     name: 'x',
16996                     range: [19, 20],
16997                     loc: {
16998                         start: { line: 1, column: 19 },
16999                         end: { line: 1, column: 20 }
17000                     }
17001                 },
17002                 prefix: false,
17003                 range: [19, 22],
17004                 loc: {
17005                     start: { line: 1, column: 19 },
17006                     end: { line: 1, column: 22 }
17007                 }
17008             },
17009             body: {
17010                 type: 'EmptyStatement',
17011                 range: [23, 24],
17012                 loc: {
17013                     start: { line: 1, column: 23 },
17014                     end: { line: 1, column: 24 }
17015                 }
17016             },
17017             range: [0, 24],
17018             loc: {
17019                 start: { line: 1, column: 0 },
17020                 end: { line: 1, column: 24 }
17021             }
17022         },
17023
17024         'for(x = 0; x < 42; x++) process(x);': {
17025             type: 'ForStatement',
17026             init: {
17027                 type: 'AssignmentExpression',
17028                 operator: '=',
17029                 left: {
17030                     type: 'Identifier',
17031                     name: 'x',
17032                     range: [4, 5],
17033                     loc: {
17034                         start: { line: 1, column: 4 },
17035                         end: { line: 1, column: 5 }
17036                     }
17037                 },
17038                 right: {
17039                     type: 'Literal',
17040                     value: 0,
17041                     raw: '0',
17042                     range: [8, 9],
17043                     loc: {
17044                         start: { line: 1, column: 8 },
17045                         end: { line: 1, column: 9 }
17046                     }
17047                 },
17048                 range: [4, 9],
17049                 loc: {
17050                     start: { line: 1, column: 4 },
17051                     end: { line: 1, column: 9 }
17052                 }
17053             },
17054             test: {
17055                 type: 'BinaryExpression',
17056                 operator: '<',
17057                 left: {
17058                     type: 'Identifier',
17059                     name: 'x',
17060                     range: [11, 12],
17061                     loc: {
17062                         start: { line: 1, column: 11 },
17063                         end: { line: 1, column: 12 }
17064                     }
17065                 },
17066                 right: {
17067                     type: 'Literal',
17068                     value: 42,
17069                     raw: '42',
17070                     range: [15, 17],
17071                     loc: {
17072                         start: { line: 1, column: 15 },
17073                         end: { line: 1, column: 17 }
17074                     }
17075                 },
17076                 range: [11, 17],
17077                 loc: {
17078                     start: { line: 1, column: 11 },
17079                     end: { line: 1, column: 17 }
17080                 }
17081             },
17082             update: {
17083                 type: 'UpdateExpression',
17084                 operator: '++',
17085                 argument: {
17086                     type: 'Identifier',
17087                     name: 'x',
17088                     range: [19, 20],
17089                     loc: {
17090                         start: { line: 1, column: 19 },
17091                         end: { line: 1, column: 20 }
17092                     }
17093                 },
17094                 prefix: false,
17095                 range: [19, 22],
17096                 loc: {
17097                     start: { line: 1, column: 19 },
17098                     end: { line: 1, column: 22 }
17099                 }
17100             },
17101             body: {
17102                 type: 'ExpressionStatement',
17103                 expression: {
17104                     type: 'CallExpression',
17105                     callee: {
17106                         type: 'Identifier',
17107                         name: 'process',
17108                         range: [24, 31],
17109                         loc: {
17110                             start: { line: 1, column: 24 },
17111                             end: { line: 1, column: 31 }
17112                         }
17113                     },
17114                     'arguments': [{
17115                         type: 'Identifier',
17116                         name: 'x',
17117                         range: [32, 33],
17118                         loc: {
17119                             start: { line: 1, column: 32 },
17120                             end: { line: 1, column: 33 }
17121                         }
17122                     }],
17123                     range: [24, 34],
17124                     loc: {
17125                         start: { line: 1, column: 24 },
17126                         end: { line: 1, column: 34 }
17127                     }
17128                 },
17129                 range: [24, 35],
17130                 loc: {
17131                     start: { line: 1, column: 24 },
17132                     end: { line: 1, column: 35 }
17133                 }
17134             },
17135             range: [0, 35],
17136             loc: {
17137                 start: { line: 1, column: 0 },
17138                 end: { line: 1, column: 35 }
17139             }
17140         },
17141
17142         'for(x in list) process(x);': {
17143             type: 'ForInStatement',
17144             left: {
17145                 type: 'Identifier',
17146                 name: 'x',
17147                 range: [4, 5],
17148                 loc: {
17149                     start: { line: 1, column: 4 },
17150                     end: { line: 1, column: 5 }
17151                 }
17152             },
17153             right: {
17154                 type: 'Identifier',
17155                 name: 'list',
17156                 range: [9, 13],
17157                 loc: {
17158                     start: { line: 1, column: 9 },
17159                     end: { line: 1, column: 13 }
17160                 }
17161             },
17162             body: {
17163                 type: 'ExpressionStatement',
17164                 expression: {
17165                     type: 'CallExpression',
17166                     callee: {
17167                         type: 'Identifier',
17168                         name: 'process',
17169                         range: [15, 22],
17170                         loc: {
17171                             start: { line: 1, column: 15 },
17172                             end: { line: 1, column: 22 }
17173                         }
17174                     },
17175                     'arguments': [{
17176                         type: 'Identifier',
17177                         name: 'x',
17178                         range: [23, 24],
17179                         loc: {
17180                             start: { line: 1, column: 23 },
17181                             end: { line: 1, column: 24 }
17182                         }
17183                     }],
17184                     range: [15, 25],
17185                     loc: {
17186                         start: { line: 1, column: 15 },
17187                         end: { line: 1, column: 25 }
17188                     }
17189                 },
17190                 range: [15, 26],
17191                 loc: {
17192                     start: { line: 1, column: 15 },
17193                     end: { line: 1, column: 26 }
17194                 }
17195             },
17196             each: false,
17197             range: [0, 26],
17198             loc: {
17199                 start: { line: 1, column: 0 },
17200                 end: { line: 1, column: 26 }
17201             }
17202         },
17203
17204         'for (var x in list) process(x);': {
17205             type: 'ForInStatement',
17206             left: {
17207                 type: 'VariableDeclaration',
17208                 declarations: [{
17209                     type: 'VariableDeclarator',
17210                     id: {
17211                         type: 'Identifier',
17212                         name: 'x',
17213                         range: [9, 10],
17214                         loc: {
17215                             start: { line: 1, column: 9 },
17216                             end: { line: 1, column: 10 }
17217                         }
17218                     },
17219                     init: null,
17220                     range: [9, 10],
17221                     loc: {
17222                         start: { line: 1, column: 9 },
17223                         end: { line: 1, column: 10 }
17224                     }
17225                 }],
17226                 kind: 'var',
17227                 range: [5, 10],
17228                 loc: {
17229                     start: { line: 1, column: 5 },
17230                     end: { line: 1, column: 10 }
17231                 }
17232             },
17233             right: {
17234                 type: 'Identifier',
17235                 name: 'list',
17236                 range: [14, 18],
17237                 loc: {
17238                     start: { line: 1, column: 14 },
17239                     end: { line: 1, column: 18 }
17240                 }
17241             },
17242             body: {
17243                 type: 'ExpressionStatement',
17244                 expression: {
17245                     type: 'CallExpression',
17246                     callee: {
17247                         type: 'Identifier',
17248                         name: 'process',
17249                         range: [20, 27],
17250                         loc: {
17251                             start: { line: 1, column: 20 },
17252                             end: { line: 1, column: 27 }
17253                         }
17254                     },
17255                     'arguments': [{
17256                         type: 'Identifier',
17257                         name: 'x',
17258                         range: [28, 29],
17259                         loc: {
17260                             start: { line: 1, column: 28 },
17261                             end: { line: 1, column: 29 }
17262                         }
17263                     }],
17264                     range: [20, 30],
17265                     loc: {
17266                         start: { line: 1, column: 20 },
17267                         end: { line: 1, column: 30 }
17268                     }
17269                 },
17270                 range: [20, 31],
17271                 loc: {
17272                     start: { line: 1, column: 20 },
17273                     end: { line: 1, column: 31 }
17274                 }
17275             },
17276             each: false,
17277             range: [0, 31],
17278             loc: {
17279                 start: { line: 1, column: 0 },
17280                 end: { line: 1, column: 31 }
17281             }
17282         },
17283
17284         'for (var x = 42 in list) process(x);': {
17285             type: 'ForInStatement',
17286             left: {
17287                 type: 'VariableDeclaration',
17288                 declarations: [{
17289                     type: 'VariableDeclarator',
17290                     id: {
17291                         type: 'Identifier',
17292                         name: 'x',
17293                         range: [9, 10],
17294                         loc: {
17295                             start: { line: 1, column: 9 },
17296                             end: { line: 1, column: 10 }
17297                         }
17298                     },
17299                     init: {
17300                         type: 'Literal',
17301                         value: 42,
17302                         raw: '42',
17303                         range: [13, 15],
17304                         loc: {
17305                             start: { line: 1, column: 13 },
17306                             end: { line: 1, column: 15 }
17307                         }
17308                     },
17309                     range: [9, 15],
17310                     loc: {
17311                         start: { line: 1, column: 9 },
17312                         end: { line: 1, column: 15 }
17313                     }
17314                 }],
17315                 kind: 'var',
17316                 range: [5, 15],
17317                 loc: {
17318                     start: { line: 1, column: 5 },
17319                     end: { line: 1, column: 15 }
17320                 }
17321             },
17322             right: {
17323                 type: 'Identifier',
17324                 name: 'list',
17325                 range: [19, 23],
17326                 loc: {
17327                     start: { line: 1, column: 19 },
17328                     end: { line: 1, column: 23 }
17329                 }
17330             },
17331             body: {
17332                 type: 'ExpressionStatement',
17333                 expression: {
17334                     type: 'CallExpression',
17335                     callee: {
17336                         type: 'Identifier',
17337                         name: 'process',
17338                         range: [25, 32],
17339                         loc: {
17340                             start: { line: 1, column: 25 },
17341                             end: { line: 1, column: 32 }
17342                         }
17343                     },
17344                     'arguments': [{
17345                         type: 'Identifier',
17346                         name: 'x',
17347                         range: [33, 34],
17348                         loc: {
17349                             start: { line: 1, column: 33 },
17350                             end: { line: 1, column: 34 }
17351                         }
17352                     }],
17353                     range: [25, 35],
17354                     loc: {
17355                         start: { line: 1, column: 25 },
17356                         end: { line: 1, column: 35 }
17357                     }
17358                 },
17359                 range: [25, 36],
17360                 loc: {
17361                     start: { line: 1, column: 25 },
17362                     end: { line: 1, column: 36 }
17363                 }
17364             },
17365             each: false,
17366             range: [0, 36],
17367             loc: {
17368                 start: { line: 1, column: 0 },
17369                 end: { line: 1, column: 36 }
17370             }
17371         },
17372
17373         'for (let x in list) process(x);': {
17374             type: 'ForInStatement',
17375             left: {
17376                 type: 'VariableDeclaration',
17377                 declarations: [{
17378                     type: 'VariableDeclarator',
17379                     id: {
17380                         type: 'Identifier',
17381                         name: 'x',
17382                         range: [9, 10],
17383                         loc: {
17384                             start: { line: 1, column: 9 },
17385                             end: { line: 1, column: 10 }
17386                         }
17387                     },
17388                     init: null,
17389                     range: [9, 10],
17390                     loc: {
17391                         start: { line: 1, column: 9 },
17392                         end: { line: 1, column: 10 }
17393                     }
17394                 }],
17395                 kind: 'let',
17396                 range: [5, 10],
17397                 loc: {
17398                     start: { line: 1, column: 5 },
17399                     end: { line: 1, column: 10 }
17400                 }
17401             },
17402             right: {
17403                 type: 'Identifier',
17404                 name: 'list',
17405                 range: [14, 18],
17406                 loc: {
17407                     start: { line: 1, column: 14 },
17408                     end: { line: 1, column: 18 }
17409                 }
17410             },
17411             body: {
17412                 type: 'ExpressionStatement',
17413                 expression: {
17414                     type: 'CallExpression',
17415                     callee: {
17416                         type: 'Identifier',
17417                         name: 'process',
17418                         range: [20, 27],
17419                         loc: {
17420                             start: { line: 1, column: 20 },
17421                             end: { line: 1, column: 27 }
17422                         }
17423                     },
17424                     'arguments': [{
17425                         type: 'Identifier',
17426                         name: 'x',
17427                         range: [28, 29],
17428                         loc: {
17429                             start: { line: 1, column: 28 },
17430                             end: { line: 1, column: 29 }
17431                         }
17432                     }],
17433                     range: [20, 30],
17434                     loc: {
17435                         start: { line: 1, column: 20 },
17436                         end: { line: 1, column: 30 }
17437                     }
17438                 },
17439                 range: [20, 31],
17440                 loc: {
17441                     start: { line: 1, column: 20 },
17442                     end: { line: 1, column: 31 }
17443                 }
17444             },
17445             each: false,
17446             range: [0, 31],
17447             loc: {
17448                 start: { line: 1, column: 0 },
17449                 end: { line: 1, column: 31 }
17450             }
17451         },
17452
17453         'for (var x = y = z in q);': {
17454             type: 'ForInStatement',
17455             left: {
17456                 type: 'VariableDeclaration',
17457                 declarations: [{
17458                     type: 'VariableDeclarator',
17459                     id: {
17460                         type: 'Identifier',
17461                         name: 'x',
17462                         range: [9, 10],
17463                         loc: {
17464                             start: { line: 1, column: 9 },
17465                             end: { line: 1, column: 10 }
17466                         }
17467                     },
17468                     init: {
17469                         type: 'AssignmentExpression',
17470                         operator: '=',
17471                         left: {
17472                             type: 'Identifier',
17473                             name: 'y',
17474                             range: [13, 14],
17475                             loc: {
17476                                 start: { line: 1, column: 13 },
17477                                 end: { line: 1, column: 14 }
17478                             }
17479                         },
17480                         right: {
17481                             type: 'Identifier',
17482                             name: 'z',
17483                             range: [17, 18],
17484                             loc: {
17485                                 start: { line: 1, column: 17 },
17486                                 end: { line: 1, column: 18 }
17487                             }
17488                         },
17489                         range: [13, 18],
17490                         loc: {
17491                             start: { line: 1, column: 13 },
17492                             end: { line: 1, column: 18 }
17493                         }
17494                     },
17495                     range: [9, 18],
17496                     loc: {
17497                         start: { line: 1, column: 9 },
17498                         end: { line: 1, column: 18 }
17499                     }
17500                 }],
17501                 kind: 'var',
17502                 range: [5, 18],
17503                 loc: {
17504                     start: { line: 1, column: 5 },
17505                     end: { line: 1, column: 18 }
17506                 }
17507             },
17508             right: {
17509                 type: 'Identifier',
17510                 name: 'q',
17511                 range: [22, 23],
17512                 loc: {
17513                     start: { line: 1, column: 22 },
17514                     end: { line: 1, column: 23 }
17515                 }
17516             },
17517             body: {
17518                 type: 'EmptyStatement',
17519                 range: [24, 25],
17520                 loc: {
17521                     start: { line: 1, column: 24 },
17522                     end: { line: 1, column: 25 }
17523                 }
17524             },
17525             each: false,
17526             range: [0, 25],
17527             loc: {
17528                 start: { line: 1, column: 0 },
17529                 end: { line: 1, column: 25 }
17530             }
17531         },
17532
17533         'for (var a = b = c = (d in e) in z);': {
17534             type: 'ForInStatement',
17535             left: {
17536                 type: 'VariableDeclaration',
17537                 declarations: [{
17538                     type: 'VariableDeclarator',
17539                     id: {
17540                         type: 'Identifier',
17541                         name: 'a',
17542                         range: [9, 10],
17543                         loc: {
17544                             start: { line: 1, column: 9 },
17545                             end: { line: 1, column: 10 }
17546                         }
17547                     },
17548                     init: {
17549                         type: 'AssignmentExpression',
17550                         operator: '=',
17551                         left: {
17552                             type: 'Identifier',
17553                             name: 'b',
17554                             range: [13, 14],
17555                             loc: {
17556                                 start: { line: 1, column: 13 },
17557                                 end: { line: 1, column: 14 }
17558                             }
17559                         },
17560                         right: {
17561                             type: 'AssignmentExpression',
17562                             operator: '=',
17563                             left: {
17564                                 type: 'Identifier',
17565                                 name: 'c',
17566                                 range: [17, 18],
17567                                 loc: {
17568                                     start: { line: 1, column: 17 },
17569                                     end: { line: 1, column: 18 }
17570                                 }
17571                             },
17572                             right: {
17573                                 type: 'BinaryExpression',
17574                                 operator: 'in',
17575                                 left: {
17576                                     type: 'Identifier',
17577                                     name: 'd',
17578                                     range: [22, 23],
17579                                     loc: {
17580                                         start: { line: 1, column: 22 },
17581                                         end: { line: 1, column: 23 }
17582                                     }
17583                                 },
17584                                 right: {
17585                                     type: 'Identifier',
17586                                     name: 'e',
17587                                     range: [27, 28],
17588                                     loc: {
17589                                         start: { line: 1, column: 27 },
17590                                         end: { line: 1, column: 28 }
17591                                     }
17592                                 },
17593                                 range: [22, 28],
17594                                 loc: {
17595                                     start: { line: 1, column: 22 },
17596                                     end: { line: 1, column: 28 }
17597                                 }
17598                             },
17599                             range: [17, 29],
17600                             loc: {
17601                                 start: { line: 1, column: 17 },
17602                                 end: { line: 1, column: 29 }
17603                             }
17604                         },
17605                         range: [13, 29],
17606                         loc: {
17607                             start: { line: 1, column: 13 },
17608                             end: { line: 1, column: 29 }
17609                         }
17610                     },
17611                     range: [9, 29],
17612                     loc: {
17613                         start: { line: 1, column: 9 },
17614                         end: { line: 1, column: 29 }
17615                     }
17616                 }],
17617                 kind: 'var',
17618                 range: [5, 29],
17619                 loc: {
17620                     start: { line: 1, column: 5 },
17621                     end: { line: 1, column: 29 }
17622                 }
17623             },
17624             right: {
17625                 type: 'Identifier',
17626                 name: 'z',
17627                 range: [33, 34],
17628                 loc: {
17629                     start: { line: 1, column: 33 },
17630                     end: { line: 1, column: 34 }
17631                 }
17632             },
17633             body: {
17634                 type: 'EmptyStatement',
17635                 range: [35, 36],
17636                 loc: {
17637                     start: { line: 1, column: 35 },
17638                     end: { line: 1, column: 36 }
17639                 }
17640             },
17641             each: false,
17642             range: [0, 36],
17643             loc: {
17644                 start: { line: 1, column: 0 },
17645                 end: { line: 1, column: 36 }
17646             }
17647         },
17648
17649         'for (var i = function() { return 10 in [] } in list) process(x);': {
17650             type: 'ForInStatement',
17651             left: {
17652                 type: 'VariableDeclaration',
17653                 declarations: [{
17654                     type: 'VariableDeclarator',
17655                     id: {
17656                         type: 'Identifier',
17657                         name: 'i',
17658                         range: [9, 10],
17659                         loc: {
17660                             start: { line: 1, column: 9 },
17661                             end: { line: 1, column: 10 }
17662                         }
17663                     },
17664                     init: {
17665                         type: 'FunctionExpression',
17666                         id: null,
17667                         params: [],
17668                         defaults: [],
17669                         body: {
17670                             type: 'BlockStatement',
17671                             body: [{
17672                                 type: 'ReturnStatement',
17673                                 argument: {
17674                                     type: 'BinaryExpression',
17675                                     operator: 'in',
17676                                     left: {
17677                                         type: 'Literal',
17678                                         value: 10,
17679                                         raw: '10',
17680                                         range: [33, 35],
17681                                         loc: {
17682                                             start: { line: 1, column: 33 },
17683                                             end: { line: 1, column: 35 }
17684                                         }
17685                                     },
17686                                     right: {
17687                                         type: 'ArrayExpression',
17688                                         elements: [],
17689                                         range: [39, 41],
17690                                         loc: {
17691                                             start: { line: 1, column: 39 },
17692                                             end: { line: 1, column: 41 }
17693                                         }
17694                                     },
17695                                     range: [33, 41],
17696                                     loc: {
17697                                         start: { line: 1, column: 33 },
17698                                         end: { line: 1, column: 41 }
17699                                     }
17700                                 },
17701                                 range: [26, 42],
17702                                 loc: {
17703                                     start: { line: 1, column: 26 },
17704                                     end: { line: 1, column: 42 }
17705                                 }
17706                             }],
17707                             range: [24, 43],
17708                             loc: {
17709                                 start: { line: 1, column: 24 },
17710                                 end: { line: 1, column: 43 }
17711                             }
17712                         },
17713                         rest: null,
17714                         generator: false,
17715                         expression: false,
17716                         range: [13, 43],
17717                         loc: {
17718                             start: { line: 1, column: 13 },
17719                             end: { line: 1, column: 43 }
17720                         }
17721                     },
17722                     range: [9, 43],
17723                     loc: {
17724                         start: { line: 1, column: 9 },
17725                         end: { line: 1, column: 43 }
17726                     }
17727                 }],
17728                 kind: 'var',
17729                 range: [5, 43],
17730                 loc: {
17731                     start: { line: 1, column: 5 },
17732                     end: { line: 1, column: 43 }
17733                 }
17734             },
17735             right: {
17736                 type: 'Identifier',
17737                 name: 'list',
17738                 range: [47, 51],
17739                 loc: {
17740                     start: { line: 1, column: 47 },
17741                     end: { line: 1, column: 51 }
17742                 }
17743             },
17744             body: {
17745                 type: 'ExpressionStatement',
17746                 expression: {
17747                     type: 'CallExpression',
17748                     callee: {
17749                         type: 'Identifier',
17750                         name: 'process',
17751                         range: [53, 60],
17752                         loc: {
17753                             start: { line: 1, column: 53 },
17754                             end: { line: 1, column: 60 }
17755                         }
17756                     },
17757                     'arguments': [{
17758                         type: 'Identifier',
17759                         name: 'x',
17760                         range: [61, 62],
17761                         loc: {
17762                             start: { line: 1, column: 61 },
17763                             end: { line: 1, column: 62 }
17764                         }
17765                     }],
17766                     range: [53, 63],
17767                     loc: {
17768                         start: { line: 1, column: 53 },
17769                         end: { line: 1, column: 63 }
17770                     }
17771                 },
17772                 range: [53, 64],
17773                 loc: {
17774                     start: { line: 1, column: 53 },
17775                     end: { line: 1, column: 64 }
17776                 }
17777             },
17778             each: false,
17779             range: [0, 64],
17780             loc: {
17781                 start: { line: 1, column: 0 },
17782                 end: { line: 1, column: 64 }
17783             }
17784         },
17785
17786         'for (a[b in c] in d);': {
17787             type: 'ForInStatement',
17788             left: {
17789                 type: 'MemberExpression',
17790                 computed: true,
17791                 object: {
17792                     type: 'Identifier',
17793                     name: 'a',
17794                     range: [5, 6],
17795                     loc: {
17796                         start: { line: 1, column: 5 },
17797                         end: { line: 1, column: 6 }
17798                     }
17799                 },
17800                 property: {
17801                     type: 'BinaryExpression',
17802                     operator: 'in',
17803                     left: {
17804                         type: 'Identifier',
17805                         name: 'b',
17806                         range: [7, 8],
17807                         loc: {
17808                             start: { line: 1, column: 7 },
17809                             end: { line: 1, column: 8 }
17810                         }
17811                     },
17812                     right: {
17813                         type: 'Identifier',
17814                         name: 'c',
17815                         range: [12, 13],
17816                         loc: {
17817                             start: { line: 1, column: 12 },
17818                             end: { line: 1, column: 13 }
17819                         }
17820                     },
17821                     range: [7, 13],
17822                     loc: {
17823                         start: { line: 1, column: 7 },
17824                         end: { line: 1, column: 13 }
17825                     }
17826                 },
17827                 range: [5, 14],
17828                 loc: {
17829                     start: { line: 1, column: 5 },
17830                     end: { line: 1, column: 14 }
17831                 }
17832             },
17833             right: {
17834                 type: 'Identifier',
17835                 name: 'd',
17836                 range: [18, 19],
17837                 loc: {
17838                     start: { line: 1, column: 18 },
17839                     end: { line: 1, column: 19 }
17840                 }
17841             },
17842             body: {
17843                 type: 'EmptyStatement',
17844                 range: [20, 21],
17845                 loc: {
17846                     start: { line: 1, column: 20 },
17847                     end: { line: 1, column: 21 }
17848                 }
17849             },
17850             each: false,
17851             range: [0, 21],
17852             loc: {
17853                 start: { line: 1, column: 0 },
17854                 end: { line: 1, column: 21 }
17855             }
17856         },
17857
17858         'for (a(b in c)[0] in d);': {
17859             type: 'ForInStatement',
17860             left: {
17861                 type: 'MemberExpression',
17862                 computed: true,
17863                 object: {
17864                     type: 'CallExpression',
17865                     callee: {
17866                         type: 'Identifier',
17867                         name: 'a',
17868                         range: [5, 6],
17869                         loc: {
17870                             start: { line: 1, column: 5 },
17871                             end: { line: 1, column: 6 }
17872                         }
17873                     },
17874                     arguments: [{
17875                         type: 'BinaryExpression',
17876                         operator: 'in',
17877                         left: {
17878                             type: 'Identifier',
17879                             name: 'b',
17880                             range: [7, 8],
17881                             loc: {
17882                                 start: { line: 1, column: 7 },
17883                                 end: { line: 1, column: 8 }
17884                             }
17885                         },
17886                         right: {
17887                             type: 'Identifier',
17888                             name: 'c',
17889                             range: [12, 13],
17890                             loc: {
17891                                 start: { line: 1, column: 12 },
17892                                 end: { line: 1, column: 13 }
17893                             }
17894                         },
17895                         range: [7, 13],
17896                         loc: {
17897                             start: { line: 1, column: 7 },
17898                             end: { line: 1, column: 13 }
17899                         }
17900                     }],
17901                     range: [5, 14],
17902                     loc: {
17903                         start: { line: 1, column: 5 },
17904                         end: { line: 1, column: 14 }
17905                     }
17906                 },
17907                 property: {
17908                     type: 'Literal',
17909                     value: 0,
17910                     raw: '0',
17911                     range: [15, 16],
17912                     loc: {
17913                         start: { line: 1, column: 15 },
17914                         end: { line: 1, column: 16 }
17915                     }
17916                 },
17917                 range: [5, 17],
17918                 loc: {
17919                     start: { line: 1, column: 5 },
17920                     end: { line: 1, column: 17 }
17921                 }
17922             },
17923             right: {
17924                 type: 'Identifier',
17925                 name: 'd',
17926                 range: [21, 22],
17927                 loc: {
17928                     start: { line: 1, column: 21 },
17929                     end: { line: 1, column: 22 }
17930                 }
17931             },
17932             body: {
17933                 type: 'EmptyStatement',
17934                 range: [23, 24],
17935                 loc: {
17936                     start: { line: 1, column: 23 },
17937                     end: { line: 1, column: 24 }
17938                 }
17939             },
17940             each: false,
17941             range: [0, 24],
17942             loc: {
17943                 start: { line: 1, column: 0 },
17944                 end: { line: 1, column: 24 }
17945             }
17946         },
17947
17948         'for (a.in in a);': {
17949             type: 'ForInStatement',
17950             left: {
17951                 type: 'MemberExpression',
17952                 computed: false,
17953                 object: {
17954                     type: 'Identifier',
17955                     name: 'a',
17956                     range: [5, 6],
17957                     loc: {
17958                         start: { line: 1, column: 5 },
17959                         end: { line: 1, column: 6 }
17960                     }
17961                 },
17962                 property: {
17963                     type: 'Identifier',
17964                     name: 'in',
17965                     range: [7, 9],
17966                     loc: {
17967                         start: { line: 1, column: 7 },
17968                         end: { line: 1, column: 9 }
17969                     }
17970                 },
17971                 range: [5, 9],
17972                 loc: {
17973                     start: { line: 1, column: 5 },
17974                     end: { line: 1, column: 9 }
17975                 }
17976             },
17977             right: {
17978                 type: 'Identifier',
17979                 name: 'a',
17980                 range: [13, 14],
17981                 loc: {
17982                     start: { line: 1, column: 13 },
17983                     end: { line: 1, column: 14 }
17984                 }
17985             },
17986             body: {
17987                 type: 'EmptyStatement',
17988                 range: [15, 16],
17989                 loc: {
17990                     start: { line: 1, column: 15 },
17991                     end: { line: 1, column: 16 }
17992                 }
17993             },
17994             each: false,
17995             range: [0, 16],
17996             loc: {
17997                 start: { line: 1, column: 0 },
17998                 end: { line: 1, column: 16 }
17999             }
18000         }
18001     },
18002
18003     'continue statement': {
18004
18005         'while (true) { continue; }': {
18006             type: 'WhileStatement',
18007             test: {
18008                 type: 'Literal',
18009                 value: true,
18010                 raw: 'true',
18011                 range: [7, 11],
18012                 loc: {
18013                     start: { line: 1, column: 7 },
18014                     end: { line: 1, column: 11 }
18015                 }
18016             },
18017             body: {
18018                 type: 'BlockStatement',
18019                 body: [
18020                     {
18021                         type: 'ContinueStatement',
18022                         label: null,
18023                         range: [15, 24],
18024                         loc: {
18025                             start: { line: 1, column: 15 },
18026                             end: { line: 1, column: 24 }
18027                         }
18028                     }
18029                 ],
18030                 range: [13, 26],
18031                 loc: {
18032                     start: { line: 1, column: 13 },
18033                     end: { line: 1, column: 26 }
18034                 }
18035             },
18036             range: [0, 26],
18037             loc: {
18038                 start: { line: 1, column: 0 },
18039                 end: { line: 1, column: 26 }
18040             }
18041         },
18042
18043         'while (true) { continue }': {
18044             type: 'WhileStatement',
18045             test: {
18046                 type: 'Literal',
18047                 value: true,
18048                 raw: 'true',
18049                 range: [7, 11],
18050                 loc: {
18051                     start: { line: 1, column: 7 },
18052                     end: { line: 1, column: 11 }
18053                 }
18054             },
18055             body: {
18056                 type: 'BlockStatement',
18057                 body: [
18058                     {
18059                         type: 'ContinueStatement',
18060                         label: null,
18061                         range: [15, 24],
18062                         loc: {
18063                             start: { line: 1, column: 15 },
18064                             end: { line: 1, column: 24 }
18065                         }
18066                     }
18067                 ],
18068                 range: [13, 25],
18069                 loc: {
18070                     start: { line: 1, column: 13 },
18071                     end: { line: 1, column: 25 }
18072                 }
18073             },
18074             range: [0, 25],
18075             loc: {
18076                 start: { line: 1, column: 0 },
18077                 end: { line: 1, column: 25 }
18078             }
18079         },
18080
18081         'done: while (true) { continue done }': {
18082             type: 'LabeledStatement',
18083             label: {
18084                 type: 'Identifier',
18085                 name: 'done',
18086                 range: [0, 4],
18087                 loc: {
18088                     start: { line: 1, column: 0 },
18089                     end: { line: 1, column: 4 }
18090                 }
18091             },
18092             body: {
18093                 type: 'WhileStatement',
18094                 test: {
18095                     type: 'Literal',
18096                     value: true,
18097                     raw: 'true',
18098                     range: [13, 17],
18099                     loc: {
18100                         start: { line: 1, column: 13 },
18101                         end: { line: 1, column: 17 }
18102                     }
18103                 },
18104                 body: {
18105                     type: 'BlockStatement',
18106                     body: [
18107                         {
18108                             type: 'ContinueStatement',
18109                             label: {
18110                                 type: 'Identifier',
18111                                 name: 'done',
18112                                 range: [30, 34],
18113                                 loc: {
18114                                     start: { line: 1, column: 30 },
18115                                     end: { line: 1, column: 34 }
18116                                 }
18117                             },
18118                             range: [21, 35],
18119                             loc: {
18120                                 start: { line: 1, column: 21 },
18121                                 end: { line: 1, column: 35 }
18122                             }
18123                         }
18124                     ],
18125                     range: [19, 36],
18126                     loc: {
18127                         start: { line: 1, column: 19 },
18128                         end: { line: 1, column: 36 }
18129                     }
18130                 },
18131                 range: [6, 36],
18132                 loc: {
18133                     start: { line: 1, column: 6 },
18134                     end: { line: 1, column: 36 }
18135                 }
18136             },
18137             range: [0, 36],
18138             loc: {
18139                 start: { line: 1, column: 0 },
18140                 end: { line: 1, column: 36 }
18141             }
18142         },
18143
18144         'done: while (true) { continue done; }': {
18145             type: 'LabeledStatement',
18146             label: {
18147                 type: 'Identifier',
18148                 name: 'done',
18149                 range: [0, 4],
18150                 loc: {
18151                     start: { line: 1, column: 0 },
18152                     end: { line: 1, column: 4 }
18153                 }
18154             },
18155             body: {
18156                 type: 'WhileStatement',
18157                 test: {
18158                     type: 'Literal',
18159                     value: true,
18160                     raw: 'true',
18161                     range: [13, 17],
18162                     loc: {
18163                         start: { line: 1, column: 13 },
18164                         end: { line: 1, column: 17 }
18165                     }
18166                 },
18167                 body: {
18168                     type: 'BlockStatement',
18169                     body: [
18170                         {
18171                             type: 'ContinueStatement',
18172                             label: {
18173                                 type: 'Identifier',
18174                                 name: 'done',
18175                                 range: [30, 34],
18176                                 loc: {
18177                                     start: { line: 1, column: 30 },
18178                                     end: { line: 1, column: 34 }
18179                                 }
18180                             },
18181                             range: [21, 35],
18182                             loc: {
18183                                 start: { line: 1, column: 21 },
18184                                 end: { line: 1, column: 35 }
18185                             }
18186                         }
18187                     ],
18188                     range: [19, 37],
18189                     loc: {
18190                         start: { line: 1, column: 19 },
18191                         end: { line: 1, column: 37 }
18192                     }
18193                 },
18194                 range: [6, 37],
18195                 loc: {
18196                     start: { line: 1, column: 6 },
18197                     end: { line: 1, column: 37 }
18198                 }
18199             },
18200             range: [0, 37],
18201             loc: {
18202                 start: { line: 1, column: 0 },
18203                 end: { line: 1, column: 37 }
18204             }
18205         },
18206
18207         '__proto__: while (true) { continue __proto__; }': {
18208             type: 'LabeledStatement',
18209             label: {
18210                 type: 'Identifier',
18211                 name: '__proto__',
18212                 range: [0, 9],
18213                 loc: {
18214                     start: { line: 1, column: 0 },
18215                     end: { line: 1, column: 9 }
18216                 }
18217             },
18218             body: {
18219                 type: 'WhileStatement',
18220                 test: {
18221                     type: 'Literal',
18222                     value: true,
18223                     raw: 'true',
18224                     range: [18, 22],
18225                     loc: {
18226                         start: { line: 1, column: 18 },
18227                         end: { line: 1, column: 22 }
18228                     }
18229                 },
18230                 body: {
18231                     type: 'BlockStatement',
18232                     body: [{
18233                         type: 'ContinueStatement',
18234                         label: {
18235                             type: 'Identifier',
18236                             name: '__proto__',
18237                             range: [35, 44],
18238                             loc: {
18239                                 start: { line: 1, column: 35 },
18240                                 end: { line: 1, column: 44 }
18241                             }
18242                         },
18243                         range: [26, 45],
18244                         loc: {
18245                             start: { line: 1, column: 26 },
18246                             end: { line: 1, column: 45 }
18247                         }
18248                     }],
18249                     range: [24, 47],
18250                     loc: {
18251                         start: { line: 1, column: 24 },
18252                         end: { line: 1, column: 47 }
18253                     }
18254                 },
18255                 range: [11, 47],
18256                 loc: {
18257                     start: { line: 1, column: 11 },
18258                     end: { line: 1, column: 47 }
18259                 }
18260             },
18261             range: [0, 47],
18262             loc: {
18263                 start: { line: 1, column: 0 },
18264                 end: { line: 1, column: 47 }
18265             }
18266         }
18267
18268     },
18269
18270     'break statement': {
18271
18272         'while (true) { break }': {
18273             type: 'WhileStatement',
18274             test: {
18275                 type: 'Literal',
18276                 value: true,
18277                 raw: 'true',
18278                 range: [7, 11],
18279                 loc: {
18280                     start: { line: 1, column: 7 },
18281                     end: { line: 1, column: 11 }
18282                 }
18283             },
18284             body: {
18285                 type: 'BlockStatement',
18286                 body: [
18287                     {
18288                         type: 'BreakStatement',
18289                         label: null,
18290                         range: [15, 21],
18291                         loc: {
18292                             start: { line: 1, column: 15 },
18293                             end: { line: 1, column: 21 }
18294                         }
18295                     }
18296                 ],
18297                 range: [13, 22],
18298                 loc: {
18299                     start: { line: 1, column: 13 },
18300                     end: { line: 1, column: 22 }
18301                 }
18302             },
18303             range: [0, 22],
18304             loc: {
18305                 start: { line: 1, column: 0 },
18306                 end: { line: 1, column: 22 }
18307             }
18308         },
18309
18310         'done: while (true) { break done }': {
18311             type: 'LabeledStatement',
18312             label: {
18313                 type: 'Identifier',
18314                 name: 'done',
18315                 range: [0, 4],
18316                 loc: {
18317                     start: { line: 1, column: 0 },
18318                     end: { line: 1, column: 4 }
18319                 }
18320             },
18321             body: {
18322                 type: 'WhileStatement',
18323                 test: {
18324                     type: 'Literal',
18325                     value: true,
18326                     raw: 'true',
18327                     range: [13, 17],
18328                     loc: {
18329                         start: { line: 1, column: 13 },
18330                         end: { line: 1, column: 17 }
18331                     }
18332                 },
18333                 body: {
18334                     type: 'BlockStatement',
18335                     body: [
18336                         {
18337                             type: 'BreakStatement',
18338                             label: {
18339                                 type: 'Identifier',
18340                                 name: 'done',
18341                                 range: [27, 31],
18342                                 loc: {
18343                                     start: { line: 1, column: 27 },
18344                                     end: { line: 1, column: 31 }
18345                                 }
18346                             },
18347                             range: [21, 32],
18348                             loc: {
18349                                 start: { line: 1, column: 21 },
18350                                 end: { line: 1, column: 32 }
18351                             }
18352                         }
18353                     ],
18354                     range: [19, 33],
18355                     loc: {
18356                         start: { line: 1, column: 19 },
18357                         end: { line: 1, column: 33 }
18358                     }
18359                 },
18360                 range: [6, 33],
18361                 loc: {
18362                     start: { line: 1, column: 6 },
18363                     end: { line: 1, column: 33 }
18364                 }
18365             },
18366             range: [0, 33],
18367             loc: {
18368                 start: { line: 1, column: 0 },
18369                 end: { line: 1, column: 33 }
18370             }
18371         },
18372
18373         'done: while (true) { break done; }': {
18374             type: 'LabeledStatement',
18375             label: {
18376                 type: 'Identifier',
18377                 name: 'done',
18378                 range: [0, 4],
18379                 loc: {
18380                     start: { line: 1, column: 0 },
18381                     end: { line: 1, column: 4 }
18382                 }
18383             },
18384             body: {
18385                 type: 'WhileStatement',
18386                 test: {
18387                     type: 'Literal',
18388                     value: true,
18389                     raw: 'true',
18390                     range: [13, 17],
18391                     loc: {
18392                         start: { line: 1, column: 13 },
18393                         end: { line: 1, column: 17 }
18394                     }
18395                 },
18396                 body: {
18397                     type: 'BlockStatement',
18398                     body: [
18399                         {
18400                             type: 'BreakStatement',
18401                             label: {
18402                                 type: 'Identifier',
18403                                 name: 'done',
18404                                 range: [27, 31],
18405                                 loc: {
18406                                     start: { line: 1, column: 27 },
18407                                     end: { line: 1, column: 31 }
18408                                 }
18409                             },
18410                             range: [21, 32],
18411                             loc: {
18412                                 start: { line: 1, column: 21 },
18413                                 end: { line: 1, column: 32 }
18414                             }
18415                         }
18416                     ],
18417                     range: [19, 34],
18418                     loc: {
18419                         start: { line: 1, column: 19 },
18420                         end: { line: 1, column: 34 }
18421                     }
18422                 },
18423                 range: [6, 34],
18424                 loc: {
18425                     start: { line: 1, column: 6 },
18426                     end: { line: 1, column: 34 }
18427                 }
18428             },
18429             range: [0, 34],
18430             loc: {
18431                 start: { line: 1, column: 0 },
18432                 end: { line: 1, column: 34 }
18433             }
18434         },
18435
18436         '__proto__: while (true) { break __proto__; }': {
18437             type: 'LabeledStatement',
18438             label: {
18439                 type: 'Identifier',
18440                 name: '__proto__',
18441                 range: [0, 9],
18442                 loc: {
18443                     start: { line: 1, column: 0 },
18444                     end: { line: 1, column: 9 }
18445                 }
18446             },
18447             body: {
18448                 type: 'WhileStatement',
18449                 test: {
18450                     type: 'Literal',
18451                     value: true,
18452                     raw: 'true',
18453                     range: [18, 22],
18454                     loc: {
18455                         start: { line: 1, column: 18 },
18456                         end: { line: 1, column: 22 }
18457                     }
18458                 },
18459                 body: {
18460                     type: 'BlockStatement',
18461                     body: [{
18462                         type: 'BreakStatement',
18463                         label: {
18464                             type: 'Identifier',
18465                             name: '__proto__',
18466                             range: [32, 41],
18467                             loc: {
18468                                 start: { line: 1, column: 32 },
18469                                 end: { line: 1, column: 41 }
18470                             }
18471                         },
18472                         range: [26, 42],
18473                         loc: {
18474                             start: { line: 1, column: 26 },
18475                             end: { line: 1, column: 42 }
18476                         }
18477                     }],
18478                     range: [24, 44],
18479                     loc: {
18480                         start: { line: 1, column: 24 },
18481                         end: { line: 1, column: 44 }
18482                     }
18483                 },
18484                 range: [11, 44],
18485                 loc: {
18486                     start: { line: 1, column: 11 },
18487                     end: { line: 1, column: 44 }
18488                 }
18489             },
18490             range: [0, 44],
18491             loc: {
18492                 start: { line: 1, column: 0 },
18493                 end: { line: 1, column: 44 }
18494             }
18495         }
18496
18497     },
18498
18499     'return statement': {
18500
18501         '(function(){ return })': {
18502             type: 'ExpressionStatement',
18503             expression: {
18504                 type: 'FunctionExpression',
18505                 id: null,
18506                 params: [],
18507                 defaults: [],
18508                 body: {
18509                     type: 'BlockStatement',
18510                     body: [
18511                         {
18512                             type: 'ReturnStatement',
18513                             argument: null,
18514                             range: [13, 20],
18515                             loc: {
18516                                 start: { line: 1, column: 13 },
18517                                 end: { line: 1, column: 20 }
18518                             }
18519                         }
18520                     ],
18521                     range: [11, 21],
18522                     loc: {
18523                         start: { line: 1, column: 11 },
18524                         end: { line: 1, column: 21 }
18525                     }
18526                 },
18527                 rest: null,
18528                 generator: false,
18529                 expression: false,
18530                 range: [1, 21],
18531                 loc: {
18532                     start: { line: 1, column: 1 },
18533                     end: { line: 1, column: 21 }
18534                 }
18535             },
18536             range: [0, 22],
18537             loc: {
18538                 start: { line: 1, column: 0 },
18539                 end: { line: 1, column: 22 }
18540             }
18541         },
18542
18543         '(function(){ return; })': {
18544             type: 'ExpressionStatement',
18545             expression: {
18546                 type: 'FunctionExpression',
18547                 id: null,
18548                 params: [],
18549                 defaults: [],
18550                 body: {
18551                     type: 'BlockStatement',
18552                     body: [
18553                         {
18554                             type: 'ReturnStatement',
18555                             argument: null,
18556                             range: [13, 20],
18557                             loc: {
18558                                 start: { line: 1, column: 13 },
18559                                 end: { line: 1, column: 20 }
18560                             }
18561                         }
18562                     ],
18563                     range: [11, 22],
18564                     loc: {
18565                         start: { line: 1, column: 11 },
18566                         end: { line: 1, column: 22 }
18567                     }
18568                 },
18569                 rest: null,
18570                 generator: false,
18571                 expression: false,
18572                 range: [1, 22],
18573                 loc: {
18574                     start: { line: 1, column: 1 },
18575                     end: { line: 1, column: 22 }
18576                 }
18577             },
18578             range: [0, 23],
18579             loc: {
18580                 start: { line: 1, column: 0 },
18581                 end: { line: 1, column: 23 }
18582             }
18583         },
18584
18585         '(function(){ return x; })': {
18586             type: 'ExpressionStatement',
18587             expression: {
18588                 type: 'FunctionExpression',
18589                 id: null,
18590                 params: [],
18591                 defaults: [],
18592                 body: {
18593                     type: 'BlockStatement',
18594                     body: [
18595                         {
18596                             type: 'ReturnStatement',
18597                             argument: {
18598                                 type: 'Identifier',
18599                                 name: 'x',
18600                                 range: [20, 21],
18601                                 loc: {
18602                                     start: { line: 1, column: 20 },
18603                                     end: { line: 1, column: 21 }
18604                                 }
18605                             },
18606                             range: [13, 22],
18607                             loc: {
18608                                 start: { line: 1, column: 13 },
18609                                 end: { line: 1, column: 22 }
18610                             }
18611                         }
18612                     ],
18613                     range: [11, 24],
18614                     loc: {
18615                         start: { line: 1, column: 11 },
18616                         end: { line: 1, column: 24 }
18617                     }
18618                 },
18619                 rest: null,
18620                 generator: false,
18621                 expression: false,
18622                 range: [1, 24],
18623                 loc: {
18624                     start: { line: 1, column: 1 },
18625                     end: { line: 1, column: 24 }
18626                 }
18627             },
18628             range: [0, 25],
18629             loc: {
18630                 start: { line: 1, column: 0 },
18631                 end: { line: 1, column: 25 }
18632             }
18633         },
18634
18635         '(function(){ return x * y })': {
18636             type: 'ExpressionStatement',
18637             expression: {
18638                 type: 'FunctionExpression',
18639                 id: null,
18640                 params: [],
18641                 defaults: [],
18642                 body: {
18643                     type: 'BlockStatement',
18644                     body: [
18645                         {
18646                             type: 'ReturnStatement',
18647                             argument: {
18648                                 type: 'BinaryExpression',
18649                                 operator: '*',
18650                                 left: {
18651                                     type: 'Identifier',
18652                                     name: 'x',
18653                                     range: [20, 21],
18654                                     loc: {
18655                                         start: { line: 1, column: 20 },
18656                                         end: { line: 1, column: 21 }
18657                                     }
18658                                 },
18659                                 right: {
18660                                     type: 'Identifier',
18661                                     name: 'y',
18662                                     range: [24, 25],
18663                                     loc: {
18664                                         start: { line: 1, column: 24 },
18665                                         end: { line: 1, column: 25 }
18666                                     }
18667                                 },
18668                                 range: [20, 25],
18669                                 loc: {
18670                                     start: { line: 1, column: 20 },
18671                                     end: { line: 1, column: 25 }
18672                                 }
18673                             },
18674                             range: [13, 26],
18675                             loc: {
18676                                 start: { line: 1, column: 13 },
18677                                 end: { line: 1, column: 26 }
18678                             }
18679                         }
18680                     ],
18681                     range: [11, 27],
18682                     loc: {
18683                         start: { line: 1, column: 11 },
18684                         end: { line: 1, column: 27 }
18685                     }
18686                 },
18687                 rest: null,
18688                 generator: false,
18689                 expression: false,
18690                 range: [1, 27],
18691                 loc: {
18692                     start: { line: 1, column: 1 },
18693                     end: { line: 1, column: 27 }
18694                 }
18695             },
18696             range: [0, 28],
18697             loc: {
18698                 start: { line: 1, column: 0 },
18699                 end: { line: 1, column: 28 }
18700             }
18701         }
18702     },
18703
18704     'with statement': {
18705
18706         'with (x) foo = bar': {
18707             type: 'WithStatement',
18708             object: {
18709                 type: 'Identifier',
18710                 name: 'x',
18711                 range: [6, 7],
18712                 loc: {
18713                     start: { line: 1, column: 6 },
18714                     end: { line: 1, column: 7 }
18715                 }
18716             },
18717             body: {
18718                 type: 'ExpressionStatement',
18719                 expression: {
18720                     type: 'AssignmentExpression',
18721                     operator: '=',
18722                     left: {
18723                         type: 'Identifier',
18724                         name: 'foo',
18725                         range: [9, 12],
18726                         loc: {
18727                             start: { line: 1, column: 9 },
18728                             end: { line: 1, column: 12 }
18729                         }
18730                     },
18731                     right: {
18732                         type: 'Identifier',
18733                         name: 'bar',
18734                         range: [15, 18],
18735                         loc: {
18736                             start: { line: 1, column: 15 },
18737                             end: { line: 1, column: 18 }
18738                         }
18739                     },
18740                     range: [9, 18],
18741                     loc: {
18742                         start: { line: 1, column: 9 },
18743                         end: { line: 1, column: 18 }
18744                     }
18745                 },
18746                 range: [9, 18],
18747                 loc: {
18748                     start: { line: 1, column: 9 },
18749                     end: { line: 1, column: 18 }
18750                 }
18751             },
18752             range: [0, 18],
18753             loc: {
18754                 start: { line: 1, column: 0 },
18755                 end: { line: 1, column: 18 }
18756             }
18757         },
18758
18759         'with (x) foo = bar;': {
18760             type: 'WithStatement',
18761             object: {
18762                 type: 'Identifier',
18763                 name: 'x',
18764                 range: [6, 7],
18765                 loc: {
18766                     start: { line: 1, column: 6 },
18767                     end: { line: 1, column: 7 }
18768                 }
18769             },
18770             body: {
18771                 type: 'ExpressionStatement',
18772                 expression: {
18773                     type: 'AssignmentExpression',
18774                     operator: '=',
18775                     left: {
18776                         type: 'Identifier',
18777                         name: 'foo',
18778                         range: [9, 12],
18779                         loc: {
18780                             start: { line: 1, column: 9 },
18781                             end: { line: 1, column: 12 }
18782                         }
18783                     },
18784                     right: {
18785                         type: 'Identifier',
18786                         name: 'bar',
18787                         range: [15, 18],
18788                         loc: {
18789                             start: { line: 1, column: 15 },
18790                             end: { line: 1, column: 18 }
18791                         }
18792                     },
18793                     range: [9, 18],
18794                     loc: {
18795                         start: { line: 1, column: 9 },
18796                         end: { line: 1, column: 18 }
18797                     }
18798                 },
18799                 range: [9, 19],
18800                 loc: {
18801                     start: { line: 1, column: 9 },
18802                     end: { line: 1, column: 19 }
18803                 }
18804             },
18805             range: [0, 19],
18806             loc: {
18807                 start: { line: 1, column: 0 },
18808                 end: { line: 1, column: 19 }
18809             }
18810         },
18811
18812         'with (x) { foo = bar }': {
18813             type: 'WithStatement',
18814             object: {
18815                 type: 'Identifier',
18816                 name: 'x',
18817                 range: [6, 7],
18818                 loc: {
18819                     start: { line: 1, column: 6 },
18820                     end: { line: 1, column: 7 }
18821                 }
18822             },
18823             body: {
18824                 type: 'BlockStatement',
18825                 body: [{
18826                     type: 'ExpressionStatement',
18827                     expression: {
18828                         type: 'AssignmentExpression',
18829                         operator: '=',
18830                         left: {
18831                             type: 'Identifier',
18832                             name: 'foo',
18833                             range: [11, 14],
18834                             loc: {
18835                                 start: { line: 1, column: 11 },
18836                                 end: { line: 1, column: 14 }
18837                             }
18838                         },
18839                         right: {
18840                             type: 'Identifier',
18841                             name: 'bar',
18842                             range: [17, 20],
18843                             loc: {
18844                                 start: { line: 1, column: 17 },
18845                                 end: { line: 1, column: 20 }
18846                             }
18847                         },
18848                         range: [11, 20],
18849                         loc: {
18850                             start: { line: 1, column: 11 },
18851                             end: { line: 1, column: 20 }
18852                         }
18853                     },
18854                     range: [11, 21],
18855                     loc: {
18856                         start: { line: 1, column: 11 },
18857                         end: { line: 1, column: 21 }
18858                     }
18859                 }],
18860                 range: [9, 22],
18861                 loc: {
18862                     start: { line: 1, column: 9 },
18863                     end: { line: 1, column: 22 }
18864                 }
18865             },
18866             range: [0, 22],
18867             loc: {
18868                 start: { line: 1, column: 0 },
18869                 end: { line: 1, column: 22 }
18870             }
18871         }
18872
18873     },
18874
18875     'switch statement': {
18876
18877         'switch (x) {}': {
18878             type: 'SwitchStatement',
18879             discriminant: {
18880                 type: 'Identifier',
18881                 name: 'x',
18882                 range: [8, 9],
18883                 loc: {
18884                     start: { line: 1, column: 8 },
18885                     end: { line: 1, column: 9 }
18886                 }
18887             },
18888             cases:[],
18889             range: [0, 13],
18890             loc: {
18891                 start: { line: 1, column: 0 },
18892                 end: { line: 1, column: 13 }
18893             }
18894         },
18895
18896         'switch (answer) { case 42: hi(); break; }': {
18897             type: 'SwitchStatement',
18898             discriminant: {
18899                 type: 'Identifier',
18900                 name: 'answer',
18901                 range: [8, 14],
18902                 loc: {
18903                     start: { line: 1, column: 8 },
18904                     end: { line: 1, column: 14 }
18905                 }
18906             },
18907             cases: [{
18908                 type: 'SwitchCase',
18909                 test: {
18910                     type: 'Literal',
18911                     value: 42,
18912                     raw: '42',
18913                     range: [23, 25],
18914                     loc: {
18915                         start: { line: 1, column: 23 },
18916                         end: { line: 1, column: 25 }
18917                     }
18918                 },
18919                 consequent: [{
18920                     type: 'ExpressionStatement',
18921                     expression: {
18922                         type: 'CallExpression',
18923                         callee: {
18924                             type: 'Identifier',
18925                             name: 'hi',
18926                             range: [27, 29],
18927                             loc: {
18928                                 start: { line: 1, column: 27 },
18929                                 end: { line: 1, column: 29 }
18930                             }
18931                         },
18932                         'arguments': [],
18933                         range: [27, 31],
18934                         loc: {
18935                             start: { line: 1, column: 27 },
18936                             end: { line: 1, column: 31 }
18937                         }
18938                     },
18939                     range: [27, 32],
18940                     loc: {
18941                         start: { line: 1, column: 27 },
18942                         end: { line: 1, column: 32 }
18943                     }
18944                 }, {
18945                     type: 'BreakStatement',
18946                     label: null,
18947                     range: [33, 39],
18948                     loc: {
18949                         start: { line: 1, column: 33 },
18950                         end: { line: 1, column: 39 }
18951                     }
18952                 }],
18953                 range: [18, 39],
18954                 loc: {
18955                     start: { line: 1, column: 18 },
18956                     end: { line: 1, column: 39 }
18957                 }
18958             }],
18959             range: [0, 41],
18960             loc: {
18961                 start: { line: 1, column: 0 },
18962                 end: { line: 1, column: 41 }
18963             }
18964         },
18965
18966         'switch (answer) { case 42: hi(); break; default: break }': {
18967             type: 'SwitchStatement',
18968             discriminant: {
18969                 type: 'Identifier',
18970                 name: 'answer',
18971                 range: [8, 14],
18972                 loc: {
18973                     start: { line: 1, column: 8 },
18974                     end: { line: 1, column: 14 }
18975                 }
18976             },
18977             cases: [{
18978                 type: 'SwitchCase',
18979                 test: {
18980                     type: 'Literal',
18981                     value: 42,
18982                     raw: '42',
18983                     range: [23, 25],
18984                     loc: {
18985                         start: { line: 1, column: 23 },
18986                         end: { line: 1, column: 25 }
18987                     }
18988                 },
18989                 consequent: [{
18990                     type: 'ExpressionStatement',
18991                     expression: {
18992                         type: 'CallExpression',
18993                         callee: {
18994                             type: 'Identifier',
18995                             name: 'hi',
18996                             range: [27, 29],
18997                             loc: {
18998                                 start: { line: 1, column: 27 },
18999                                 end: { line: 1, column: 29 }
19000                             }
19001                         },
19002                         'arguments': [],
19003                         range: [27, 31],
19004                         loc: {
19005                             start: { line: 1, column: 27 },
19006                             end: { line: 1, column: 31 }
19007                         }
19008                     },
19009                     range: [27, 32],
19010                     loc: {
19011                         start: { line: 1, column: 27 },
19012                         end: { line: 1, column: 32 }
19013                     }
19014                 }, {
19015                     type: 'BreakStatement',
19016                     label: null,
19017                     range: [33, 39],
19018                     loc: {
19019                         start: { line: 1, column: 33 },
19020                         end: { line: 1, column: 39 }
19021                     }
19022                 }],
19023                 range: [18, 39],
19024                 loc: {
19025                     start: { line: 1, column: 18 },
19026                     end: { line: 1, column: 39 }
19027                 }
19028             }, {
19029                 type: 'SwitchCase',
19030                 test: null,
19031                 consequent: [{
19032                     type: 'BreakStatement',
19033                     label: null,
19034                     range: [49, 55],
19035                     loc: {
19036                         start: { line: 1, column: 49 },
19037                         end: { line: 1, column: 55 }
19038                     }
19039                 }],
19040                 range: [40, 55],
19041                 loc: {
19042                     start: { line: 1, column: 40 },
19043                     end: { line: 1, column: 55 }
19044                 }
19045             }],
19046             range: [0, 56],
19047             loc: {
19048                 start: { line: 1, column: 0 },
19049                 end: { line: 1, column: 56 }
19050             }
19051         }
19052
19053     },
19054
19055     'Labelled Statements': {
19056
19057         'start: for (;;) break start': {
19058             type: 'LabeledStatement',
19059             label: {
19060                 type: 'Identifier',
19061                 name: 'start',
19062                 range: [0, 5],
19063                 loc: {
19064                     start: { line: 1, column: 0 },
19065                     end: { line: 1, column: 5 }
19066                 }
19067             },
19068             body: {
19069                 type: 'ForStatement',
19070                 init: null,
19071                 test: null,
19072                 update: null,
19073                 body: {
19074                     type: 'BreakStatement',
19075                     label: {
19076                         type: 'Identifier',
19077                         name: 'start',
19078                         range: [22, 27],
19079                         loc: {
19080                             start: { line: 1, column: 22 },
19081                             end: { line: 1, column: 27 }
19082                         }
19083                     },
19084                     range: [16, 27],
19085                     loc: {
19086                         start: { line: 1, column: 16 },
19087                         end: { line: 1, column: 27 }
19088                     }
19089                 },
19090                 range: [7, 27],
19091                 loc: {
19092                     start: { line: 1, column: 7 },
19093                     end: { line: 1, column: 27 }
19094                 }
19095             },
19096             range: [0, 27],
19097             loc: {
19098                 start: { line: 1, column: 0 },
19099                 end: { line: 1, column: 27 }
19100             }
19101         },
19102
19103         'start: while (true) break start': {
19104             type: 'LabeledStatement',
19105             label: {
19106                 type: 'Identifier',
19107                 name: 'start',
19108                 range: [0, 5],
19109                 loc: {
19110                     start: { line: 1, column: 0 },
19111                     end: { line: 1, column: 5 }
19112                 }
19113             },
19114             body: {
19115                 type: 'WhileStatement',
19116                 test: {
19117                     type: 'Literal',
19118                     value: true,
19119                     raw: 'true',
19120                     range: [14, 18],
19121                     loc: {
19122                         start: { line: 1, column: 14 },
19123                         end: { line: 1, column: 18 }
19124                     }
19125                 },
19126                 body: {
19127                     type: 'BreakStatement',
19128                     label: {
19129                         type: 'Identifier',
19130                         name: 'start',
19131                         range: [26, 31],
19132                         loc: {
19133                             start: { line: 1, column: 26 },
19134                             end: { line: 1, column: 31 }
19135                         }
19136                     },
19137                     range: [20, 31],
19138                     loc: {
19139                         start: { line: 1, column: 20 },
19140                         end: { line: 1, column: 31 }
19141                     }
19142                 },
19143                 range: [7, 31],
19144                 loc: {
19145                     start: { line: 1, column: 7 },
19146                     end: { line: 1, column: 31 }
19147                 }
19148             },
19149             range: [0, 31],
19150             loc: {
19151                 start: { line: 1, column: 0 },
19152                 end: { line: 1, column: 31 }
19153             }
19154         },
19155
19156         '__proto__: test': {
19157             type: 'LabeledStatement',
19158             label: {
19159                 type: 'Identifier',
19160                 name: '__proto__',
19161                 range: [0, 9],
19162                 loc: {
19163                     start: { line: 1, column: 0 },
19164                     end: { line: 1, column: 9 }
19165                 }
19166             },
19167             body: {
19168                 type: 'ExpressionStatement',
19169                 expression: {
19170                     type: 'Identifier',
19171                     name: 'test',
19172                     range: [11, 15],
19173                     loc: {
19174                         start: { line: 1, column: 11 },
19175                         end: { line: 1, column: 15 }
19176                     }
19177                 },
19178                 range: [11, 15],
19179                 loc: {
19180                     start: { line: 1, column: 11 },
19181                     end: { line: 1, column: 15 }
19182                 }
19183             },
19184             range: [0, 15],
19185             loc: {
19186                 start: { line: 1, column: 0 },
19187                 end: { line: 1, column: 15 }
19188             }
19189         }
19190
19191     },
19192
19193     'throw statement': {
19194
19195         'throw x;': {
19196             type: 'ThrowStatement',
19197             argument: {
19198                 type: 'Identifier',
19199                 name: 'x',
19200                 range: [6, 7],
19201                 loc: {
19202                     start: { line: 1, column: 6 },
19203                     end: { line: 1, column: 7 }
19204                 }
19205             },
19206             range: [0, 8],
19207             loc: {
19208                 start: { line: 1, column: 0 },
19209                 end: { line: 1, column: 8 }
19210             }
19211         },
19212
19213         'throw x * y': {
19214             type: 'ThrowStatement',
19215             argument: {
19216                 type: 'BinaryExpression',
19217                 operator: '*',
19218                 left: {
19219                     type: 'Identifier',
19220                     name: 'x',
19221                     range: [6, 7],
19222                     loc: {
19223                         start: { line: 1, column: 6 },
19224                         end: { line: 1, column: 7 }
19225                     }
19226                 },
19227                 right: {
19228                     type: 'Identifier',
19229                     name: 'y',
19230                     range: [10, 11],
19231                     loc: {
19232                         start: { line: 1, column: 10 },
19233                         end: { line: 1, column: 11 }
19234                     }
19235                 },
19236                 range: [6, 11],
19237                 loc: {
19238                     start: { line: 1, column: 6 },
19239                     end: { line: 1, column: 11 }
19240                 }
19241             },
19242             range: [0, 11],
19243             loc: {
19244                 start: { line: 1, column: 0 },
19245                 end: { line: 1, column: 11 }
19246             }
19247         },
19248
19249         'throw { message: "Error" }': {
19250             type: 'ThrowStatement',
19251             argument: {
19252                 type: 'ObjectExpression',
19253                 properties: [{
19254                     type: 'Property',
19255                     key: {
19256                         type: 'Identifier',
19257                         name: 'message',
19258                         range: [8, 15],
19259                         loc: {
19260                             start: { line: 1, column: 8 },
19261                             end: { line: 1, column: 15 }
19262                         }
19263                     },
19264                     value: {
19265                         type: 'Literal',
19266                         value: 'Error',
19267                         raw: '"Error"',
19268                         range: [17, 24],
19269                         loc: {
19270                             start: { line: 1, column: 17 },
19271                             end: { line: 1, column: 24 }
19272                         }
19273                     },
19274                     kind: 'init',
19275                     method: false,
19276                     shorthand: false,
19277                     range: [8, 24],
19278                     loc: {
19279                         start: { line: 1, column: 8 },
19280                         end: { line: 1, column: 24 }
19281                     }
19282                 }],
19283                 range: [6, 26],
19284                 loc: {
19285                     start: { line: 1, column: 6 },
19286                     end: { line: 1, column: 26 }
19287                 }
19288             },
19289             range: [0, 26],
19290             loc: {
19291                 start: { line: 1, column: 0 },
19292                 end: { line: 1, column: 26 }
19293             }
19294         }
19295
19296     },
19297
19298     'try statement': {
19299
19300         'try { } catch (e) { }': {
19301             type: 'TryStatement',
19302             block: {
19303                 type: 'BlockStatement',
19304                 body: [],
19305                 range: [4, 7],
19306                 loc: {
19307                     start: { line: 1, column: 4 },
19308                     end: { line: 1, column: 7 }
19309                 }
19310             },
19311             guardedHandlers: [],
19312             handlers: [{
19313                 type: 'CatchClause',
19314                 param: {
19315                     type: 'Identifier',
19316                     name: 'e',
19317                     range: [15, 16],
19318                     loc: {
19319                         start: { line: 1, column: 15 },
19320                         end: { line: 1, column: 16 }
19321                     }
19322                 },
19323                 body: {
19324                     type: 'BlockStatement',
19325                     body: [],
19326                     range: [18, 21],
19327                     loc: {
19328                         start: { line: 1, column: 18 },
19329                         end: { line: 1, column: 21 }
19330                     }
19331                 },
19332                 range: [8, 21],
19333                 loc: {
19334                     start: { line: 1, column: 8 },
19335                     end: { line: 1, column: 21 }
19336                 }
19337             }],
19338             finalizer: null,
19339             range: [0, 21],
19340             loc: {
19341                 start: { line: 1, column: 0 },
19342                 end: { line: 1, column: 21 }
19343             }
19344         },
19345
19346         'try { } catch (eval) { }': {
19347             type: 'TryStatement',
19348             block: {
19349                 type: 'BlockStatement',
19350                 body: [],
19351                 range: [4, 7],
19352                 loc: {
19353                     start: { line: 1, column: 4 },
19354                     end: { line: 1, column: 7 }
19355                 }
19356             },
19357             guardedHandlers: [],
19358             handlers: [{
19359                 type: 'CatchClause',
19360                 param: {
19361                     type: 'Identifier',
19362                     name: 'eval',
19363                     range: [15, 19],
19364                     loc: {
19365                         start: { line: 1, column: 15 },
19366                         end: { line: 1, column: 19 }
19367                     }
19368                 },
19369                 body: {
19370                     type: 'BlockStatement',
19371                     body: [],
19372                     range: [21, 24],
19373                     loc: {
19374                         start: { line: 1, column: 21 },
19375                         end: { line: 1, column: 24 }
19376                     }
19377                 },
19378                 range: [8, 24],
19379                 loc: {
19380                     start: { line: 1, column: 8 },
19381                     end: { line: 1, column: 24 }
19382                 }
19383             }],
19384             finalizer: null,
19385             range: [0, 24],
19386             loc: {
19387                 start: { line: 1, column: 0 },
19388                 end: { line: 1, column: 24 }
19389             }
19390         },
19391
19392         'try { } catch (arguments) { }': {
19393             type: 'TryStatement',
19394             block: {
19395                 type: 'BlockStatement',
19396                 body: [],
19397                 range: [4, 7],
19398                 loc: {
19399                     start: { line: 1, column: 4 },
19400                     end: { line: 1, column: 7 }
19401                 }
19402             },
19403             guardedHandlers: [],
19404             handlers: [{
19405                 type: 'CatchClause',
19406                 param: {
19407                     type: 'Identifier',
19408                     name: 'arguments',
19409                     range: [15, 24],
19410                     loc: {
19411                         start: { line: 1, column: 15 },
19412                         end: { line: 1, column: 24 }
19413                     }
19414                 },
19415                 body: {
19416                     type: 'BlockStatement',
19417                     body: [],
19418                     range: [26, 29],
19419                     loc: {
19420                         start: { line: 1, column: 26 },
19421                         end: { line: 1, column: 29 }
19422                     }
19423                 },
19424                 range: [8, 29],
19425                 loc: {
19426                     start: { line: 1, column: 8 },
19427                     end: { line: 1, column: 29 }
19428                 }
19429             }],
19430             finalizer: null,
19431             range: [0, 29],
19432             loc: {
19433                 start: { line: 1, column: 0 },
19434                 end: { line: 1, column: 29 }
19435             }
19436         },
19437
19438         'try { } catch (e) { say(e) }': {
19439             type: 'TryStatement',
19440             block: {
19441                 type: 'BlockStatement',
19442                 body: [],
19443                 range: [4, 7],
19444                 loc: {
19445                     start: { line: 1, column: 4 },
19446                     end: { line: 1, column: 7 }
19447                 }
19448             },
19449             guardedHandlers: [],
19450             handlers: [{
19451                 type: 'CatchClause',
19452                 param: {
19453                     type: 'Identifier',
19454                     name: 'e',
19455                     range: [15, 16],
19456                     loc: {
19457                         start: { line: 1, column: 15 },
19458                         end: { line: 1, column: 16 }
19459                     }
19460                 },
19461                 body: {
19462                     type: 'BlockStatement',
19463                     body: [{
19464                         type: 'ExpressionStatement',
19465                         expression: {
19466                             type: 'CallExpression',
19467                             callee: {
19468                                 type: 'Identifier',
19469                                 name: 'say',
19470                                 range: [20, 23],
19471                                 loc: {
19472                                     start: { line: 1, column: 20 },
19473                                     end: { line: 1, column: 23 }
19474                                 }
19475                             },
19476                             'arguments': [{
19477                                 type: 'Identifier',
19478                                 name: 'e',
19479                                 range: [24, 25],
19480                                 loc: {
19481                                     start: { line: 1, column: 24 },
19482                                     end: { line: 1, column: 25 }
19483                                 }
19484                             }],
19485                             range: [20, 26],
19486                             loc: {
19487                                 start: { line: 1, column: 20 },
19488                                 end: { line: 1, column: 26 }
19489                             }
19490                         },
19491                         range: [20, 27],
19492                         loc: {
19493                             start: { line: 1, column: 20 },
19494                             end: { line: 1, column: 27 }
19495                         }
19496                     }],
19497                     range: [18, 28],
19498                     loc: {
19499                         start: { line: 1, column: 18 },
19500                         end: { line: 1, column: 28 }
19501                     }
19502                 },
19503                 range: [8, 28],
19504                 loc: {
19505                     start: { line: 1, column: 8 },
19506                     end: { line: 1, column: 28 }
19507                 }
19508             }],
19509             finalizer: null,
19510             range: [0, 28],
19511             loc: {
19512                 start: { line: 1, column: 0 },
19513                 end: { line: 1, column: 28 }
19514             }
19515         },
19516
19517         'try { } finally { cleanup(stuff) }': {
19518             type: 'TryStatement',
19519             block: {
19520                 type: 'BlockStatement',
19521                 body: [],
19522                 range: [4, 7],
19523                 loc: {
19524                     start: { line: 1, column: 4 },
19525                     end: { line: 1, column: 7 }
19526                 }
19527             },
19528             guardedHandlers: [],
19529             handlers: [],
19530             finalizer: {
19531                 type: 'BlockStatement',
19532                 body: [{
19533                     type: 'ExpressionStatement',
19534                     expression: {
19535                         type: 'CallExpression',
19536                         callee: {
19537                             type: 'Identifier',
19538                             name: 'cleanup',
19539                             range: [18, 25],
19540                             loc: {
19541                                 start: { line: 1, column: 18 },
19542                                 end: { line: 1, column: 25 }
19543                             }
19544                         },
19545                         'arguments': [{
19546                             type: 'Identifier',
19547                             name: 'stuff',
19548                             range: [26, 31],
19549                             loc: {
19550                                 start: { line: 1, column: 26 },
19551                                 end: { line: 1, column: 31 }
19552                             }
19553                         }],
19554                         range: [18, 32],
19555                         loc: {
19556                             start: { line: 1, column: 18 },
19557                             end: { line: 1, column: 32 }
19558                         }
19559                     },
19560                     range: [18, 33],
19561                     loc: {
19562                         start: { line: 1, column: 18 },
19563                         end: { line: 1, column: 33 }
19564                     }
19565                 }],
19566                 range: [16, 34],
19567                 loc: {
19568                     start: { line: 1, column: 16 },
19569                     end: { line: 1, column: 34 }
19570                 }
19571             },
19572             range: [0, 34],
19573             loc: {
19574                 start: { line: 1, column: 0 },
19575                 end: { line: 1, column: 34 }
19576             }
19577         },
19578
19579         'try { doThat(); } catch (e) { say(e) }': {
19580             type: 'TryStatement',
19581             block: {
19582                 type: 'BlockStatement',
19583                 body: [{
19584                     type: 'ExpressionStatement',
19585                     expression: {
19586                         type: 'CallExpression',
19587                         callee: {
19588                             type: 'Identifier',
19589                             name: 'doThat',
19590                             range: [6, 12],
19591                             loc: {
19592                                 start: { line: 1, column: 6 },
19593                                 end: { line: 1, column: 12 }
19594                             }
19595                         },
19596                         'arguments': [],
19597                         range: [6, 14],
19598                         loc: {
19599                             start: { line: 1, column: 6 },
19600                             end: { line: 1, column: 14 }
19601                         }
19602                     },
19603                     range: [6, 15],
19604                     loc: {
19605                         start: { line: 1, column: 6 },
19606                         end: { line: 1, column: 15 }
19607                     }
19608                 }],
19609                 range: [4, 17],
19610                 loc: {
19611                     start: { line: 1, column: 4 },
19612                     end: { line: 1, column: 17 }
19613                 }
19614             },
19615             guardedHandlers: [],
19616             handlers: [{
19617                 type: 'CatchClause',
19618                 param: {
19619                     type: 'Identifier',
19620                     name: 'e',
19621                     range: [25, 26],
19622                     loc: {
19623                         start: { line: 1, column: 25 },
19624                         end: { line: 1, column: 26 }
19625                     }
19626                 },
19627                 body: {
19628                     type: 'BlockStatement',
19629                     body: [{
19630                         type: 'ExpressionStatement',
19631                         expression: {
19632                             type: 'CallExpression',
19633                             callee: {
19634                                 type: 'Identifier',
19635                                 name: 'say',
19636                                 range: [30, 33],
19637                                 loc: {
19638                                     start: { line: 1, column: 30 },
19639                                     end: { line: 1, column: 33 }
19640                                 }
19641                             },
19642                             'arguments': [{
19643                                 type: 'Identifier',
19644                                 name: 'e',
19645                                 range: [34, 35],
19646                                 loc: {
19647                                     start: { line: 1, column: 34 },
19648                                     end: { line: 1, column: 35 }
19649                                 }
19650                             }],
19651                             range: [30, 36],
19652                             loc: {
19653                                 start: { line: 1, column: 30 },
19654                                 end: { line: 1, column: 36 }
19655                             }
19656                         },
19657                         range: [30, 37],
19658                         loc: {
19659                             start: { line: 1, column: 30 },
19660                             end: { line: 1, column: 37 }
19661                         }
19662                     }],
19663                     range: [28, 38],
19664                     loc: {
19665                         start: { line: 1, column: 28 },
19666                         end: { line: 1, column: 38 }
19667                     }
19668                 },
19669                 range: [18, 38],
19670                 loc: {
19671                     start: { line: 1, column: 18 },
19672                     end: { line: 1, column: 38 }
19673                 }
19674             }],
19675             finalizer: null,
19676             range: [0, 38],
19677             loc: {
19678                 start: { line: 1, column: 0 },
19679                 end: { line: 1, column: 38 }
19680             }
19681         },
19682
19683         'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': {
19684             type: 'TryStatement',
19685             block: {
19686                 type: 'BlockStatement',
19687                 body: [{
19688                     type: 'ExpressionStatement',
19689                     expression: {
19690                         type: 'CallExpression',
19691                         callee: {
19692                             type: 'Identifier',
19693                             name: 'doThat',
19694                             range: [6, 12],
19695                             loc: {
19696                                 start: { line: 1, column: 6 },
19697                                 end: { line: 1, column: 12 }
19698                             }
19699                         },
19700                         'arguments': [],
19701                         range: [6, 14],
19702                         loc: {
19703                             start: { line: 1, column: 6 },
19704                             end: { line: 1, column: 14 }
19705                         }
19706                     },
19707                     range: [6, 15],
19708                     loc: {
19709                         start: { line: 1, column: 6 },
19710                         end: { line: 1, column: 15 }
19711                     }
19712                 }],
19713                 range: [4, 17],
19714                 loc: {
19715                     start: { line: 1, column: 4 },
19716                     end: { line: 1, column: 17 }
19717                 }
19718             },
19719             guardedHandlers: [],
19720             handlers: [{
19721                 type: 'CatchClause',
19722                 param: {
19723                     type: 'Identifier',
19724                     name: 'e',
19725                     range: [25, 26],
19726                     loc: {
19727                         start: { line: 1, column: 25 },
19728                         end: { line: 1, column: 26 }
19729                     }
19730                 },
19731                 body: {
19732                     type: 'BlockStatement',
19733                     body: [{
19734                         type: 'ExpressionStatement',
19735                         expression: {
19736                             type: 'CallExpression',
19737                             callee: {
19738                                 type: 'Identifier',
19739                                 name: 'say',
19740                                 range: [30, 33],
19741                                 loc: {
19742                                     start: { line: 1, column: 30 },
19743                                     end: { line: 1, column: 33 }
19744                                 }
19745                             },
19746                             'arguments': [{
19747                                 type: 'Identifier',
19748                                 name: 'e',
19749                                 range: [34, 35],
19750                                 loc: {
19751                                     start: { line: 1, column: 34 },
19752                                     end: { line: 1, column: 35 }
19753                                 }
19754                             }],
19755                             range: [30, 36],
19756                             loc: {
19757                                 start: { line: 1, column: 30 },
19758                                 end: { line: 1, column: 36 }
19759                             }
19760                         },
19761                         range: [30, 37],
19762                         loc: {
19763                             start: { line: 1, column: 30 },
19764                             end: { line: 1, column: 37 }
19765                         }
19766                     }],
19767                     range: [28, 38],
19768                     loc: {
19769                         start: { line: 1, column: 28 },
19770                         end: { line: 1, column: 38 }
19771                     }
19772                 },
19773                 range: [18, 38],
19774                 loc: {
19775                     start: { line: 1, column: 18 },
19776                     end: { line: 1, column: 38 }
19777                 }
19778             }],
19779             finalizer: {
19780                 type: 'BlockStatement',
19781                 body: [{
19782                     type: 'ExpressionStatement',
19783                     expression: {
19784                         type: 'CallExpression',
19785                         callee: {
19786                             type: 'Identifier',
19787                             name: 'cleanup',
19788                             range: [49, 56],
19789                             loc: {
19790                                 start: { line: 1, column: 49 },
19791                                 end: { line: 1, column: 56 }
19792                             }
19793                         },
19794                         'arguments': [{
19795                             type: 'Identifier',
19796                             name: 'stuff',
19797                             range: [57, 62],
19798                             loc: {
19799                                 start: { line: 1, column: 57 },
19800                                 end: { line: 1, column: 62 }
19801                             }
19802                         }],
19803                         range: [49, 63],
19804                         loc: {
19805                             start: { line: 1, column: 49 },
19806                             end: { line: 1, column: 63 }
19807                         }
19808                     },
19809                     range: [49, 64],
19810                     loc: {
19811                         start: { line: 1, column: 49 },
19812                         end: { line: 1, column: 64 }
19813                     }
19814                 }],
19815                 range: [47, 65],
19816                 loc: {
19817                     start: { line: 1, column: 47 },
19818                     end: { line: 1, column: 65 }
19819                 }
19820             },
19821             range: [0, 65],
19822             loc: {
19823                 start: { line: 1, column: 0 },
19824                 end: { line: 1, column: 65 }
19825             }
19826         }
19827
19828     },
19829
19830     'debugger statement': {
19831
19832         'debugger;': {
19833             type: 'DebuggerStatement',
19834             range: [0, 9],
19835             loc: {
19836                 start: { line: 1, column: 0 },
19837                 end: { line: 1, column: 9 }
19838             }
19839         }
19840
19841     },
19842
19843     'Function Definition': {
19844
19845         'function hello() { sayHi(); }': {
19846             type: 'FunctionDeclaration',
19847             id: {
19848                 type: 'Identifier',
19849                 name: 'hello',
19850                 range: [9, 14],
19851                 loc: {
19852                     start: { line: 1, column: 9 },
19853                     end: { line: 1, column: 14 }
19854                 }
19855             },
19856             params: [],
19857             defaults: [],
19858             body: {
19859                 type: 'BlockStatement',
19860                 body: [{
19861                     type: 'ExpressionStatement',
19862                     expression: {
19863                         type: 'CallExpression',
19864                         callee: {
19865                             type: 'Identifier',
19866                             name: 'sayHi',
19867                             range: [19, 24],
19868                             loc: {
19869                                 start: { line: 1, column: 19 },
19870                                 end: { line: 1, column: 24 }
19871                             }
19872                         },
19873                         'arguments': [],
19874                         range: [19, 26],
19875                         loc: {
19876                             start: { line: 1, column: 19 },
19877                             end: { line: 1, column: 26 }
19878                         }
19879                     },
19880                     range: [19, 27],
19881                     loc: {
19882                         start: { line: 1, column: 19 },
19883                         end: { line: 1, column: 27 }
19884                     }
19885                 }],
19886                 range: [17, 29],
19887                 loc: {
19888                     start: { line: 1, column: 17 },
19889                     end: { line: 1, column: 29 }
19890                 }
19891             },
19892             rest: null,
19893             generator: false,
19894             expression: false,
19895             range: [0, 29],
19896             loc: {
19897                 start: { line: 1, column: 0 },
19898                 end: { line: 1, column: 29 }
19899             }
19900         },
19901
19902         'function eval() { }': {
19903             type: 'FunctionDeclaration',
19904             id: {
19905                 type: 'Identifier',
19906                 name: 'eval',
19907                 range: [9, 13],
19908                 loc: {
19909                     start: { line: 1, column: 9 },
19910                     end: { line: 1, column: 13 }
19911                 }
19912             },
19913             params: [],
19914             defaults: [],
19915             body: {
19916                 type: 'BlockStatement',
19917                 body: [],
19918                 range: [16, 19],
19919                 loc: {
19920                     start: { line: 1, column: 16 },
19921                     end: { line: 1, column: 19 }
19922                 }
19923             },
19924             rest: null,
19925             generator: false,
19926             expression: false,
19927             range: [0, 19],
19928             loc: {
19929                 start: { line: 1, column: 0 },
19930                 end: { line: 1, column: 19 }
19931             }
19932         },
19933
19934         'function arguments() { }': {
19935             type: 'FunctionDeclaration',
19936             id: {
19937                 type: 'Identifier',
19938                 name: 'arguments',
19939                 range: [9, 18],
19940                 loc: {
19941                     start: { line: 1, column: 9 },
19942                     end: { line: 1, column: 18 }
19943                 }
19944             },
19945             params: [],
19946             defaults: [],
19947             body: {
19948                 type: 'BlockStatement',
19949                 body: [],
19950                 range: [21, 24],
19951                 loc: {
19952                     start: { line: 1, column: 21 },
19953                     end: { line: 1, column: 24 }
19954                 }
19955             },
19956             rest: null,
19957             generator: false,
19958             expression: false,
19959             range: [0, 24],
19960             loc: {
19961                 start: { line: 1, column: 0 },
19962                 end: { line: 1, column: 24 }
19963             }
19964         },
19965
19966         'function test(t, t) { }': {
19967             type: 'FunctionDeclaration',
19968             id: {
19969                 type: 'Identifier',
19970                 name: 'test',
19971                 range: [9, 13],
19972                 loc: {
19973                     start: { line: 1, column: 9 },
19974                     end: { line: 1, column: 13 }
19975                 }
19976             },
19977             params: [{
19978                 type: 'Identifier',
19979                 name: 't',
19980                 range: [14, 15],
19981                 loc: {
19982                     start: { line: 1, column: 14 },
19983                     end: { line: 1, column: 15 }
19984                 }
19985             }, {
19986                 type: 'Identifier',
19987                 name: 't',
19988                 range: [17, 18],
19989                 loc: {
19990                     start: { line: 1, column: 17 },
19991                     end: { line: 1, column: 18 }
19992                 }
19993             }],
19994             defaults: [],
19995             body: {
19996                 type: 'BlockStatement',
19997                 body: [],
19998                 range: [20, 23],
19999                 loc: {
20000                     start: { line: 1, column: 20 },
20001                     end: { line: 1, column: 23 }
20002                 }
20003             },
20004             rest: null,
20005             generator: false,
20006             expression: false,
20007             range: [0, 23],
20008             loc: {
20009                 start: { line: 1, column: 0 },
20010                 end: { line: 1, column: 23 }
20011             }
20012         },
20013
20014         '(function test(t, t) { })': {
20015             type: 'ExpressionStatement',
20016             expression: {
20017                 type: 'FunctionExpression',
20018                 id: {
20019                     type: 'Identifier',
20020                     name: 'test',
20021                     range: [10, 14],
20022                     loc: {
20023                         start: { line: 1, column: 10 },
20024                         end: { line: 1, column: 14 }
20025                     }
20026                 },
20027                 params: [{
20028                     type: 'Identifier',
20029                     name: 't',
20030                     range: [15, 16],
20031                     loc: {
20032                         start: { line: 1, column: 15 },
20033                         end: { line: 1, column: 16 }
20034                     }
20035                 }, {
20036                     type: 'Identifier',
20037                     name: 't',
20038                     range: [18, 19],
20039                     loc: {
20040                         start: { line: 1, column: 18 },
20041                         end: { line: 1, column: 19 }
20042                     }
20043                 }],
20044                 defaults: [],
20045                 body: {
20046                     type: 'BlockStatement',
20047                     body: [],
20048                     range: [21, 24],
20049                     loc: {
20050                         start: { line: 1, column: 21 },
20051                         end: { line: 1, column: 24 }
20052                     }
20053                 },
20054                 rest: null,
20055                 generator: false,
20056                 expression: false,
20057                 range: [1, 24],
20058                 loc: {
20059                     start: { line: 1, column: 1 },
20060                     end: { line: 1, column: 24 }
20061                 }
20062             },
20063             range: [0, 25],
20064             loc: {
20065                 start: { line: 1, column: 0 },
20066                 end: { line: 1, column: 25 }
20067             }
20068         },
20069
20070         'function eval() { function inner() { "use strict" } }': {
20071             type: 'FunctionDeclaration',
20072             id: {
20073                 type: 'Identifier',
20074                 name: 'eval',
20075                 range: [9, 13],
20076                 loc: {
20077                     start: { line: 1, column: 9 },
20078                     end: { line: 1, column: 13 }
20079                 }
20080             },
20081             params: [],
20082             defaults: [],
20083             body: {
20084                 type: 'BlockStatement',
20085                 body: [{
20086                     type: 'FunctionDeclaration',
20087                     id: {
20088                         type: 'Identifier',
20089                         name: 'inner',
20090                         range: [27, 32],
20091                         loc: {
20092                             start: { line: 1, column: 27 },
20093                             end: { line: 1, column: 32 }
20094                         }
20095                     },
20096                     params: [],
20097                     defaults: [],
20098                     body: {
20099                         type: 'BlockStatement',
20100                         body: [{
20101                             type: 'ExpressionStatement',
20102                             expression: {
20103                                 type: 'Literal',
20104                                 value: 'use strict',
20105                                 raw: '\"use strict\"',
20106                                 range: [37, 49],
20107                                 loc: {
20108                                     start: { line: 1, column: 37 },
20109                                     end: { line: 1, column: 49 }
20110                                 }
20111                             },
20112                             range: [37, 50],
20113                             loc: {
20114                                 start: { line: 1, column: 37 },
20115                                 end: { line: 1, column: 50 }
20116                             }
20117                         }],
20118                         range: [35, 51],
20119                         loc: {
20120                             start: { line: 1, column: 35 },
20121                             end: { line: 1, column: 51 }
20122                         }
20123                     },
20124                     rest: null,
20125                     generator: false,
20126                     expression: false,
20127                     range: [18, 51],
20128                     loc: {
20129                         start: { line: 1, column: 18 },
20130                         end: { line: 1, column: 51 }
20131                     }
20132                 }],
20133                 range: [16, 53],
20134                 loc: {
20135                     start: { line: 1, column: 16 },
20136                     end: { line: 1, column: 53 }
20137                 }
20138             },
20139             rest: null,
20140             generator: false,
20141             expression: false,
20142             range: [0, 53],
20143             loc: {
20144                 start: { line: 1, column: 0 },
20145                 end: { line: 1, column: 53 }
20146             }
20147         },
20148
20149         'function hello(a) { sayHi(); }': {
20150             type: 'FunctionDeclaration',
20151             id: {
20152                 type: 'Identifier',
20153                 name: 'hello',
20154                 range: [9, 14],
20155                 loc: {
20156                     start: { line: 1, column: 9 },
20157                     end: { line: 1, column: 14 }
20158                 }
20159             },
20160             params: [{
20161                 type: 'Identifier',
20162                 name: 'a',
20163                 range: [15, 16],
20164                 loc: {
20165                     start: { line: 1, column: 15 },
20166                     end: { line: 1, column: 16 }
20167                 }
20168             }],
20169             defaults: [],
20170             body: {
20171                 type: 'BlockStatement',
20172                 body: [{
20173                     type: 'ExpressionStatement',
20174                     expression: {
20175                         type: 'CallExpression',
20176                         callee: {
20177                             type: 'Identifier',
20178                             name: 'sayHi',
20179                             range: [20, 25],
20180                             loc: {
20181                                 start: { line: 1, column: 20 },
20182                                 end: { line: 1, column: 25 }
20183                             }
20184                         },
20185                         'arguments': [],
20186                         range: [20, 27],
20187                         loc: {
20188                             start: { line: 1, column: 20 },
20189                             end: { line: 1, column: 27 }
20190                         }
20191                     },
20192                     range: [20, 28],
20193                     loc: {
20194                         start: { line: 1, column: 20 },
20195                         end: { line: 1, column: 28 }
20196                     }
20197                 }],
20198                 range: [18, 30],
20199                 loc: {
20200                     start: { line: 1, column: 18 },
20201                     end: { line: 1, column: 30 }
20202                 }
20203             },
20204             rest: null,
20205             generator: false,
20206             expression: false,
20207             range: [0, 30],
20208             loc: {
20209                 start: { line: 1, column: 0 },
20210                 end: { line: 1, column: 30 }
20211             }
20212         },
20213
20214         'function hello(a, b) { sayHi(); }': {
20215             type: 'FunctionDeclaration',
20216             id: {
20217                 type: 'Identifier',
20218                 name: 'hello',
20219                 range: [9, 14],
20220                 loc: {
20221                     start: { line: 1, column: 9 },
20222                     end: { line: 1, column: 14 }
20223                 }
20224             },
20225             params: [{
20226                 type: 'Identifier',
20227                 name: 'a',
20228                 range: [15, 16],
20229                 loc: {
20230                     start: { line: 1, column: 15 },
20231                     end: { line: 1, column: 16 }
20232                 }
20233             }, {
20234                 type: 'Identifier',
20235                 name: 'b',
20236                 range: [18, 19],
20237                 loc: {
20238                     start: { line: 1, column: 18 },
20239                     end: { line: 1, column: 19 }
20240                 }
20241             }],
20242             defaults: [],
20243             body: {
20244                 type: 'BlockStatement',
20245                 body: [{
20246                     type: 'ExpressionStatement',
20247                     expression: {
20248                         type: 'CallExpression',
20249                         callee: {
20250                             type: 'Identifier',
20251                             name: 'sayHi',
20252                             range: [23, 28],
20253                             loc: {
20254                                 start: { line: 1, column: 23 },
20255                                 end: { line: 1, column: 28 }
20256                             }
20257                         },
20258                         'arguments': [],
20259                         range: [23, 30],
20260                         loc: {
20261                             start: { line: 1, column: 23 },
20262                             end: { line: 1, column: 30 }
20263                         }
20264                     },
20265                     range: [23, 31],
20266                     loc: {
20267                         start: { line: 1, column: 23 },
20268                         end: { line: 1, column: 31 }
20269                     }
20270                 }],
20271                 range: [21, 33],
20272                 loc: {
20273                     start: { line: 1, column: 21 },
20274                     end: { line: 1, column: 33 }
20275                 }
20276             },
20277             rest: null,
20278             generator: false,
20279             expression: false,
20280             range: [0, 33],
20281             loc: {
20282                 start: { line: 1, column: 0 },
20283                 end: { line: 1, column: 33 }
20284             }
20285         },
20286
20287         'var hi = function() { sayHi() };': {
20288             type: 'VariableDeclaration',
20289             declarations: [{
20290                 type: 'VariableDeclarator',
20291                 id: {
20292                     type: 'Identifier',
20293                     name: 'hi',
20294                     range: [4, 6],
20295                     loc: {
20296                         start: { line: 1, column: 4 },
20297                         end: { line: 1, column: 6 }
20298                     }
20299                 },
20300                 init: {
20301                     type: 'FunctionExpression',
20302                     id: null,
20303                     params: [],
20304                     defaults: [],
20305                     body: {
20306                         type: 'BlockStatement',
20307                         body: [{
20308                             type: 'ExpressionStatement',
20309                             expression: {
20310                                 type: 'CallExpression',
20311                                 callee: {
20312                                     type: 'Identifier',
20313                                     name: 'sayHi',
20314                                     range: [22, 27],
20315                                     loc: {
20316                                         start: { line: 1, column: 22 },
20317                                         end: { line: 1, column: 27 }
20318                                     }
20319                                 },
20320                                 'arguments': [],
20321                                 range: [22, 29],
20322                                 loc: {
20323                                     start: { line: 1, column: 22 },
20324                                     end: { line: 1, column: 29 }
20325                                 }
20326                             },
20327                             range: [22, 30],
20328                             loc: {
20329                                 start: { line: 1, column: 22 },
20330                                 end: { line: 1, column: 30 }
20331                             }
20332                         }],
20333                         range: [20, 31],
20334                         loc: {
20335                             start: { line: 1, column: 20 },
20336                             end: { line: 1, column: 31 }
20337                         }
20338                     },
20339                     rest: null,
20340                     generator: false,
20341                     expression: false,
20342                     range: [9, 31],
20343                     loc: {
20344                         start: { line: 1, column: 9 },
20345                         end: { line: 1, column: 31 }
20346                     }
20347                 },
20348                 range: [4, 31],
20349                 loc: {
20350                     start: { line: 1, column: 4 },
20351                     end: { line: 1, column: 31 }
20352                 }
20353             }],
20354             kind: 'var',
20355             range: [0, 32],
20356             loc: {
20357                 start: { line: 1, column: 0 },
20358                 end: { line: 1, column: 32 }
20359             }
20360         },
20361
20362         'var hi = function eval() { };': {
20363             type: 'VariableDeclaration',
20364             declarations: [{
20365                 type: 'VariableDeclarator',
20366                 id: {
20367                     type: 'Identifier',
20368                     name: 'hi',
20369                     range: [4, 6],
20370                     loc: {
20371                         start: { line: 1, column: 4 },
20372                         end: { line: 1, column: 6 }
20373                     }
20374                 },
20375                 init: {
20376                     type: 'FunctionExpression',
20377                     id: {
20378                         type: 'Identifier',
20379                         name: 'eval',
20380                         range: [18, 22],
20381                         loc: {
20382                             start: { line: 1, column: 18 },
20383                             end: { line: 1, column: 22 }
20384                         }
20385                     },
20386                     params: [],
20387                     defaults: [],
20388                     body: {
20389                         type: 'BlockStatement',
20390                         body: [],
20391                         range: [25, 28],
20392                         loc: {
20393                             start: { line: 1, column: 25 },
20394                             end: { line: 1, column: 28 }
20395                         }
20396                     },
20397                     rest: null,
20398                     generator: false,
20399                     expression: false,
20400                     range: [9, 28],
20401                     loc: {
20402                         start: { line: 1, column: 9 },
20403                         end: { line: 1, column: 28 }
20404                     }
20405                 },
20406                 range: [4, 28],
20407                 loc: {
20408                     start: { line: 1, column: 4 },
20409                     end: { line: 1, column: 28 }
20410                 }
20411             }],
20412             kind: 'var',
20413             range: [0, 29],
20414             loc: {
20415                 start: { line: 1, column: 0 },
20416                 end: { line: 1, column: 29 }
20417             }
20418         },
20419
20420         'var hi = function arguments() { };': {
20421             type: 'VariableDeclaration',
20422             declarations: [{
20423                 type: 'VariableDeclarator',
20424                 id: {
20425                     type: 'Identifier',
20426                     name: 'hi',
20427                     range: [4, 6],
20428                     loc: {
20429                         start: { line: 1, column: 4 },
20430                         end: { line: 1, column: 6 }
20431                     }
20432                 },
20433                 init: {
20434                     type: 'FunctionExpression',
20435                     id: {
20436                         type: 'Identifier',
20437                         name: 'arguments',
20438                         range: [18, 27],
20439                         loc: {
20440                             start: { line: 1, column: 18 },
20441                             end: { line: 1, column: 27 }
20442                         }
20443                     },
20444                     params: [],
20445                     defaults: [],
20446                     body: {
20447                         type: 'BlockStatement',
20448                         body: [],
20449                         range: [30, 33],
20450                         loc: {
20451                             start: { line: 1, column: 30 },
20452                             end: { line: 1, column: 33 }
20453                         }
20454                     },
20455                     rest: null,
20456                     generator: false,
20457                     expression: false,
20458                     range: [9, 33],
20459                     loc: {
20460                         start: { line: 1, column: 9 },
20461                         end: { line: 1, column: 33 }
20462                     }
20463                 },
20464                 range: [4, 33],
20465                 loc: {
20466                     start: { line: 1, column: 4 },
20467                     end: { line: 1, column: 33 }
20468                 }
20469             }],
20470             kind: 'var',
20471             range: [0, 34],
20472             loc: {
20473                 start: { line: 1, column: 0 },
20474                 end: { line: 1, column: 34 }
20475             }
20476         },
20477
20478         'var hello = function hi() { sayHi() };': {
20479             type: 'VariableDeclaration',
20480             declarations: [{
20481                 type: 'VariableDeclarator',
20482                 id: {
20483                     type: 'Identifier',
20484                     name: 'hello',
20485                     range: [4, 9],
20486                     loc: {
20487                         start: { line: 1, column: 4 },
20488                         end: { line: 1, column: 9 }
20489                     }
20490                 },
20491                 init: {
20492                     type: 'FunctionExpression',
20493                     id: {
20494                         type: 'Identifier',
20495                         name: 'hi',
20496                         range: [21, 23],
20497                         loc: {
20498                             start: { line: 1, column: 21 },
20499                             end: { line: 1, column: 23 }
20500                         }
20501                     },
20502                     params: [],
20503                     defaults: [],
20504                     body: {
20505                         type: 'BlockStatement',
20506                         body: [{
20507                             type: 'ExpressionStatement',
20508                             expression: {
20509                                 type: 'CallExpression',
20510                                 callee: {
20511                                     type: 'Identifier',
20512                                     name: 'sayHi',
20513                                     range: [28, 33],
20514                                     loc: {
20515                                         start: { line: 1, column: 28 },
20516                                         end: { line: 1, column: 33 }
20517                                     }
20518                                 },
20519                                 'arguments': [],
20520                                 range: [28, 35],
20521                                 loc: {
20522                                     start: { line: 1, column: 28 },
20523                                     end: { line: 1, column: 35 }
20524                                 }
20525                             },
20526                             range: [28, 36],
20527                             loc: {
20528                                 start: { line: 1, column: 28 },
20529                                 end: { line: 1, column: 36 }
20530                             }
20531                         }],
20532                         range: [26, 37],
20533                         loc: {
20534                             start: { line: 1, column: 26 },
20535                             end: { line: 1, column: 37 }
20536                         }
20537                     },
20538                     rest: null,
20539                     generator: false,
20540                     expression: false,
20541                     range: [12, 37],
20542                     loc: {
20543                         start: { line: 1, column: 12 },
20544                         end: { line: 1, column: 37 }
20545                     }
20546                 },
20547                 range: [4, 37],
20548                 loc: {
20549                     start: { line: 1, column: 4 },
20550                     end: { line: 1, column: 37 }
20551                 }
20552             }],
20553             kind: 'var',
20554             range: [0, 38],
20555             loc: {
20556                 start: { line: 1, column: 0 },
20557                 end: { line: 1, column: 38 }
20558             }
20559         },
20560
20561         '(function(){})': {
20562             type: 'ExpressionStatement',
20563             expression: {
20564                 type: 'FunctionExpression',
20565                 id: null,
20566                 params: [],
20567                 defaults: [],
20568                 body: {
20569                     type: 'BlockStatement',
20570                     body: [],
20571                     range: [11, 13],
20572                     loc: {
20573                         start: { line: 1, column: 11 },
20574                         end: { line: 1, column: 13 }
20575                     }
20576                 },
20577                 rest: null,
20578                 generator: false,
20579                 expression: false,
20580                 range: [1, 13],
20581                 loc: {
20582                     start: { line: 1, column: 1 },
20583                     end: { line: 1, column: 13 }
20584                 }
20585             },
20586             range: [0, 14],
20587             loc: {
20588                 start: { line: 1, column: 0 },
20589                 end: { line: 1, column: 14 }
20590             }
20591         },
20592
20593         'function universe(__proto__) { }': {
20594             type: 'FunctionDeclaration',
20595             id: {
20596                 type: 'Identifier',
20597                 name: 'universe',
20598                 range: [9, 17],
20599                 loc: {
20600                     start: { line: 1, column: 9 },
20601                     end: { line: 1, column: 17 }
20602                 }
20603             },
20604             params: [{
20605                 type: 'Identifier',
20606                 name: '__proto__',
20607                 range: [18, 27],
20608                 loc: {
20609                     start: { line: 1, column: 18 },
20610                     end: { line: 1, column: 27 }
20611                 }
20612             }],
20613             defaults: [],
20614             body: {
20615                 type: 'BlockStatement',
20616                 body: [],
20617                 range: [29, 32],
20618                 loc: {
20619                     start: { line: 1, column: 29 },
20620                     end: { line: 1, column: 32 }
20621                 }
20622             },
20623             rest: null,
20624             generator: false,
20625             expression: false,
20626             range: [0, 32],
20627             loc: {
20628                 start: { line: 1, column: 0 },
20629                 end: { line: 1, column: 32 }
20630             }
20631         },
20632
20633         'function test() { "use strict" + 42; }': {
20634             type: 'FunctionDeclaration',
20635             id: {
20636                 type: 'Identifier',
20637                 name: 'test',
20638                 range: [9, 13],
20639                 loc: {
20640                     start: { line: 1, column: 9 },
20641                     end: { line: 1, column: 13 }
20642                 }
20643             },
20644             params: [],
20645             defaults: [],
20646             body: {
20647                 type: 'BlockStatement',
20648                 body: [{
20649                     type: 'ExpressionStatement',
20650                     expression: {
20651                         type: 'BinaryExpression',
20652                         operator: '+',
20653                         left: {
20654                             type: 'Literal',
20655                             value: 'use strict',
20656                             raw: '"use strict"',
20657                             range: [18, 30],
20658                             loc: {
20659                                 start: { line: 1, column: 18 },
20660                                 end: { line: 1, column: 30 }
20661                             }
20662                         },
20663                         right: {
20664                             type: 'Literal',
20665                             value: 42,
20666                             raw: '42',
20667                             range: [33, 35],
20668                             loc: {
20669                                 start: { line: 1, column: 33 },
20670                                 end: { line: 1, column: 35 }
20671                             }
20672                         },
20673                         range: [18, 35],
20674                         loc: {
20675                             start: { line: 1, column: 18 },
20676                             end: { line: 1, column: 35 }
20677                         }
20678                     },
20679                     range: [18, 36],
20680                     loc: {
20681                         start: { line: 1, column: 18 },
20682                         end: { line: 1, column: 36 }
20683                     }
20684                 }],
20685                 range: [16, 38],
20686                 loc: {
20687                     start: { line: 1, column: 16 },
20688                     end: { line: 1, column: 38 }
20689                 }
20690             },
20691             rest: null,
20692             generator: false,
20693             expression: false,
20694             range: [0, 38],
20695             loc: {
20696                 start: { line: 1, column: 0 },
20697                 end: { line: 1, column: 38 }
20698             }
20699         }
20700
20701     },
20702
20703     '[ES6] Default Parameter Value': {
20704
20705         'x = function(y = 1) {}': {
20706             type: 'ExpressionStatement',
20707             expression: {
20708                 type: 'AssignmentExpression',
20709                 operator: '=',
20710                 left: {
20711                     type: 'Identifier',
20712                     name: 'x',
20713                     range: [0, 1],
20714                     loc: {
20715                         start: { line: 1, column: 0 },
20716                         end: { line: 1, column: 1 }
20717                     }
20718                 },
20719                 right: {
20720                     type: 'FunctionExpression',
20721                     id: null,
20722                     params: [{
20723                         type: 'Identifier',
20724                         name: 'y',
20725                         range: [13, 14],
20726                         loc: {
20727                             start: { line: 1, column: 13 },
20728                             end: { line: 1, column: 14 }
20729                         }
20730                     }],
20731                     defaults: [{
20732                         type: 'Literal',
20733                         value: 1,
20734                         raw: '1',
20735                         range: [17, 18],
20736                         loc: {
20737                             start: { line: 1, column: 17 },
20738                             end: { line: 1, column: 18 }
20739                         }
20740                     }],
20741                     body: {
20742                         type: 'BlockStatement',
20743                         body: [],
20744                         range: [20, 22],
20745                         loc: {
20746                             start: { line: 1, column: 20 },
20747                             end: { line: 1, column: 22 }
20748                         }
20749                     },
20750                     rest: null,
20751                     generator: false,
20752                     expression: false,
20753                     range: [4, 22],
20754                     loc: {
20755                         start: { line: 1, column: 4 },
20756                         end: { line: 1, column: 22 }
20757                     }
20758                 },
20759                 range: [0, 22],
20760                 loc: {
20761                     start: { line: 1, column: 0 },
20762                     end: { line: 1, column: 22 }
20763                 }
20764             },
20765             range: [0, 22],
20766             loc: {
20767                 start: { line: 1, column: 0 },
20768                 end: { line: 1, column: 22 }
20769             }
20770         },
20771
20772         'function f(a = 1) {}': {
20773             type: 'FunctionDeclaration',
20774             id: {
20775                 type: 'Identifier',
20776                 name: 'f',
20777                 range: [9, 10],
20778                 loc: {
20779                     start: { line: 1, column: 9 },
20780                     end: { line: 1, column: 10 }
20781                 }
20782             },
20783             params: [{
20784                 type: 'Identifier',
20785                 name: 'a',
20786                 range: [11, 12],
20787                 loc: {
20788                     start: { line: 1, column: 11 },
20789                     end: { line: 1, column: 12 }
20790                 }
20791             }],
20792             defaults: [{
20793                 type: 'Literal',
20794                 value: 1,
20795                 raw: '1',
20796                 range: [15, 16],
20797                 loc: {
20798                     start: { line: 1, column: 15 },
20799                     end: { line: 1, column: 16 }
20800                 }
20801             }],
20802             body: {
20803                 type: 'BlockStatement',
20804                 body: [],
20805                 range: [18, 20],
20806                 loc: {
20807                     start: { line: 1, column: 18 },
20808                     end: { line: 1, column: 20 }
20809                 }
20810             },
20811             rest: null,
20812             generator: false,
20813             expression: false,
20814             range: [0, 20],
20815             loc: {
20816                 start: { line: 1, column: 0 },
20817                 end: { line: 1, column: 20 }
20818             }
20819         },
20820
20821         'x = { f: function(a=1) {} }': {
20822             type: 'ExpressionStatement',
20823             expression: {
20824                 type: 'AssignmentExpression',
20825                 operator: '=',
20826                 left: {
20827                     type: 'Identifier',
20828                     name: 'x',
20829                     range: [0, 1],
20830                     loc: {
20831                         start: { line: 1, column: 0 },
20832                         end: { line: 1, column: 1 }
20833                     }
20834                 },
20835                 right: {
20836                     type: 'ObjectExpression',
20837                     properties: [{
20838                         type: 'Property',
20839                         key: {
20840                             type: 'Identifier',
20841                             name: 'f',
20842                             range: [6, 7],
20843                             loc: {
20844                                 start: { line: 1, column: 6 },
20845                                 end: { line: 1, column: 7 }
20846                             }
20847                         },
20848                         value: {
20849                             type: 'FunctionExpression',
20850                             id: null,
20851                             params: [{
20852                                 type: 'Identifier',
20853                                 name: 'a',
20854                                 range: [18, 19],
20855                                 loc: {
20856                                     start: { line: 1, column: 18 },
20857                                     end: { line: 1, column: 19 }
20858                                 }
20859                             }],
20860                             defaults: [{
20861                                 type: 'Literal',
20862                                 value: 1,
20863                                 raw: '1',
20864                                 range: [20, 21],
20865                                 loc: {
20866                                     start: { line: 1, column: 20 },
20867                                     end: { line: 1, column: 21 }
20868                                 }
20869                             }],
20870                             body: {
20871                                 type: 'BlockStatement',
20872                                 body: [],
20873                                 range: [23, 25],
20874                                 loc: {
20875                                     start: { line: 1, column: 23 },
20876                                     end: { line: 1, column: 25 }
20877                                 }
20878                             },
20879                             rest: null,
20880                             generator: false,
20881                             expression: false,
20882                             range: [9, 25],
20883                             loc: {
20884                                 start: { line: 1, column: 9 },
20885                                 end: { line: 1, column: 25 }
20886                             }
20887                         },
20888                         kind: 'init',
20889                         method: false,
20890                         shorthand: false,
20891                         range: [6, 25],
20892                         loc: {
20893                             start: { line: 1, column: 6 },
20894                             end: { line: 1, column: 25 }
20895                         }
20896                     }],
20897                     range: [4, 27],
20898                     loc: {
20899                         start: { line: 1, column: 4 },
20900                         end: { line: 1, column: 27 }
20901                     }
20902                 },
20903                 range: [0, 27],
20904                 loc: {
20905                     start: { line: 1, column: 0 },
20906                     end: { line: 1, column: 27 }
20907                 }
20908             },
20909             range: [0, 27],
20910             loc: {
20911                 start: { line: 1, column: 0 },
20912                 end: { line: 1, column: 27 }
20913             }
20914         }
20915
20916     },
20917
20918     'Automatic semicolon insertion': {
20919
20920         '{ x\n++y }': {
20921             type: 'BlockStatement',
20922             body: [{
20923                 type: 'ExpressionStatement',
20924                 expression: {
20925                     type: 'Identifier',
20926                     name: 'x',
20927                     range: [2, 3],
20928                     loc: {
20929                         start: { line: 1, column: 2 },
20930                         end: { line: 1, column: 3 }
20931                     }
20932                 },
20933                 range: [2, 3],
20934                 loc: {
20935                     start: { line: 1, column: 2 },
20936                     end: { line: 1, column: 3 }
20937                 }
20938             }, {
20939                 type: 'ExpressionStatement',
20940                 expression: {
20941                     type: 'UpdateExpression',
20942                     operator: '++',
20943                     argument: {
20944                         type: 'Identifier',
20945                         name: 'y',
20946                         range: [6, 7],
20947                         loc: {
20948                             start: { line: 2, column: 2 },
20949                             end: { line: 2, column: 3 }
20950                         }
20951                     },
20952                     prefix: true,
20953                     range: [4, 7],
20954                     loc: {
20955                         start: { line: 2, column: 0 },
20956                         end: { line: 2, column: 3 }
20957                     }
20958                 },
20959                 range: [4, 8],
20960                 loc: {
20961                     start: { line: 2, column: 0 },
20962                     end: { line: 2, column: 4 }
20963                 }
20964             }],
20965             range: [0, 9],
20966             loc: {
20967                 start: { line: 1, column: 0 },
20968                 end: { line: 2, column: 5 }
20969             }
20970         },
20971
20972         '{ x\n--y }': {
20973             type: 'BlockStatement',
20974             body: [{
20975                 type: 'ExpressionStatement',
20976                 expression: {
20977                     type: 'Identifier',
20978                     name: 'x',
20979                     range: [2, 3],
20980                     loc: {
20981                         start: { line: 1, column: 2 },
20982                         end: { line: 1, column: 3 }
20983                     }
20984                 },
20985                 range: [2, 3],
20986                 loc: {
20987                     start: { line: 1, column: 2 },
20988                     end: { line: 1, column: 3 }
20989                 }
20990             }, {
20991                 type: 'ExpressionStatement',
20992                 expression: {
20993                     type: 'UpdateExpression',
20994                     operator: '--',
20995                     argument: {
20996                         type: 'Identifier',
20997                         name: 'y',
20998                         range: [6, 7],
20999                         loc: {
21000                             start: { line: 2, column: 2 },
21001                             end: { line: 2, column: 3 }
21002                         }
21003                     },
21004                     prefix: true,
21005                     range: [4, 7],
21006                     loc: {
21007                         start: { line: 2, column: 0 },
21008                         end: { line: 2, column: 3 }
21009                     }
21010                 },
21011                 range: [4, 8],
21012                 loc: {
21013                     start: { line: 2, column: 0 },
21014                     end: { line: 2, column: 4 }
21015                 }
21016             }],
21017             range: [0, 9],
21018             loc: {
21019                 start: { line: 1, column: 0 },
21020                 end: { line: 2, column: 5 }
21021             }
21022         },
21023
21024         'var x /* comment */;': {
21025             type: 'VariableDeclaration',
21026             declarations: [{
21027                 type: 'VariableDeclarator',
21028                 id: {
21029                     type: 'Identifier',
21030                     name: 'x',
21031                     range: [4, 5],
21032                     loc: {
21033                         start: { line: 1, column: 4 },
21034                         end: { line: 1, column: 5 }
21035                     }
21036                 },
21037                 init: null,
21038                 range: [4, 5],
21039                 loc: {
21040                     start: { line: 1, column: 4 },
21041                     end: { line: 1, column: 5 }
21042                 }
21043             }],
21044             kind: 'var',
21045             range: [0, 20],
21046             loc: {
21047                 start: { line: 1, column: 0 },
21048                 end: { line: 1, column: 20 }
21049             }
21050         },
21051
21052         '{ var x = 14, y = 3\nz; }': {
21053             type: 'BlockStatement',
21054             body: [{
21055                 type: 'VariableDeclaration',
21056                 declarations: [{
21057                     type: 'VariableDeclarator',
21058                     id: {
21059                         type: 'Identifier',
21060                         name: 'x',
21061                         range: [6, 7],
21062                         loc: {
21063                             start: { line: 1, column: 6 },
21064                             end: { line: 1, column: 7 }
21065                         }
21066                     },
21067                     init: {
21068                         type: 'Literal',
21069                         value: 14,
21070                         raw: '14',
21071                         range: [10, 12],
21072                         loc: {
21073                             start: { line: 1, column: 10 },
21074                             end: { line: 1, column: 12 }
21075                         }
21076                     },
21077                     range: [6, 12],
21078                     loc: {
21079                         start: { line: 1, column: 6 },
21080                         end: { line: 1, column: 12 }
21081                     }
21082                 }, {
21083                     type: 'VariableDeclarator',
21084                     id: {
21085                         type: 'Identifier',
21086                         name: 'y',
21087                         range: [14, 15],
21088                         loc: {
21089                             start: { line: 1, column: 14 },
21090                             end: { line: 1, column: 15 }
21091                         }
21092                     },
21093                     init: {
21094                         type: 'Literal',
21095                         value: 3,
21096                         raw: '3',
21097                         range: [18, 19],
21098                         loc: {
21099                             start: { line: 1, column: 18 },
21100                             end: { line: 1, column: 19 }
21101                         }
21102                     },
21103                     range: [14, 19],
21104                     loc: {
21105                         start: { line: 1, column: 14 },
21106                         end: { line: 1, column: 19 }
21107                     }
21108                 }],
21109                 kind: 'var',
21110                 range: [2, 19],
21111                 loc: {
21112                     start: { line: 1, column: 2 },
21113                     end: { line: 1, column: 19 }
21114                 }
21115             }, {
21116                 type: 'ExpressionStatement',
21117                 expression: {
21118                     type: 'Identifier',
21119                     name: 'z',
21120                     range: [20, 21],
21121                     loc: {
21122                         start: { line: 2, column: 0 },
21123                         end: { line: 2, column: 1 }
21124                     }
21125                 },
21126                 range: [20, 22],
21127                 loc: {
21128                     start: { line: 2, column: 0 },
21129                     end: { line: 2, column: 2 }
21130                 }
21131             }],
21132             range: [0, 24],
21133             loc: {
21134                 start: { line: 1, column: 0 },
21135                 end: { line: 2, column: 4 }
21136             }
21137         },
21138
21139         'while (true) { continue\nthere; }': {
21140             type: 'WhileStatement',
21141             test: {
21142                 type: 'Literal',
21143                 value: true,
21144                 raw: 'true',
21145                 range: [7, 11],
21146                 loc: {
21147                     start: { line: 1, column: 7 },
21148                     end: { line: 1, column: 11 }
21149                 }
21150             },
21151             body: {
21152                 type: 'BlockStatement',
21153                 body: [{
21154                     type: 'ContinueStatement',
21155                     label: null,
21156                     range: [15, 23],
21157                     loc: {
21158                         start: { line: 1, column: 15 },
21159                         end: { line: 1, column: 23 }
21160                     }
21161                 }, {
21162                     type: 'ExpressionStatement',
21163                     expression: {
21164                         type: 'Identifier',
21165                         name: 'there',
21166                         range: [24, 29],
21167                         loc: {
21168                             start: { line: 2, column: 0 },
21169                             end: { line: 2, column: 5 }
21170                         }
21171                     },
21172                     range: [24, 30],
21173                     loc: {
21174                         start: { line: 2, column: 0 },
21175                         end: { line: 2, column: 6 }
21176                     }
21177                 }],
21178                 range: [13, 32],
21179                 loc: {
21180                     start: { line: 1, column: 13 },
21181                     end: { line: 2, column: 8 }
21182                 }
21183             },
21184             range: [0, 32],
21185             loc: {
21186                 start: { line: 1, column: 0 },
21187                 end: { line: 2, column: 8 }
21188             }
21189         },
21190
21191         'while (true) { continue // Comment\nthere; }': {
21192             type: 'WhileStatement',
21193             test: {
21194                 type: 'Literal',
21195                 value: true,
21196                 raw: 'true',
21197                 range: [7, 11],
21198                 loc: {
21199                     start: { line: 1, column: 7 },
21200                     end: { line: 1, column: 11 }
21201                 }
21202             },
21203             body: {
21204                 type: 'BlockStatement',
21205                 body: [{
21206                     type: 'ContinueStatement',
21207                     label: null,
21208                     range: [15, 23],
21209                     loc: {
21210                         start: { line: 1, column: 15 },
21211                         end: { line: 1, column: 23 }
21212                     }
21213                 }, {
21214                     type: 'ExpressionStatement',
21215                     expression: {
21216                         type: 'Identifier',
21217                         name: 'there',
21218                         range: [35, 40],
21219                         loc: {
21220                             start: { line: 2, column: 0 },
21221                             end: { line: 2, column: 5 }
21222                         }
21223                     },
21224                     range: [35, 41],
21225                     loc: {
21226                         start: { line: 2, column: 0 },
21227                         end: { line: 2, column: 6 }
21228                     }
21229                 }],
21230                 range: [13, 43],
21231                 loc: {
21232                     start: { line: 1, column: 13 },
21233                     end: { line: 2, column: 8 }
21234                 }
21235             },
21236             range: [0, 43],
21237             loc: {
21238                 start: { line: 1, column: 0 },
21239                 end: { line: 2, column: 8 }
21240             }
21241         },
21242
21243         'while (true) { continue /* Multiline\nComment */there; }': {
21244             type: 'WhileStatement',
21245             test: {
21246                 type: 'Literal',
21247                 value: true,
21248                 raw: 'true',
21249                 range: [7, 11],
21250                 loc: {
21251                     start: { line: 1, column: 7 },
21252                     end: { line: 1, column: 11 }
21253                 }
21254             },
21255             body: {
21256                 type: 'BlockStatement',
21257                 body: [{
21258                     type: 'ContinueStatement',
21259                     label: null,
21260                     range: [15, 23],
21261                     loc: {
21262                         start: { line: 1, column: 15 },
21263                         end: { line: 1, column: 23 }
21264                     }
21265                 }, {
21266                     type: 'ExpressionStatement',
21267                     expression: {
21268                         type: 'Identifier',
21269                         name: 'there',
21270                         range: [47, 52],
21271                         loc: {
21272                             start: { line: 2, column: 10 },
21273                             end: { line: 2, column: 15 }
21274                         }
21275                     },
21276                     range: [47, 53],
21277                     loc: {
21278                         start: { line: 2, column: 10 },
21279                         end: { line: 2, column: 16 }
21280                     }
21281                 }],
21282                 range: [13, 55],
21283                 loc: {
21284                     start: { line: 1, column: 13 },
21285                     end: { line: 2, column: 18 }
21286                 }
21287             },
21288             range: [0, 55],
21289             loc: {
21290                 start: { line: 1, column: 0 },
21291                 end: { line: 2, column: 18 }
21292             }
21293         },
21294
21295         'while (true) { break\nthere; }': {
21296             type: 'WhileStatement',
21297             test: {
21298                 type: 'Literal',
21299                 value: true,
21300                 raw: 'true',
21301                 range: [7, 11],
21302                 loc: {
21303                     start: { line: 1, column: 7 },
21304                     end: { line: 1, column: 11 }
21305                 }
21306             },
21307             body: {
21308                 type: 'BlockStatement',
21309                 body: [{
21310                     type: 'BreakStatement',
21311                     label: null,
21312                     range: [15, 20],
21313                     loc: {
21314                         start: { line: 1, column: 15 },
21315                         end: { line: 1, column: 20 }
21316                     }
21317                 }, {
21318                     type: 'ExpressionStatement',
21319                     expression: {
21320                         type: 'Identifier',
21321                         name: 'there',
21322                         range: [21, 26],
21323                         loc: {
21324                             start: { line: 2, column: 0 },
21325                             end: { line: 2, column: 5 }
21326                         }
21327                     },
21328                     range: [21, 27],
21329                     loc: {
21330                         start: { line: 2, column: 0 },
21331                         end: { line: 2, column: 6 }
21332                     }
21333                 }],
21334                 range: [13, 29],
21335                 loc: {
21336                     start: { line: 1, column: 13 },
21337                     end: { line: 2, column: 8 }
21338                 }
21339             },
21340             range: [0, 29],
21341             loc: {
21342                 start: { line: 1, column: 0 },
21343                 end: { line: 2, column: 8 }
21344             }
21345         },
21346
21347         'while (true) { break // Comment\nthere; }': {
21348             type: 'WhileStatement',
21349             test: {
21350                 type: 'Literal',
21351                 value: true,
21352                 raw: 'true',
21353                 range: [7, 11],
21354                 loc: {
21355                     start: { line: 1, column: 7 },
21356                     end: { line: 1, column: 11 }
21357                 }
21358             },
21359             body: {
21360                 type: 'BlockStatement',
21361                 body: [{
21362                     type: 'BreakStatement',
21363                     label: null,
21364                     range: [15, 20],
21365                     loc: {
21366                         start: { line: 1, column: 15 },
21367                         end: { line: 1, column: 20 }
21368                     }
21369                 }, {
21370                     type: 'ExpressionStatement',
21371                     expression: {
21372                         type: 'Identifier',
21373                         name: 'there',
21374                         range: [32, 37],
21375                         loc: {
21376                             start: { line: 2, column: 0 },
21377                             end: { line: 2, column: 5 }
21378                         }
21379                     },
21380                     range: [32, 38],
21381                     loc: {
21382                         start: { line: 2, column: 0 },
21383                         end: { line: 2, column: 6 }
21384                     }
21385                 }],
21386                 range: [13, 40],
21387                 loc: {
21388                     start: { line: 1, column: 13 },
21389                     end: { line: 2, column: 8 }
21390                 }
21391             },
21392             range: [0, 40],
21393             loc: {
21394                 start: { line: 1, column: 0 },
21395                 end: { line: 2, column: 8 }
21396             }
21397         },
21398
21399         'while (true) { break /* Multiline\nComment */there; }': {
21400             type: 'WhileStatement',
21401             test: {
21402                 type: 'Literal',
21403                 value: true,
21404                 raw: 'true',
21405                 range: [7, 11],
21406                 loc: {
21407                     start: { line: 1, column: 7 },
21408                     end: { line: 1, column: 11 }
21409                 }
21410             },
21411             body: {
21412                 type: 'BlockStatement',
21413                 body: [{
21414                     type: 'BreakStatement',
21415                     label: null,
21416                     range: [15, 20],
21417                     loc: {
21418                         start: { line: 1, column: 15 },
21419                         end: { line: 1, column: 20 }
21420                     }
21421                 }, {
21422                     type: 'ExpressionStatement',
21423                     expression: {
21424                         type: 'Identifier',
21425                         name: 'there',
21426                         range: [44, 49],
21427                         loc: {
21428                             start: { line: 2, column: 10 },
21429                             end: { line: 2, column: 15 }
21430                         }
21431                     },
21432                     range: [44, 50],
21433                     loc: {
21434                         start: { line: 2, column: 10 },
21435                         end: { line: 2, column: 16 }
21436                     }
21437                 }],
21438                 range: [13, 52],
21439                 loc: {
21440                     start: { line: 1, column: 13 },
21441                     end: { line: 2, column: 18 }
21442                 }
21443             },
21444             range: [0, 52],
21445             loc: {
21446                 start: { line: 1, column: 0 },
21447                 end: { line: 2, column: 18 }
21448             }
21449         },
21450
21451         '(function(){ return\nx; })': {
21452             type: 'ExpressionStatement',
21453             expression: {
21454                 type: 'FunctionExpression',
21455                 id: null,
21456                 params: [],
21457                 defaults: [],
21458                 body: {
21459                     type: 'BlockStatement',
21460                     body: [
21461                         {
21462                             type: 'ReturnStatement',
21463                             argument: null,
21464                             range: [13, 19],
21465                             loc: {
21466                                 start: { line: 1, column: 13 },
21467                                 end: { line: 1, column: 19 }
21468                             }
21469                         },
21470                         {
21471                             type: 'ExpressionStatement',
21472                             expression: {
21473                                 type: 'Identifier',
21474                                 name: 'x',
21475                                 range: [20, 21],
21476                                 loc: {
21477                                     start: { line: 2, column: 0 },
21478                                     end: { line: 2, column: 1 }
21479                                 }
21480                             },
21481                             range: [20, 22],
21482                             loc: {
21483                                 start: { line: 2, column: 0 },
21484                                 end: { line: 2, column: 2 }
21485                             }
21486                         }
21487                     ],
21488                     range: [11, 24],
21489                     loc: {
21490                         start: { line: 1, column: 11 },
21491                         end: { line: 2, column: 4 }
21492                     }
21493                 },
21494                 rest: null,
21495                 generator: false,
21496                 expression: false,
21497                 range: [1, 24],
21498                 loc: {
21499                     start: { line: 1, column: 1 },
21500                     end: { line: 2, column: 4 }
21501                 }
21502             },
21503             range: [0, 25],
21504             loc: {
21505                 start: { line: 1, column: 0 },
21506                 end: { line: 2, column: 5 }
21507             }
21508         },
21509
21510         '(function(){ return // Comment\nx; })': {
21511             type: 'ExpressionStatement',
21512             expression: {
21513                 type: 'FunctionExpression',
21514                 id: null,
21515                 params: [],
21516                 defaults: [],
21517                 body: {
21518                     type: 'BlockStatement',
21519                     body: [
21520                         {
21521                             type: 'ReturnStatement',
21522                             argument: null,
21523                             range: [13, 19],
21524                             loc: {
21525                                 start: { line: 1, column: 13 },
21526                                 end: { line: 1, column: 19 }
21527                             }
21528                         },
21529                         {
21530                             type: 'ExpressionStatement',
21531                             expression: {
21532                                 type: 'Identifier',
21533                                 name: 'x',
21534                                 range: [31, 32],
21535                                 loc: {
21536                                     start: { line: 2, column: 0 },
21537                                     end: { line: 2, column: 1 }
21538                                 }
21539                             },
21540                             range: [31, 33],
21541                             loc: {
21542                                 start: { line: 2, column: 0 },
21543                                 end: { line: 2, column: 2 }
21544                             }
21545                         }
21546                     ],
21547                     range: [11, 35],
21548                     loc: {
21549                         start: { line: 1, column: 11 },
21550                         end: { line: 2, column: 4 }
21551                     }
21552                 },
21553                 rest: null,
21554                 generator: false,
21555                 expression: false,
21556                 range: [1, 35],
21557                 loc: {
21558                     start: { line: 1, column: 1 },
21559                     end: { line: 2, column: 4 }
21560                 }
21561             },
21562             range: [0, 36],
21563             loc: {
21564                 start: { line: 1, column: 0 },
21565                 end: { line: 2, column: 5 }
21566             }
21567         },
21568
21569         '(function(){ return/* Multiline\nComment */x; })': {
21570             type: 'ExpressionStatement',
21571             expression: {
21572                 type: 'FunctionExpression',
21573                 id: null,
21574                 params: [],
21575                 defaults: [],
21576                 body: {
21577                     type: 'BlockStatement',
21578                     body: [
21579                         {
21580                             type: 'ReturnStatement',
21581                             argument: null,
21582                             range: [13, 19],
21583                             loc: {
21584                                 start: { line: 1, column: 13 },
21585                                 end: { line: 1, column: 19 }
21586                             }
21587                         },
21588                         {
21589                             type: 'ExpressionStatement',
21590                             expression: {
21591                                 type: 'Identifier',
21592                                 name: 'x',
21593                                 range: [42, 43],
21594                                 loc: {
21595                                     start: { line: 2, column: 10 },
21596                                     end: { line: 2, column: 11 }
21597                                 }
21598                             },
21599                             range: [42, 44],
21600                             loc: {
21601                                 start: { line: 2, column: 10 },
21602                                 end: { line: 2, column: 12 }
21603                             }
21604                         }
21605                     ],
21606                     range: [11, 46],
21607                     loc: {
21608                         start: { line: 1, column: 11 },
21609                         end: { line: 2, column: 14 }
21610                     }
21611                 },
21612                 rest: null,
21613                 generator: false,
21614                 expression: false,
21615                 range: [1, 46],
21616                 loc: {
21617                     start: { line: 1, column: 1 },
21618                     end: { line: 2, column: 14 }
21619                 }
21620             },
21621             range: [0, 47],
21622             loc: {
21623                 start: { line: 1, column: 0 },
21624                 end: { line: 2, column: 15 }
21625             }
21626         },
21627
21628         '{ throw error\nerror; }': {
21629             type: 'BlockStatement',
21630             body: [{
21631                 type: 'ThrowStatement',
21632                 argument: {
21633                     type: 'Identifier',
21634                     name: 'error',
21635                     range: [8, 13],
21636                     loc: {
21637                         start: { line: 1, column: 8 },
21638                         end: { line: 1, column: 13 }
21639                     }
21640                 },
21641                 range: [2, 13],
21642                 loc: {
21643                     start: { line: 1, column: 2 },
21644                     end: { line: 1, column: 13 }
21645                 }
21646             }, {
21647                 type: 'ExpressionStatement',
21648                 expression: {
21649                     type: 'Identifier',
21650                     name: 'error',
21651                     range: [14, 19],
21652                     loc: {
21653                         start: { line: 2, column: 0 },
21654                         end: { line: 2, column: 5 }
21655                     }
21656                 },
21657                 range: [14, 20],
21658                 loc: {
21659                     start: { line: 2, column: 0 },
21660                     end: { line: 2, column: 6 }
21661                 }
21662             }],
21663             range: [0, 22],
21664             loc: {
21665                 start: { line: 1, column: 0 },
21666                 end: { line: 2, column: 8 }
21667             }
21668         },
21669
21670         '{ throw error// Comment\nerror; }': {
21671             type: 'BlockStatement',
21672             body: [{
21673                 type: 'ThrowStatement',
21674                 argument: {
21675                     type: 'Identifier',
21676                     name: 'error',
21677                     range: [8, 13],
21678                     loc: {
21679                         start: { line: 1, column: 8 },
21680                         end: { line: 1, column: 13 }
21681                     }
21682                 },
21683                 range: [2, 13],
21684                 loc: {
21685                     start: { line: 1, column: 2 },
21686                     end: { line: 1, column: 13 }
21687                 }
21688             }, {
21689                 type: 'ExpressionStatement',
21690                 expression: {
21691                     type: 'Identifier',
21692                     name: 'error',
21693                     range: [24, 29],
21694                     loc: {
21695                         start: { line: 2, column: 0 },
21696                         end: { line: 2, column: 5 }
21697                     }
21698                 },
21699                 range: [24, 30],
21700                 loc: {
21701                     start: { line: 2, column: 0 },
21702                     end: { line: 2, column: 6 }
21703                 }
21704             }],
21705             range: [0, 32],
21706             loc: {
21707                 start: { line: 1, column: 0 },
21708                 end: { line: 2, column: 8 }
21709             }
21710         },
21711
21712         '{ throw error/* Multiline\nComment */error; }': {
21713             type: 'BlockStatement',
21714             body: [{
21715                 type: 'ThrowStatement',
21716                 argument: {
21717                     type: 'Identifier',
21718                     name: 'error',
21719                     range: [8, 13],
21720                     loc: {
21721                         start: { line: 1, column: 8 },
21722                         end: { line: 1, column: 13 }
21723                     }
21724                 },
21725                 range: [2, 13],
21726                 loc: {
21727                     start: { line: 1, column: 2 },
21728                     end: { line: 1, column: 13 }
21729                 }
21730             }, {
21731                 type: 'ExpressionStatement',
21732                 expression: {
21733                     type: 'Identifier',
21734                     name: 'error',
21735                     range: [36, 41],
21736                     loc: {
21737                         start: { line: 2, column: 10 },
21738                         end: { line: 2, column: 15 }
21739                     }
21740                 },
21741                 range: [36, 42],
21742                 loc: {
21743                     start: { line: 2, column: 10 },
21744                     end: { line: 2, column: 16 }
21745                 }
21746             }],
21747             range: [0, 44],
21748             loc: {
21749                 start: { line: 1, column: 0 },
21750                 end: { line: 2, column: 18 }
21751             }
21752         }
21753
21754     },
21755
21756     'Directive Prolog': {
21757
21758         '(function () { \'use\\x20strict\'; with (i); }())': {
21759             type: 'ExpressionStatement',
21760             expression: {
21761                 type: 'CallExpression',
21762                 callee: {
21763                     type: 'FunctionExpression',
21764                     id: null,
21765                     params: [],
21766                     defaults: [],
21767                     body: {
21768                         type: 'BlockStatement',
21769                         body: [{
21770                             type: 'ExpressionStatement',
21771                             expression: {
21772                                 type: 'Literal',
21773                                 value: 'use strict',
21774                                 raw: '\'use\\x20strict\'',
21775                                 range: [15, 30],
21776                                 loc: {
21777                                     start: { line: 1, column: 15 },
21778                                     end: { line: 1, column: 30 }
21779                                 }
21780                             },
21781                             range: [15, 31],
21782                             loc: {
21783                                 start: { line: 1, column: 15 },
21784                                 end: { line: 1, column: 31 }
21785                             }
21786                         }, {
21787                             type: 'WithStatement',
21788                             object: {
21789                                 type: 'Identifier',
21790                                 name: 'i',
21791                                 range: [38, 39],
21792                                 loc: {
21793                                     start: { line: 1, column: 38 },
21794                                     end: { line: 1, column: 39 }
21795                                 }
21796                             },
21797                             body: {
21798                                 type: 'EmptyStatement',
21799                                 range: [40, 41],
21800                                 loc: {
21801                                     start: { line: 1, column: 40 },
21802                                     end: { line: 1, column: 41 }
21803                                 }
21804                             },
21805                             range: [32, 41],
21806                             loc: {
21807                                 start: { line: 1, column: 32 },
21808                                 end: { line: 1, column: 41 }
21809                             }
21810                         }],
21811                         range: [13, 43],
21812                         loc: {
21813                             start: { line: 1, column: 13 },
21814                             end: { line: 1, column: 43 }
21815                         }
21816                     },
21817                     rest: null,
21818                     generator: false,
21819                     expression: false,
21820                     range: [1, 43],
21821                     loc: {
21822                         start: { line: 1, column: 1 },
21823                         end: { line: 1, column: 43 }
21824                     }
21825                 },
21826                 'arguments': [],
21827                 range: [1, 45],
21828                 loc: {
21829                     start: { line: 1, column: 1 },
21830                     end: { line: 1, column: 45 }
21831                 }
21832             },
21833             range: [0, 46],
21834             loc: {
21835                 start: { line: 1, column: 0 },
21836                 end: { line: 1, column: 46 }
21837             }
21838         },
21839
21840         '(function () { \'use\\nstrict\'; with (i); }())': {
21841             type: 'ExpressionStatement',
21842             expression: {
21843                 type: 'CallExpression',
21844                 callee: {
21845                     type: 'FunctionExpression',
21846                     id: null,
21847                     params: [],
21848                     defaults: [],
21849                     body: {
21850                         type: 'BlockStatement',
21851                         body: [{
21852                             type: 'ExpressionStatement',
21853                             expression: {
21854                                 type: 'Literal',
21855                                 value: 'use\nstrict',
21856                                 raw: '\'use\\nstrict\'',
21857                                 range: [15, 28],
21858                                 loc: {
21859                                     start: { line: 1, column: 15 },
21860                                     end: { line: 1, column: 28 }
21861                                 }
21862                             },
21863                             range: [15, 29],
21864                             loc: {
21865                                 start: { line: 1, column: 15 },
21866                                 end: { line: 1, column: 29 }
21867                             }
21868                         }, {
21869                             type: 'WithStatement',
21870                             object: {
21871                                 type: 'Identifier',
21872                                 name: 'i',
21873                                 range: [36, 37],
21874                                 loc: {
21875                                     start: { line: 1, column: 36 },
21876                                     end: { line: 1, column: 37 }
21877                                 }
21878                             },
21879                             body: {
21880                                 type: 'EmptyStatement',
21881                                 range: [38, 39],
21882                                 loc: {
21883                                     start: { line: 1, column: 38 },
21884                                     end: { line: 1, column: 39 }
21885                                 }
21886                             },
21887                             range: [30, 39],
21888                             loc: {
21889                                 start: { line: 1, column: 30 },
21890                                 end: { line: 1, column: 39 }
21891                             }
21892                         }],
21893                         range: [13, 41],
21894                         loc: {
21895                             start: { line: 1, column: 13 },
21896                             end: { line: 1, column: 41 }
21897                         }
21898                     },
21899                     rest: null,
21900                     generator: false,
21901                     expression: false,
21902                     range: [1, 41],
21903                     loc: {
21904                         start: { line: 1, column: 1 },
21905                         end: { line: 1, column: 41 }
21906                     }
21907                 },
21908                 'arguments': [],
21909                 range: [1, 43],
21910                 loc: {
21911                     start: { line: 1, column: 1 },
21912                     end: { line: 1, column: 43 }
21913                 }
21914             },
21915             range: [0, 44],
21916             loc: {
21917                 start: { line: 1, column: 0 },
21918                 end: { line: 1, column: 44 }
21919             }
21920         }
21921
21922     },
21923
21924     'Whitespace': {
21925
21926         'new\x20\x09\x0B\x0C\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFFa': {
21927             type: 'ExpressionStatement',
21928             expression: {
21929                 type: 'NewExpression',
21930                 callee: {
21931                     type: 'Identifier',
21932                     name: 'a',
21933                     range: [25, 26],
21934                     loc: {
21935                         start: {line: 1, column: 25},
21936                         end: {line: 1, column: 26}
21937                     }
21938                 },
21939                 arguments: [],
21940                 range: [0, 26],
21941                 loc: {
21942                     start: {line: 1, column: 0},
21943                     end: {line: 1, column: 26}
21944                 }
21945             },
21946             range: [0, 26],
21947             loc: {
21948                 start: {line: 1, column: 0},
21949                 end: {line: 1, column: 26}
21950             }
21951         },
21952
21953         '{0\x0A1\x0D2\u20283\u20294}': {
21954             type: 'BlockStatement',
21955             body: [
21956                 {
21957                     type: 'ExpressionStatement',
21958                     expression: {
21959                         type: 'Literal',
21960                         value: 0,
21961                         raw: '0',
21962                         range: [1, 2],
21963                         loc: {
21964                             start: {line: 1, column: 1},
21965                             end: {line: 1, column: 2}
21966                         }
21967                     },
21968                     range: [1, 2],
21969                     loc: {
21970                         start: {line: 1, column: 1},
21971                         end: {line: 1, column: 2}
21972                     }
21973                 },
21974                 {
21975                     type: 'ExpressionStatement',
21976                     expression: {
21977                         type: 'Literal',
21978                         value: 1,
21979                         raw: '1',
21980                         range: [3, 4],
21981                         loc: {
21982                             start: {line: 2, column: 0},
21983                             end: {line: 2, column: 1}
21984                         }
21985                     },
21986                     range: [3, 4],
21987                     loc: {
21988                         start: {line: 2, column: 0},
21989                         end: {line: 2, column: 1}
21990                     }
21991                 },
21992                 {
21993                     type: 'ExpressionStatement',
21994                     expression: {
21995                         type: 'Literal',
21996                         value: 2,
21997                         raw: '2',
21998                         range: [5, 6],
21999                         loc: {
22000                             start: {line: 3, column: 0},
22001                             end: {line: 3, column: 1}
22002                         }
22003                     },
22004                     range: [5, 6],
22005                     loc: {
22006                         start: {line: 3, column: 0},
22007                         end: {line: 3, column: 1}
22008                     }
22009                 },
22010                 {
22011                     type: 'ExpressionStatement',
22012                     expression: {
22013                         type: 'Literal',
22014                         value: 3,
22015                         raw: '3',
22016                         range: [7, 8],
22017                         loc: {
22018                             start: {line: 4, column: 0},
22019                             end: {line: 4, column: 1}
22020                         }
22021                     },
22022                     range: [7, 8],
22023                     loc: {
22024                         start: {line: 4, column: 0},
22025                         end: {line: 4, column: 1}
22026                     }
22027                 },
22028                 {
22029                     type: 'ExpressionStatement',
22030                     expression: {
22031                         type: 'Literal',
22032                         value: 4,
22033                         raw: '4',
22034                         range: [9, 10],
22035                         loc: {
22036                             start: {line: 5, column: 0},
22037                             end: {line: 5, column: 1}
22038                         }
22039                     },
22040                     range: [9, 10],
22041                     loc: {
22042                         start: {line: 5, column: 0},
22043                         end: {line: 5, column: 1}
22044                     }
22045                 }
22046             ],
22047             range: [0, 11],
22048             loc: {
22049                 start: {line: 1, column: 0},
22050                 end: {line: 5, column: 2}
22051             }
22052         }
22053
22054     },
22055
22056     'Source elements': {
22057
22058         '': {
22059             type: 'Program',
22060             body: [],
22061             range: [0, 0],
22062             loc: {
22063                 start: { line: 0, column: 0 },
22064                 end: { line: 0, column: 0 }
22065             },
22066             tokens: []
22067         }
22068     },
22069
22070     'Source option': {
22071         'x + y - z': {
22072             type: 'ExpressionStatement',
22073             expression: {
22074                 type: 'BinaryExpression',
22075                 operator: '-',
22076                 left: {
22077                     type: 'BinaryExpression',
22078                     operator: '+',
22079                     left: {
22080                         type: 'Identifier',
22081                         name: 'x',
22082                         range: [0, 1],
22083                         loc: {
22084                             start: { line: 1, column: 0 },
22085                             end: { line: 1, column: 1 },
22086                             source: '42.js'
22087                         }
22088                     },
22089                     right: {
22090                         type: 'Identifier',
22091                         name: 'y',
22092                         range: [4, 5],
22093                         loc: {
22094                             start: { line: 1, column: 4 },
22095                             end: { line: 1, column: 5 },
22096                             source: '42.js'
22097                         }
22098                     },
22099                     range: [0, 5],
22100                     loc: {
22101                         start: { line: 1, column: 0 },
22102                         end: { line: 1, column: 5 },
22103                         source: '42.js'
22104                     }
22105                 },
22106                 right: {
22107                     type: 'Identifier',
22108                     name: 'z',
22109                     range: [8, 9],
22110                     loc: {
22111                         start: { line: 1, column: 8 },
22112                         end: { line: 1, column: 9 },
22113                         source: '42.js'
22114                     }
22115                 },
22116                 range: [0, 9],
22117                 loc: {
22118                     start: { line: 1, column: 0 },
22119                     end: { line: 1, column: 9 },
22120                     source: '42.js'
22121                 }
22122             },
22123             range: [0, 9],
22124             loc: {
22125                 start: { line: 1, column: 0 },
22126                 end: { line: 1, column: 9 },
22127                 source: '42.js'
22128             }
22129         },
22130
22131         'a + (b < (c * d)) + e': {
22132             type: 'ExpressionStatement',
22133             expression: {
22134                 type: 'BinaryExpression',
22135                 operator: '+',
22136                 left: {
22137                     type: 'BinaryExpression',
22138                     operator: '+',
22139                     left: {
22140                         type: 'Identifier',
22141                         name: 'a',
22142                         range: [0, 1],
22143                         loc: {
22144                             start: { line: 1, column: 0 },
22145                             end: { line: 1, column: 1 },
22146                             source: '42.js'
22147                         }
22148                     },
22149                     right: {
22150                         type: 'BinaryExpression',
22151                         operator: '<',
22152                         left: {
22153                             type: 'Identifier',
22154                             name: 'b',
22155                             range: [5, 6],
22156                             loc: {
22157                                 start: { line: 1, column: 5 },
22158                                 end: { line: 1, column: 6 },
22159                                 source: '42.js'
22160                             }
22161                         },
22162                         right: {
22163                             type: 'BinaryExpression',
22164                             operator: '*',
22165                             left: {
22166                                 type: 'Identifier',
22167                                 name: 'c',
22168                                 range: [10, 11],
22169                                 loc: {
22170                                     start: { line: 1, column: 10 },
22171                                     end: { line: 1, column: 11 },
22172                                     source: '42.js'
22173                                 }
22174                             },
22175                             right: {
22176                                 type: 'Identifier',
22177                                 name: 'd',
22178                                 range: [14, 15],
22179                                 loc: {
22180                                     start: { line: 1, column: 14 },
22181                                     end: { line: 1, column: 15 },
22182                                     source: '42.js'
22183                                 }
22184                             },
22185                             range: [10, 15],
22186                             loc: {
22187                                 start: { line: 1, column: 10 },
22188                                 end: { line: 1, column: 15 },
22189                                 source: '42.js'
22190                             }
22191                         },
22192                         range: [5, 16],
22193                         loc: {
22194                             start: { line: 1, column: 5 },
22195                             end: { line: 1, column: 16 },
22196                             source: '42.js'
22197                         }
22198                     },
22199                     range: [0, 17],
22200                     loc: {
22201                         start: { line: 1, column: 0 },
22202                         end: { line: 1, column: 17 },
22203                         source: '42.js'
22204                     }
22205                 },
22206                 right: {
22207                     type: 'Identifier',
22208                     name: 'e',
22209                     range: [20, 21],
22210                     loc: {
22211                         start: { line: 1, column: 20 },
22212                         end: { line: 1, column: 21 },
22213                         source: '42.js'
22214                     }
22215                 },
22216                 range: [0, 21],
22217                 loc: {
22218                     start: { line: 1, column: 0 },
22219                     end: { line: 1, column: 21 },
22220                     source: '42.js'
22221                 }
22222             },
22223             range: [0, 21],
22224             loc: {
22225                 start: { line: 1, column: 0 },
22226                 end: { line: 1, column: 21 },
22227                 source: '42.js'
22228             }
22229         }
22230
22231     },
22232
22233
22234     'Invalid syntax': {
22235
22236         '{': {
22237             index: 1,
22238             lineNumber: 1,
22239             column: 2,
22240             message: 'Error: Line 1: Unexpected end of input'
22241         },
22242
22243         '}': {
22244             index: 0,
22245             lineNumber: 1,
22246             column: 1,
22247             message: 'Error: Line 1: Unexpected token }'
22248         },
22249
22250         '3ea': {
22251             index: 2,
22252             lineNumber: 1,
22253             column: 3,
22254             message: 'Error: Line 1: Unexpected token ILLEGAL'
22255         },
22256
22257         '3in []': {
22258             index: 1,
22259             lineNumber: 1,
22260             column: 2,
22261             message: 'Error: Line 1: Unexpected token ILLEGAL'
22262         },
22263
22264         '3e': {
22265             index: 2,
22266             lineNumber: 1,
22267             column: 3,
22268             message: 'Error: Line 1: Unexpected token ILLEGAL'
22269         },
22270
22271         '3e+': {
22272             index: 3,
22273             lineNumber: 1,
22274             column: 4,
22275             message: 'Error: Line 1: Unexpected token ILLEGAL'
22276         },
22277
22278         '3e-': {
22279             index: 3,
22280             lineNumber: 1,
22281             column: 4,
22282             message: 'Error: Line 1: Unexpected token ILLEGAL'
22283         },
22284
22285         '3x': {
22286             index: 1,
22287             lineNumber: 1,
22288             column: 2,
22289             message: 'Error: Line 1: Unexpected token ILLEGAL'
22290         },
22291
22292         '3x0': {
22293             index: 1,
22294             lineNumber: 1,
22295             column: 2,
22296             message: 'Error: Line 1: Unexpected token ILLEGAL'
22297         },
22298
22299         '0x': {
22300             index: 2,
22301             lineNumber: 1,
22302             column: 3,
22303             message: 'Error: Line 1: Unexpected token ILLEGAL'
22304         },
22305
22306         '01a': {
22307             index: 2,
22308             lineNumber: 1,
22309             column: 3,
22310             message: 'Error: Line 1: Unexpected token ILLEGAL'
22311         },
22312
22313         '0o1a': {
22314             index: 3,
22315             lineNumber: 1,
22316             column: 4,
22317             message: 'Error: Line 1: Unexpected token ILLEGAL'
22318         },
22319
22320         '0o': {
22321             index: 2,
22322             lineNumber: 1,
22323             column: 3,
22324             message: 'Error: Line 1: Unexpected token ILLEGAL'
22325         },
22326
22327         '0O': {
22328             index: 2,
22329             lineNumber: 1,
22330             column: 3,
22331             message: 'Error: Line 1: Unexpected token ILLEGAL'
22332         },
22333
22334         '0o9': {
22335             index: 2,
22336             lineNumber: 1,
22337             column: 3,
22338             message: 'Error: Line 1: Unexpected token ILLEGAL'
22339         },
22340
22341         '0o18': {
22342             index: 3,
22343             lineNumber: 1,
22344             column: 4,
22345             message: 'Error: Line 1: Unexpected token ILLEGAL'
22346         },
22347
22348         '0O1a': {
22349             index: 3,
22350             lineNumber: 1,
22351             column: 4,
22352             message: 'Error: Line 1: Unexpected token ILLEGAL'
22353         },
22354
22355         '0b': {
22356             index: 2,
22357             lineNumber: 1,
22358             column: 3,
22359             message: 'Error: Line 1: Unexpected token ILLEGAL'
22360         },
22361
22362         '0b1a': {
22363             index: 3,
22364             lineNumber: 1,
22365             column: 4,
22366             message: 'Error: Line 1: Unexpected token ILLEGAL'
22367         },
22368
22369         '0b9': {
22370             index: 2,
22371             lineNumber: 1,
22372             column: 3,
22373             message: 'Error: Line 1: Unexpected token ILLEGAL'
22374         },
22375
22376         '0b18': {
22377             index: 3,
22378             lineNumber: 1,
22379             column: 4,
22380             message: 'Error: Line 1: Unexpected token ILLEGAL'
22381         },
22382
22383         '0b12': {
22384             index: 3,
22385             lineNumber: 1,
22386             column: 4,
22387             message: 'Error: Line 1: Unexpected token ILLEGAL'
22388         },
22389
22390         '0B': {
22391             index: 2,
22392             lineNumber: 1,
22393             column: 3,
22394             message: 'Error: Line 1: Unexpected token ILLEGAL'
22395         },
22396
22397         '0B1a': {
22398             index: 3,
22399             lineNumber: 1,
22400             column: 4,
22401             message: 'Error: Line 1: Unexpected token ILLEGAL'
22402         },
22403
22404         '0B9': {
22405             index: 2,
22406             lineNumber: 1,
22407             column: 3,
22408             message: 'Error: Line 1: Unexpected token ILLEGAL'
22409         },
22410
22411         '0B18': {
22412             index: 3,
22413             lineNumber: 1,
22414             column: 4,
22415             message: 'Error: Line 1: Unexpected token ILLEGAL'
22416         },
22417
22418         '0B12': {
22419             index: 3,
22420             lineNumber: 1,
22421             column: 4,
22422             message: 'Error: Line 1: Unexpected token ILLEGAL'
22423         },
22424
22425         '0O9': {
22426             index: 2,
22427             lineNumber: 1,
22428             column: 3,
22429             message: 'Error: Line 1: Unexpected token ILLEGAL'
22430         },
22431
22432         '0O18': {
22433             index: 3,
22434             lineNumber: 1,
22435             column: 4,
22436             message: 'Error: Line 1: Unexpected token ILLEGAL'
22437         },
22438
22439         '3in[]': {
22440             index: 1,
22441             lineNumber: 1,
22442             column: 2,
22443             message: 'Error: Line 1: Unexpected token ILLEGAL'
22444         },
22445
22446         '0x3in[]': {
22447             index: 3,
22448             lineNumber: 1,
22449             column: 4,
22450             message: 'Error: Line 1: Unexpected token ILLEGAL'
22451         },
22452
22453         '"Hello\nWorld"': {
22454             index: 7,
22455             lineNumber: 1,
22456             column: 8,
22457             message: 'Error: Line 1: Unexpected token ILLEGAL'
22458         },
22459
22460         'x\\': {
22461             index: 2,
22462             lineNumber: 1,
22463             column: 3,
22464             message: 'Error: Line 1: Unexpected token ILLEGAL'
22465         },
22466
22467         'x\\u005c': {
22468             index: 7,
22469             lineNumber: 1,
22470             column: 8,
22471             message: 'Error: Line 1: Unexpected token ILLEGAL'
22472         },
22473
22474         'x\\u002a': {
22475             index: 7,
22476             lineNumber: 1,
22477             column: 8,
22478             message: 'Error: Line 1: Unexpected token ILLEGAL'
22479         },
22480
22481         'var x = /(s/g': {
22482             index: 13,
22483             lineNumber: 1,
22484             column: 14,
22485             message: 'Error: Line 1: Invalid regular expression'
22486         },
22487
22488         'a\\u': {
22489             index: 3,
22490             lineNumber: 1,
22491             column: 4,
22492             message: 'Error: Line 1: Unexpected token ILLEGAL'
22493         },
22494
22495         '\\ua': {
22496             index: 3,
22497             lineNumber: 1,
22498             column: 4,
22499             message: 'Error: Line 1: Unexpected token ILLEGAL'
22500         },
22501
22502         '/': {
22503             index: 1,
22504             lineNumber: 1,
22505             column: 2,
22506             message: 'Error: Line 1: Invalid regular expression: missing /'
22507         },
22508
22509         '/test': {
22510             index: 5,
22511             lineNumber: 1,
22512             column: 6,
22513             message: 'Error: Line 1: Invalid regular expression: missing /'
22514         },
22515
22516         '/test\n/': {
22517             index: 6,
22518             lineNumber: 1,
22519             column: 7,
22520             message: 'Error: Line 1: Invalid regular expression: missing /'
22521         },
22522
22523         'var x = /[a-z]/\\ux': {
22524             index: 17,
22525             lineNumber: 1,
22526             column: 18,
22527             message: 'Error: Line 1: Unexpected token ILLEGAL'
22528         },
22529
22530         'var x = /[a-z\n]/\\ux': {
22531             index: 14,
22532             lineNumber: 1,
22533             column: 15,
22534             message: 'Error: Line 1: Invalid regular expression: missing /'
22535         },
22536
22537         'var x = /[a-z]/\\\\ux': {
22538             index: 16,
22539             lineNumber: 1,
22540             column: 17,
22541             message: 'Error: Line 1: Unexpected token ILLEGAL'
22542         },
22543
22544         'var x = /[P QR]/\\\\u0067': {
22545             index: 17,
22546             lineNumber: 1,
22547             column: 18,
22548             message: 'Error: Line 1: Unexpected token ILLEGAL'
22549         },
22550
22551         '3 = 4': {
22552             index: 1,
22553             lineNumber: 1,
22554             column: 2,
22555             message: 'Error: Line 1: Invalid left-hand side in assignment'
22556         },
22557
22558         'func() = 4': {
22559             index: 6,
22560             lineNumber: 1,
22561             column: 7,
22562             message: 'Error: Line 1: Invalid left-hand side in assignment'
22563         },
22564
22565         '(1 + 1) = 10': {
22566             index: 7,
22567             lineNumber: 1,
22568             column: 8,
22569             message: 'Error: Line 1: Invalid left-hand side in assignment'
22570         },
22571
22572         '"\\u{110000}"': {
22573             index: 11,
22574             lineNumber: 1,
22575             column: 12,
22576             message: 'Error: Line 1: Unexpected token ILLEGAL'
22577         },
22578
22579         '"\\u{}"': {
22580             index: 4,
22581             lineNumber: 1,
22582             column: 5,
22583             message: 'Error: Line 1: Unexpected token ILLEGAL'
22584         },
22585
22586         '"\\u{FFFF"': {
22587             index: 9,
22588             lineNumber: 1,
22589             column: 10,
22590             message: 'Error: Line 1: Unexpected token ILLEGAL'
22591         },
22592
22593         '"\\u{FFZ}"': {
22594             index: 7,
22595             lineNumber: 1,
22596             column: 8,
22597             message: 'Error: Line 1: Unexpected token ILLEGAL'
22598         },
22599
22600         '1++': {
22601             index: 1,
22602             lineNumber: 1,
22603             column: 2,
22604             message: 'Error: Line 1: Invalid left-hand side in assignment'
22605         },
22606
22607         '1--': {
22608             index: 1,
22609             lineNumber: 1,
22610             column: 2,
22611             message: 'Error: Line 1: Invalid left-hand side in assignment'
22612         },
22613
22614         '++1': {
22615             index: 3,
22616             lineNumber: 1,
22617             column: 4,
22618             message: 'Error: Line 1: Invalid left-hand side in assignment'
22619         },
22620
22621         '--1': {
22622             index: 3,
22623             lineNumber: 1,
22624             column: 4,
22625             message: 'Error: Line 1: Invalid left-hand side in assignment'
22626         },
22627
22628         'for((1 + 1) in list) process(x);': {
22629             index: 11,
22630             lineNumber: 1,
22631             column: 12,
22632             message: 'Error: Line 1: Invalid left-hand side in for-in'
22633         },
22634
22635         '[': {
22636             index: 1,
22637             lineNumber: 1,
22638             column: 2,
22639             message: 'Error: Line 1: Unexpected end of input'
22640         },
22641
22642         '[,': {
22643             index: 2,
22644             lineNumber: 1,
22645             column: 3,
22646             message: 'Error: Line 1: Unexpected end of input'
22647         },
22648
22649         '1 + {': {
22650             index: 5,
22651             lineNumber: 1,
22652             column: 6,
22653             message: 'Error: Line 1: Unexpected end of input'
22654         },
22655
22656         '1 + { t:t ': {
22657             index: 10,
22658             lineNumber: 1,
22659             column: 11,
22660             message: 'Error: Line 1: Unexpected end of input'
22661         },
22662
22663         '1 + { t:t,': {
22664             index: 10,
22665             lineNumber: 1,
22666             column: 11,
22667             message: 'Error: Line 1: Unexpected end of input'
22668         },
22669
22670         'var x = /\n/': {
22671             index: 10,
22672             lineNumber: 1,
22673             column: 11,
22674             message: 'Error: Line 1: Invalid regular expression: missing /'
22675         },
22676
22677         'var x = "\n': {
22678             index: 10,
22679             lineNumber: 1,
22680             column: 11,
22681             message: 'Error: Line 1: Unexpected token ILLEGAL'
22682         },
22683
22684         'var if = 42': {
22685             index: 4,
22686             lineNumber: 1,
22687             column: 5,
22688             message: 'Error: Line 1: Unexpected token if'
22689         },
22690
22691         'i #= 42': {
22692             index: 2,
22693             lineNumber: 1,
22694             column: 3,
22695             message: 'Error: Line 1: Unexpected token ILLEGAL'
22696         },
22697
22698         'i + 2 = 42': {
22699             index: 5,
22700             lineNumber: 1,
22701             column: 6,
22702             message: 'Error: Line 1: Invalid left-hand side in assignment'
22703         },
22704
22705         '+i = 42': {
22706             index: 2,
22707             lineNumber: 1,
22708             column: 3,
22709             message: 'Error: Line 1: Invalid left-hand side in assignment'
22710         },
22711
22712         '1 + (': {
22713             index: 5,
22714             lineNumber: 1,
22715             column: 6,
22716             message: 'Error: Line 1: Unexpected end of input'
22717         },
22718
22719         '\n\n\n{': {
22720             index: 4,
22721             lineNumber: 4,
22722             column: 2,
22723             message: 'Error: Line 4: Unexpected end of input'
22724         },
22725
22726         '\n/* Some multiline\ncomment */\n)': {
22727             index: 30,
22728             lineNumber: 4,
22729             column: 1,
22730             message: 'Error: Line 4: Unexpected token )'
22731         },
22732
22733         '{ set 1 }': {
22734             index: 6,
22735             lineNumber: 1,
22736             column: 7,
22737             message: 'Error: Line 1: Unexpected number'
22738         },
22739
22740         '{ get 2 }': {
22741             index: 6,
22742             lineNumber: 1,
22743             column: 7,
22744             message: 'Error: Line 1: Unexpected number'
22745         },
22746
22747         '({ set: s(if) { } })': {
22748             index: 10,
22749             lineNumber: 1,
22750             column: 11,
22751             message: 'Error: Line 1: Unexpected token if'
22752         },
22753
22754         '({ set s(.) { } })': {
22755             index: 9,
22756             lineNumber: 1,
22757             column: 10,
22758             message: 'Error: Line 1: Unexpected token .'
22759         },
22760
22761         '({ set s() { } })': {
22762             index: 9,
22763             lineNumber: 1,
22764             column: 10,
22765             message: 'Error: Line 1: Unexpected token )'
22766         },
22767
22768         '({ set: s() { } })': {
22769             index: 12,
22770             lineNumber: 1,
22771             column: 13,
22772             message: 'Error: Line 1: Unexpected token {'
22773         },
22774
22775         '({ set: s(a, b) { } })': {
22776             index: 16,
22777             lineNumber: 1,
22778             column: 17,
22779             message: 'Error: Line 1: Unexpected token {'
22780         },
22781
22782         '({ get: g(d) { } })': {
22783             index: 13,
22784             lineNumber: 1,
22785             column: 14,
22786             message: 'Error: Line 1: Unexpected token {'
22787         },
22788
22789         '({ get i() { }, i: 42 })': {
22790             index: 21,
22791             lineNumber: 1,
22792             column: 22,
22793             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
22794         },
22795
22796         '({ i: 42, get i() { } })': {
22797             index: 21,
22798             lineNumber: 1,
22799             column: 22,
22800             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
22801         },
22802
22803         '({ set i(x) { }, i: 42 })': {
22804             index: 22,
22805             lineNumber: 1,
22806             column: 23,
22807             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
22808         },
22809
22810         '({ i: 42, set i(x) { } })': {
22811             index: 22,
22812             lineNumber: 1,
22813             column: 23,
22814             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
22815         },
22816
22817         '({ get i() { }, get i() { } })': {
22818             index: 27,
22819             lineNumber: 1,
22820             column: 28,
22821             message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
22822         },
22823
22824         '({ set i(x) { }, set i(x) { } })': {
22825             index: 29,
22826             lineNumber: 1,
22827             column: 30,
22828             message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
22829         },
22830
22831         '((a)) => 42': {
22832             index: 6,
22833             lineNumber: 1,
22834             column: 7,
22835             message: 'Error: Line 1: Unexpected token =>'
22836         },
22837
22838         '(a, (b)) => 42': {
22839             index: 9,
22840             lineNumber: 1,
22841             column: 10,
22842             message: 'Error: Line 1: Unexpected token =>'
22843         },
22844
22845         '"use strict"; (eval = 10) => 42': {
22846             index: 15,
22847             lineNumber: 1,
22848             column: 16,
22849             message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
22850         },
22851
22852         // strict mode, using eval when IsSimpleParameterList is true
22853         '"use strict"; eval => 42': {
22854             index: 24,
22855             lineNumber: 1,
22856             column: 25,
22857             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
22858         },
22859
22860         // strict mode, using arguments when IsSimpleParameterList is true
22861         '"use strict"; arguments => 42': {
22862             index: 29,
22863             lineNumber: 1,
22864             column: 30,
22865             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
22866         },
22867
22868         // strict mode, using eval when IsSimpleParameterList is true
22869         '"use strict"; (eval, a) => 42': {
22870             index: 29,
22871             lineNumber: 1,
22872             column: 30,
22873             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
22874         },
22875
22876         // strict mode, using arguments when IsSimpleParameterList is true
22877         '"use strict"; (arguments, a) => 42': {
22878             index: 34,
22879             lineNumber: 1,
22880             column: 35,
22881             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
22882         },
22883
22884         '(a, a) => 42': {
22885             index: 6,
22886             lineNumber: 1,
22887             column: 7,
22888             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
22889         },
22890
22891         '"use strict"; (a, a) => 42': {
22892             index: 20,
22893             lineNumber: 1,
22894             column: 21,
22895             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
22896         },
22897
22898         '"use strict"; (a) => 00': {
22899             index: 21,
22900             lineNumber: 1,
22901             column: 22,
22902             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
22903         },
22904
22905         '() <= 42': {
22906             index: 3,
22907             lineNumber: 1,
22908             column: 4,
22909             message: 'Error: Line 1: Unexpected token <='
22910         },
22911
22912         '() ? 42': {
22913             index: 3,
22914             lineNumber: 1,
22915             column: 4,
22916             message: 'Error: Line 1: Unexpected token ?'
22917         },
22918
22919         '() + 42': {
22920             index: 3,
22921             lineNumber: 1,
22922             column: 4,
22923             message: 'Error: Line 1: Unexpected token +'
22924         },
22925
22926         '(10) => 00': {
22927             index: 5,
22928             lineNumber: 1,
22929             column: 6,
22930             message: 'Error: Line 1: Unexpected token =>'
22931         },
22932
22933         '(10, 20) => 00': {
22934             index: 9,
22935             lineNumber: 1,
22936             column: 10,
22937             message: 'Error: Line 1: Unexpected token =>'
22938         },
22939
22940         '"use strict"; (eval) => 42': {
22941             index: 26,
22942             lineNumber: 1,
22943             column: 27,
22944             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
22945         },
22946
22947         '(eval) => { "use strict"; 42 }': {
22948             index: 30,
22949             lineNumber: 1,
22950             column: 31,
22951             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
22952         },
22953
22954         'p = { q/ }': {
22955             index: 7,
22956             lineNumber: 1,
22957             column: 8,
22958             message: 'Error: Line 1: Unexpected token /'
22959         },
22960
22961         'p = { "q"/ }': {
22962             index: 9,
22963             lineNumber: 1,
22964             column: 10,
22965             message: 'Error: Line 1: Unexpected token /'
22966         },
22967
22968         'function t(if) { }': {
22969             index: 11,
22970             lineNumber: 1,
22971             column: 12,
22972             message: 'Error: Line 1: Unexpected token if'
22973         },
22974
22975         'function t(true) { }': {
22976             index: 11,
22977             lineNumber: 1,
22978             column: 12,
22979             message: 'Error: Line 1: Unexpected token true'
22980         },
22981
22982         'function t(false) { }': {
22983             index: 11,
22984             lineNumber: 1,
22985             column: 12,
22986             message: 'Error: Line 1: Unexpected token false'
22987         },
22988
22989         'function t(null) { }': {
22990             index: 11,
22991             lineNumber: 1,
22992             column: 12,
22993             message: 'Error: Line 1: Unexpected token null'
22994         },
22995
22996         'function null() { }': {
22997             index: 9,
22998             lineNumber: 1,
22999             column: 10,
23000             message: 'Error: Line 1: Unexpected token null'
23001         },
23002
23003         'function true() { }': {
23004             index: 9,
23005             lineNumber: 1,
23006             column: 10,
23007             message: 'Error: Line 1: Unexpected token true'
23008         },
23009
23010         'function false() { }': {
23011             index: 9,
23012             lineNumber: 1,
23013             column: 10,
23014             message: 'Error: Line 1: Unexpected token false'
23015         },
23016
23017         'function if() { }': {
23018             index: 9,
23019             lineNumber: 1,
23020             column: 10,
23021             message: 'Error: Line 1: Unexpected token if'
23022         },
23023
23024         'a b;': {
23025             index: 2,
23026             lineNumber: 1,
23027             column: 3,
23028             message: 'Error: Line 1: Unexpected identifier'
23029         },
23030
23031         'if.a;': {
23032             index: 2,
23033             lineNumber: 1,
23034             column: 3,
23035             message: 'Error: Line 1: Unexpected token .'
23036         },
23037
23038         'a if;': {
23039             index: 2,
23040             lineNumber: 1,
23041             column: 3,
23042             message: 'Error: Line 1: Unexpected token if'
23043         },
23044
23045         'a class;': {
23046             index: 2,
23047             lineNumber: 1,
23048             column: 3,
23049             message: 'Error: Line 1: Unexpected reserved word'
23050         },
23051
23052         'break\n': {
23053             index: 5,
23054             lineNumber: 1,
23055             column: 6,
23056             message: 'Error: Line 1: Illegal break statement'
23057         },
23058
23059         'break 1;': {
23060             index: 6,
23061             lineNumber: 1,
23062             column: 7,
23063             message: 'Error: Line 1: Unexpected number'
23064         },
23065
23066         'continue\n': {
23067             index: 8,
23068             lineNumber: 1,
23069             column: 9,
23070             message: 'Error: Line 1: Illegal continue statement'
23071         },
23072
23073         'continue 2;': {
23074             index: 9,
23075             lineNumber: 1,
23076             column: 10,
23077             message: 'Error: Line 1: Unexpected number'
23078         },
23079
23080         'throw': {
23081             index: 5,
23082             lineNumber: 1,
23083             column: 6,
23084             message: 'Error: Line 1: Unexpected end of input'
23085         },
23086
23087         'throw;': {
23088             index: 5,
23089             lineNumber: 1,
23090             column: 6,
23091             message: 'Error: Line 1: Unexpected token ;'
23092         },
23093
23094         'throw\n': {
23095             index: 5,
23096             lineNumber: 1,
23097             column: 6,
23098             message: 'Error: Line 1: Illegal newline after throw'
23099         },
23100
23101         'for (var i, i2 in {});': {
23102             index: 15,
23103             lineNumber: 1,
23104             column: 16,
23105             message: 'Error: Line 1: Unexpected token in'
23106         },
23107
23108         'for ((i in {}));': {
23109             index: 14,
23110             lineNumber: 1,
23111             column: 15,
23112             message: 'Error: Line 1: Unexpected token )'
23113         },
23114
23115         'for (i + 1 in {});': {
23116             index: 10,
23117             lineNumber: 1,
23118             column: 11,
23119             message: 'Error: Line 1: Invalid left-hand side in for-in'
23120         },
23121
23122         'for (+i in {});': {
23123             index: 7,
23124             lineNumber: 1,
23125             column: 8,
23126             message: 'Error: Line 1: Invalid left-hand side in for-in'
23127         },
23128
23129         'if(false)': {
23130             index: 9,
23131             lineNumber: 1,
23132             column: 10,
23133             message: 'Error: Line 1: Unexpected end of input'
23134         },
23135
23136         'if(false) doThis(); else': {
23137             index: 24,
23138             lineNumber: 1,
23139             column: 25,
23140             message: 'Error: Line 1: Unexpected end of input'
23141         },
23142
23143         'do': {
23144             index: 2,
23145             lineNumber: 1,
23146             column: 3,
23147             message: 'Error: Line 1: Unexpected end of input'
23148         },
23149
23150         'while(false)': {
23151             index: 12,
23152             lineNumber: 1,
23153             column: 13,
23154             message: 'Error: Line 1: Unexpected end of input'
23155         },
23156
23157         'for(;;)': {
23158             index: 7,
23159             lineNumber: 1,
23160             column: 8,
23161             message: 'Error: Line 1: Unexpected end of input'
23162         },
23163
23164         'with(x)': {
23165             index: 7,
23166             lineNumber: 1,
23167             column: 8,
23168             message: 'Error: Line 1: Unexpected end of input'
23169         },
23170
23171         'try { }': {
23172             index: 7,
23173             lineNumber: 1,
23174             column: 8,
23175             message: 'Error: Line 1: Missing catch or finally after try'
23176         },
23177
23178         'try {} catch (42) {} ': {
23179             index: 14,
23180             lineNumber: 1,
23181             column: 15,
23182             message: 'Error: Line 1: Unexpected number'
23183         },
23184
23185         'try {} catch (answer()) {} ': {
23186             index: 20,
23187             lineNumber: 1,
23188             column: 21,
23189             message: 'Error: Line 1: Unexpected token ('
23190         },
23191
23192         'try {} catch (-x) {} ': {
23193             index: 14,
23194             lineNumber: 1,
23195             column: 15,
23196             message: 'Error: Line 1: Unexpected token -'
23197         },
23198
23199
23200         '\u203F = 10': {
23201             index: 0,
23202             lineNumber: 1,
23203             column: 1,
23204             message: 'Error: Line 1: Unexpected token ILLEGAL'
23205         },
23206
23207         'const x = 12, y;': {
23208             index: 15,
23209             lineNumber: 1,
23210             column: 16,
23211             message: 'Error: Line 1: Unexpected token ;'
23212         },
23213
23214         'const x, y = 12;': {
23215             index: 7,
23216             lineNumber: 1,
23217             column: 8,
23218             message: 'Error: Line 1: Unexpected token ,'
23219         },
23220
23221         'const x;': {
23222             index: 7,
23223             lineNumber: 1,
23224             column: 8,
23225             message: 'Error: Line 1: Unexpected token ;'
23226         },
23227
23228         'if(true) let a = 1;': {
23229             index: 9,
23230             lineNumber: 1,
23231             column: 10,
23232             message: 'Error: Line 1: Unexpected token let'
23233         },
23234
23235         'if(true) const a = 1;': {
23236             index: 9,
23237             lineNumber: 1,
23238             column: 10,
23239             message: 'Error: Line 1: Unexpected token const'
23240         },
23241
23242         'switch (c) { default: default: }': {
23243             index: 30,
23244             lineNumber: 1,
23245             column: 31,
23246             message: 'Error: Line 1: More than one default clause in switch statement'
23247         },
23248
23249         'new X()."s"': {
23250             index: 8,
23251             lineNumber: 1,
23252             column: 9,
23253             message: 'Error: Line 1: Unexpected string'
23254         },
23255
23256         '/*': {
23257             index: 2,
23258             lineNumber: 1,
23259             column: 3,
23260             message: 'Error: Line 1: Unexpected token ILLEGAL'
23261         },
23262
23263         '/*\n\n\n': {
23264             index: 5,
23265             lineNumber: 4,
23266             column: 1,
23267             message: 'Error: Line 4: Unexpected token ILLEGAL'
23268         },
23269
23270         '/**': {
23271             index: 3,
23272             lineNumber: 1,
23273             column: 4,
23274             message: 'Error: Line 1: Unexpected token ILLEGAL'
23275         },
23276
23277         '/*\n\n*': {
23278             index: 5,
23279             lineNumber: 3,
23280             column: 2,
23281             message: 'Error: Line 3: Unexpected token ILLEGAL'
23282         },
23283
23284         '/*hello': {
23285             index: 7,
23286             lineNumber: 1,
23287             column: 8,
23288             message: 'Error: Line 1: Unexpected token ILLEGAL'
23289         },
23290
23291         '/*hello  *': {
23292             index: 10,
23293             lineNumber: 1,
23294             column: 11,
23295             message: 'Error: Line 1: Unexpected token ILLEGAL'
23296         },
23297
23298         '\n]': {
23299             index: 1,
23300             lineNumber: 2,
23301             column: 1,
23302             message: 'Error: Line 2: Unexpected token ]'
23303         },
23304
23305         '\r]': {
23306             index: 1,
23307             lineNumber: 2,
23308             column: 1,
23309             message: 'Error: Line 2: Unexpected token ]'
23310         },
23311
23312         '\r\n]': {
23313             index: 2,
23314             lineNumber: 2,
23315             column: 1,
23316             message: 'Error: Line 2: Unexpected token ]'
23317         },
23318
23319         '\n\r]': {
23320             index: 2,
23321             lineNumber: 3,
23322             column: 1,
23323             message: 'Error: Line 3: Unexpected token ]'
23324         },
23325
23326         '//\r\n]': {
23327             index: 4,
23328             lineNumber: 2,
23329             column: 1,
23330             message: 'Error: Line 2: Unexpected token ]'
23331         },
23332
23333         '//\n\r]': {
23334             index: 4,
23335             lineNumber: 3,
23336             column: 1,
23337             message: 'Error: Line 3: Unexpected token ]'
23338         },
23339
23340         '/a\\\n/': {
23341             index: 4,
23342             lineNumber: 1,
23343             column: 5,
23344             message: 'Error: Line 1: Invalid regular expression: missing /'
23345         },
23346
23347         '//\r \n]': {
23348             index: 5,
23349             lineNumber: 3,
23350             column: 1,
23351             message: 'Error: Line 3: Unexpected token ]'
23352         },
23353
23354         '/*\r\n*/]': {
23355             index: 6,
23356             lineNumber: 2,
23357             column: 3,
23358             message: 'Error: Line 2: Unexpected token ]'
23359         },
23360
23361         '/*\n\r*/]': {
23362             index: 6,
23363             lineNumber: 3,
23364             column: 3,
23365             message: 'Error: Line 3: Unexpected token ]'
23366         },
23367
23368         '/*\r \n*/]': {
23369             index: 7,
23370             lineNumber: 3,
23371             column: 3,
23372             message: 'Error: Line 3: Unexpected token ]'
23373         },
23374
23375         '\\\\': {
23376             index: 1,
23377             lineNumber: 1,
23378             column: 2,
23379             message: 'Error: Line 1: Unexpected token ILLEGAL'
23380         },
23381
23382         '\\u005c': {
23383             index: 6,
23384             lineNumber: 1,
23385             column: 7,
23386             message: 'Error: Line 1: Unexpected token ILLEGAL'
23387         },
23388
23389
23390         '\\x': {
23391             index: 1,
23392             lineNumber: 1,
23393             column: 2,
23394             message: 'Error: Line 1: Unexpected token ILLEGAL'
23395         },
23396
23397         '\\u0000': {
23398             index: 6,
23399             lineNumber: 1,
23400             column: 7,
23401             message: 'Error: Line 1: Unexpected token ILLEGAL'
23402         },
23403
23404         '\u200C = []': {
23405             index: 0,
23406             lineNumber: 1,
23407             column: 1,
23408             message: 'Error: Line 1: Unexpected token ILLEGAL'
23409         },
23410
23411         '\u200D = []': {
23412             index: 0,
23413             lineNumber: 1,
23414             column: 1,
23415             message: 'Error: Line 1: Unexpected token ILLEGAL'
23416         },
23417
23418         '"\\': {
23419             index: 3,
23420             lineNumber: 1,
23421             column: 4,
23422             message: 'Error: Line 1: Unexpected token ILLEGAL'
23423         },
23424
23425         '"\\u': {
23426             index: 3,
23427             lineNumber: 1,
23428             column: 4,
23429             message: 'Error: Line 1: Unexpected token ILLEGAL'
23430         },
23431
23432         'try { } catch() {}': {
23433             index: 14,
23434             lineNumber: 1,
23435             column: 15,
23436             message: 'Error: Line 1: Unexpected token )'
23437         },
23438
23439         'return': {
23440             index: 6,
23441             lineNumber: 1,
23442             column: 7,
23443             message: 'Error: Line 1: Illegal return statement'
23444         },
23445
23446         'break': {
23447             index: 5,
23448             lineNumber: 1,
23449             column: 6,
23450             message: 'Error: Line 1: Illegal break statement'
23451         },
23452
23453         'continue': {
23454             index: 8,
23455             lineNumber: 1,
23456             column: 9,
23457             message: 'Error: Line 1: Illegal continue statement'
23458         },
23459
23460         'switch (x) { default: continue; }': {
23461             index: 31,
23462             lineNumber: 1,
23463             column: 32,
23464             message: 'Error: Line 1: Illegal continue statement'
23465         },
23466
23467         'do { x } *': {
23468             index: 9,
23469             lineNumber: 1,
23470             column: 10,
23471             message: 'Error: Line 1: Unexpected token *'
23472         },
23473
23474         'while (true) { break x; }': {
23475             index: 22,
23476             lineNumber: 1,
23477             column: 23,
23478             message: 'Error: Line 1: Undefined label \'x\''
23479         },
23480
23481         'while (true) { continue x; }': {
23482             index: 25,
23483             lineNumber: 1,
23484             column: 26,
23485             message: 'Error: Line 1: Undefined label \'x\''
23486         },
23487
23488         'x: while (true) { (function () { break x; }); }': {
23489             index: 40,
23490             lineNumber: 1,
23491             column: 41,
23492             message: 'Error: Line 1: Undefined label \'x\''
23493         },
23494
23495         'x: while (true) { (function () { continue x; }); }': {
23496             index: 43,
23497             lineNumber: 1,
23498             column: 44,
23499             message: 'Error: Line 1: Undefined label \'x\''
23500         },
23501
23502         'x: while (true) { (function () { break; }); }': {
23503             index: 39,
23504             lineNumber: 1,
23505             column: 40,
23506             message: 'Error: Line 1: Illegal break statement'
23507         },
23508
23509         'x: while (true) { (function () { continue; }); }': {
23510             index: 42,
23511             lineNumber: 1,
23512             column: 43,
23513             message: 'Error: Line 1: Illegal continue statement'
23514         },
23515
23516         'x: while (true) { x: while (true) { } }': {
23517             index: 20,
23518             lineNumber: 1,
23519             column: 21,
23520             message: 'Error: Line 1: Label \'x\' has already been declared'
23521         },
23522
23523         '(function () { \'use strict\'; delete i; }())': {
23524             index: 37,
23525             lineNumber: 1,
23526             column: 38,
23527             message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
23528         },
23529
23530         '(function () { \'use strict\'; with (i); }())': {
23531             index: 29,
23532             lineNumber: 1,
23533             column: 30,
23534             message: 'Error: Line 1: Strict mode code may not include a with statement'
23535         },
23536
23537         'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': {
23538             index: 47,
23539             lineNumber: 1,
23540             column: 48,
23541             message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
23542         },
23543
23544         'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': {
23545             index: 73,
23546             lineNumber: 1,
23547             column: 74,
23548             message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
23549         },
23550
23551         'function hello() {\'use strict\'; var eval = 10; }': {
23552             index: 40,
23553             lineNumber: 1,
23554             column: 41,
23555             message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
23556         },
23557
23558         'function hello() {\'use strict\'; var arguments = 10; }': {
23559             index: 45,
23560             lineNumber: 1,
23561             column: 46,
23562             message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
23563         },
23564
23565         'function hello() {\'use strict\'; try { } catch (eval) { } }': {
23566             index: 51,
23567             lineNumber: 1,
23568             column: 52,
23569             message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
23570         },
23571
23572         'function hello() {\'use strict\'; try { } catch (arguments) { } }': {
23573             index: 56,
23574             lineNumber: 1,
23575             column: 57,
23576             message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
23577         },
23578
23579         'function hello() {\'use strict\'; eval = 10; }': {
23580             index: 32,
23581             lineNumber: 1,
23582             column: 33,
23583             message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
23584         },
23585
23586         'function hello() {\'use strict\'; arguments = 10; }': {
23587             index: 32,
23588             lineNumber: 1,
23589             column: 33,
23590             message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
23591         },
23592
23593         'function hello() {\'use strict\'; ++eval; }': {
23594             index: 38,
23595             lineNumber: 1,
23596             column: 39,
23597             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
23598         },
23599
23600         'function hello() {\'use strict\'; --eval; }': {
23601             index: 38,
23602             lineNumber: 1,
23603             column: 39,
23604             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
23605         },
23606
23607         'function hello() {\'use strict\'; ++arguments; }': {
23608             index: 43,
23609             lineNumber: 1,
23610             column: 44,
23611             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
23612         },
23613
23614         'function hello() {\'use strict\'; --arguments; }': {
23615             index: 43,
23616             lineNumber: 1,
23617             column: 44,
23618             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
23619         },
23620
23621         'function hello() {\'use strict\'; eval++; }': {
23622             index: 36,
23623             lineNumber: 1,
23624             column: 37,
23625             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
23626         },
23627
23628         'function hello() {\'use strict\'; eval--; }': {
23629             index: 36,
23630             lineNumber: 1,
23631             column: 37,
23632             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
23633         },
23634
23635         'function hello() {\'use strict\'; arguments++; }': {
23636             index: 41,
23637             lineNumber: 1,
23638             column: 42,
23639             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
23640         },
23641
23642         'function hello() {\'use strict\'; arguments--; }': {
23643             index: 41,
23644             lineNumber: 1,
23645             column: 42,
23646             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
23647         },
23648
23649         'function hello() {\'use strict\'; function eval() { } }': {
23650             index: 41,
23651             lineNumber: 1,
23652             column: 42,
23653             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23654         },
23655
23656         'function hello() {\'use strict\'; function arguments() { } }': {
23657             index: 41,
23658             lineNumber: 1,
23659             column: 42,
23660             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23661         },
23662
23663         'function eval() {\'use strict\'; }': {
23664             index: 9,
23665             lineNumber: 1,
23666             column: 10,
23667             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23668         },
23669
23670         'function arguments() {\'use strict\'; }': {
23671             index: 9,
23672             lineNumber: 1,
23673             column: 10,
23674             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23675         },
23676
23677         'function hello() {\'use strict\'; (function eval() { }()) }': {
23678             index: 42,
23679             lineNumber: 1,
23680             column: 43,
23681             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23682         },
23683
23684         'function hello() {\'use strict\'; (function arguments() { }()) }': {
23685             index: 42,
23686             lineNumber: 1,
23687             column: 43,
23688             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23689         },
23690
23691         '(function eval() {\'use strict\'; })()': {
23692             index: 10,
23693             lineNumber: 1,
23694             column: 11,
23695             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23696         },
23697
23698         '(function arguments() {\'use strict\'; })()': {
23699             index: 10,
23700             lineNumber: 1,
23701             column: 11,
23702             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23703         },
23704
23705         'function hello() {\'use strict\'; ({ s: function eval() { } }); }': {
23706             index: 47,
23707             lineNumber: 1,
23708             column: 48,
23709             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23710         },
23711
23712         '(function package() {\'use strict\'; })()': {
23713             index: 10,
23714             lineNumber: 1,
23715             column: 11,
23716             message: 'Error: Line 1: Use of future reserved word in strict mode'
23717         },
23718
23719         'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': {
23720             index: 48,
23721             lineNumber: 1,
23722             column: 49,
23723             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23724         },
23725
23726         'function hello() {\'use strict\'; ({ set s(eval) { } }); }': {
23727             index: 41,
23728             lineNumber: 1,
23729             column: 42,
23730             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23731         },
23732
23733         'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': {
23734             index: 49,
23735             lineNumber: 1,
23736             column: 50,
23737             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23738         },
23739
23740         'function hello(eval) {\'use strict\';}': {
23741             index: 15,
23742             lineNumber: 1,
23743             column: 16,
23744             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23745         },
23746
23747         'function hello(arguments) {\'use strict\';}': {
23748             index: 15,
23749             lineNumber: 1,
23750             column: 16,
23751             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23752         },
23753
23754         'function hello() { \'use strict\'; function inner(eval) {} }': {
23755             index: 48,
23756             lineNumber: 1,
23757             column: 49,
23758             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23759         },
23760
23761         'function hello() { \'use strict\'; function inner(arguments) {} }': {
23762             index: 48,
23763             lineNumber: 1,
23764             column: 49,
23765             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23766         },
23767
23768         ' "\\1"; \'use strict\';': {
23769             index: 1,
23770             lineNumber: 1,
23771             column: 2,
23772             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23773         },
23774
23775         'function hello() { \'use strict\'; "\\1"; }': {
23776             index: 33,
23777             lineNumber: 1,
23778             column: 34,
23779             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23780         },
23781
23782         'function hello() { \'use strict\'; 021; }': {
23783             index: 33,
23784             lineNumber: 1,
23785             column: 34,
23786             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23787         },
23788
23789         'function hello() { \'use strict\'; ({ "\\1": 42 }); }': {
23790             index: 36,
23791             lineNumber: 1,
23792             column: 37,
23793             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23794         },
23795
23796         'function hello() { \'use strict\'; ({ 021: 42 }); }': {
23797             index: 36,
23798             lineNumber: 1,
23799             column: 37,
23800             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23801         },
23802
23803         'function hello() { "octal directive\\1"; "use strict"; }': {
23804             index: 19,
23805             lineNumber: 1,
23806             column: 20,
23807             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23808         },
23809
23810         'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': {
23811             index: 19,
23812             lineNumber: 1,
23813             column: 20,
23814             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23815         },
23816
23817         'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': {
23818             index: 52,
23819             lineNumber: 1,
23820             column: 53,
23821             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
23822         },
23823
23824         'function hello() { "use strict"; var implements; }': {
23825             index: 37,
23826             lineNumber: 1,
23827             column: 38,
23828             message: 'Error: Line 1: Use of future reserved word in strict mode'
23829         },
23830
23831         'function hello() { "use strict"; var interface; }': {
23832             index: 37,
23833             lineNumber: 1,
23834             column: 38,
23835             message: 'Error: Line 1: Use of future reserved word in strict mode'
23836         },
23837
23838         'function hello() { "use strict"; var package; }': {
23839             index: 37,
23840             lineNumber: 1,
23841             column: 38,
23842             message: 'Error: Line 1: Use of future reserved word in strict mode'
23843         },
23844
23845         'function hello() { "use strict"; var private; }': {
23846             index: 37,
23847             lineNumber: 1,
23848             column: 38,
23849             message: 'Error: Line 1: Use of future reserved word in strict mode'
23850         },
23851
23852         'function hello() { "use strict"; var protected; }': {
23853             index: 37,
23854             lineNumber: 1,
23855             column: 38,
23856             message: 'Error: Line 1: Use of future reserved word in strict mode'
23857         },
23858
23859         'function hello() { "use strict"; var public; }': {
23860             index: 37,
23861             lineNumber: 1,
23862             column: 38,
23863             message: 'Error: Line 1: Use of future reserved word in strict mode'
23864         },
23865
23866         'function hello() { "use strict"; var static; }': {
23867             index: 37,
23868             lineNumber: 1,
23869             column: 38,
23870             message: 'Error: Line 1: Use of future reserved word in strict mode'
23871         },
23872
23873         'function hello() { "use strict"; var yield; }': {
23874             index: 37,
23875             lineNumber: 1,
23876             column: 38,
23877             message: 'Error: Line 1: Use of future reserved word in strict mode'
23878         },
23879
23880         'function hello() { "use strict"; var let; }': {
23881             index: 37,
23882             lineNumber: 1,
23883             column: 38,
23884             message: 'Error: Line 1: Use of future reserved word in strict mode'
23885         },
23886
23887         'function hello(static) { "use strict"; }': {
23888             index: 15,
23889             lineNumber: 1,
23890             column: 16,
23891             message: 'Error: Line 1: Use of future reserved word in strict mode'
23892         },
23893
23894         'function static() { "use strict"; }': {
23895             index: 9,
23896             lineNumber: 1,
23897             column: 10,
23898             message: 'Error: Line 1: Use of future reserved word in strict mode'
23899         },
23900
23901         'function eval(a) { "use strict"; }': {
23902             index: 9,
23903             lineNumber: 1,
23904             column: 10,
23905             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23906         },
23907
23908         'function arguments(a) { "use strict"; }': {
23909             index: 9,
23910             lineNumber: 1,
23911             column: 10,
23912             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
23913         },
23914
23915         'var yield': {
23916             index: 4,
23917             lineNumber: 1,
23918             column: 5,
23919             message: 'Error: Line 1: Unexpected token yield'
23920         },
23921
23922         'var let': {
23923             index: 4,
23924             lineNumber: 1,
23925             column: 5,
23926             message: 'Error: Line 1: Unexpected token let'
23927         },
23928
23929         '"use strict"; function static() { }': {
23930             index: 23,
23931             lineNumber: 1,
23932             column: 24,
23933             message: 'Error: Line 1: Use of future reserved word in strict mode'
23934         },
23935
23936         'function a(t, t) { "use strict"; }': {
23937             index: 14,
23938             lineNumber: 1,
23939             column: 15,
23940             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
23941         },
23942
23943         'function a(eval) { "use strict"; }': {
23944             index: 11,
23945             lineNumber: 1,
23946             column: 12,
23947             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23948         },
23949
23950         'function a(package) { "use strict"; }': {
23951             index: 11,
23952             lineNumber: 1,
23953             column: 12,
23954             message: 'Error: Line 1: Use of future reserved word in strict mode'
23955         },
23956
23957         'function a() { "use strict"; function b(t, t) { }; }': {
23958             index: 43,
23959             lineNumber: 1,
23960             column: 44,
23961             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
23962         },
23963
23964         '(function a(t, t) { "use strict"; })': {
23965             index: 15,
23966             lineNumber: 1,
23967             column: 16,
23968             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
23969         },
23970
23971         'function a() { "use strict"; (function b(t, t) { }); }': {
23972             index: 44,
23973             lineNumber: 1,
23974             column: 45,
23975             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
23976         },
23977
23978         '(function a(eval) { "use strict"; })': {
23979             index: 12,
23980             lineNumber: 1,
23981             column: 13,
23982             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
23983         },
23984
23985         '(function a(package) { "use strict"; })': {
23986             index: 12,
23987             lineNumber: 1,
23988             column: 13,
23989             message: 'Error: Line 1: Use of future reserved word in strict mode'
23990         },
23991
23992         '__proto__: __proto__: 42;': {
23993             index: 21,
23994             lineNumber: 1,
23995             column: 22,
23996             message: 'Error: Line 1: Label \'__proto__\' has already been declared'
23997         },
23998
23999         '"use strict"; function t(__proto__, __proto__) { }': {
24000             index: 36,
24001             lineNumber: 1,
24002             column: 37,
24003             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
24004         },
24005
24006         '"use strict"; x = { __proto__: 42, __proto__: 43 }': {
24007             index: 48,
24008             lineNumber: 1,
24009             column: 49,
24010             message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
24011         },
24012
24013         '"use strict"; x = { get __proto__() { }, __proto__: 43 }': {
24014             index: 54,
24015             lineNumber: 1,
24016             column: 55,
24017             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
24018         },
24019
24020         'var': {
24021             index: 3,
24022             lineNumber: 1,
24023             column: 4,
24024             message: 'Error: Line 1: Unexpected end of input'
24025         },
24026
24027         'let': {
24028             index: 3,
24029             lineNumber: 1,
24030             column: 4,
24031             message: 'Error: Line 1: Unexpected end of input'
24032         },
24033
24034         'const': {
24035             index: 5,
24036             lineNumber: 1,
24037             column: 6,
24038             message: 'Error: Line 1: Unexpected end of input'
24039         },
24040
24041         '{ ;  ;  ': {
24042             index: 8,
24043             lineNumber: 1,
24044             column: 9,
24045             message: 'Error: Line 1: Unexpected end of input'
24046         },
24047
24048         'function t() { ;  ;  ': {
24049             index: 21,
24050             lineNumber: 1,
24051             column: 22,
24052             message: 'Error: Line 1: Unexpected end of input'
24053         }
24054
24055     },
24056
24057     'Tokenize': {
24058         'tokenize(/42/)': [
24059             {
24060                 "type": "Identifier",
24061                 "value": "tokenize",
24062                 "range": [
24063                     0,
24064                     8
24065                 ],
24066                 "loc": {
24067                     "start": {
24068                         "line": 1,
24069                         "column": 0
24070                     },
24071                     "end": {
24072                         "line": 1,
24073                         "column": 8
24074                     }
24075                 }
24076             },
24077             {
24078                 "type": "Punctuator",
24079                 "value": "(",
24080                 "range": [
24081                     8,
24082                     9
24083                 ],
24084                 "loc": {
24085                     "start": {
24086                         "line": 1,
24087                         "column": 8
24088                     },
24089                     "end": {
24090                         "line": 1,
24091                         "column": 9
24092                     }
24093                 }
24094             },
24095             {
24096                 "type": "RegularExpression",
24097                 "value": "/42/",
24098                 "regex": {
24099                     "pattern": "42",
24100                     "flags": ""
24101                 },
24102                 "range": [
24103                     9,
24104                     13
24105                 ],
24106                 "loc": {
24107                     "start": {
24108                         "line": 1,
24109                         "column": 9
24110                     },
24111                     "end": {
24112                         "line": 1,
24113                         "column": 13
24114                     }
24115                 }
24116             },
24117             {
24118                 "type": "Punctuator",
24119                 "value": ")",
24120                 "range": [
24121                     13,
24122                     14
24123                 ],
24124                 "loc": {
24125                     "start": {
24126                         "line": 1,
24127                         "column": 13
24128                     },
24129                     "end": {
24130                         "line": 1,
24131                         "column": 14
24132                     }
24133                 }
24134             }
24135         ],
24136
24137         'if (false) { /42/ }': [
24138             {
24139                 "type": "Keyword",
24140                 "value": "if",
24141                 "range": [
24142                     0,
24143                     2
24144                 ],
24145                 "loc": {
24146                     "start": {
24147                         "line": 1,
24148                         "column": 0
24149                     },
24150                     "end": {
24151                         "line": 1,
24152                         "column": 2
24153                     }
24154                 }
24155             },
24156             {
24157                 "type": "Punctuator",
24158                 "value": "(",
24159                 "range": [
24160                     3,
24161                     4
24162                 ],
24163                 "loc": {
24164                     "start": {
24165                         "line": 1,
24166                         "column": 3
24167                     },
24168                     "end": {
24169                         "line": 1,
24170                         "column": 4
24171                     }
24172                 }
24173             },
24174             {
24175                 "type": "Boolean",
24176                 "value": "false",
24177                 "range": [
24178                     4,
24179                     9
24180                 ],
24181                 "loc": {
24182                     "start": {
24183                         "line": 1,
24184                         "column": 4
24185                     },
24186                     "end": {
24187                         "line": 1,
24188                         "column": 9
24189                     }
24190                 }
24191             },
24192             {
24193                 "type": "Punctuator",
24194                 "value": ")",
24195                 "range": [
24196                     9,
24197                     10
24198                 ],
24199                 "loc": {
24200                     "start": {
24201                         "line": 1,
24202                         "column": 9
24203                     },
24204                     "end": {
24205                         "line": 1,
24206                         "column": 10
24207                     }
24208                 }
24209             },
24210             {
24211                 "type": "Punctuator",
24212                 "value": "{",
24213                 "range": [
24214                     11,
24215                     12
24216                 ],
24217                 "loc": {
24218                     "start": {
24219                         "line": 1,
24220                         "column": 11
24221                     },
24222                     "end": {
24223                         "line": 1,
24224                         "column": 12
24225                     }
24226                 }
24227             },
24228             {
24229                 "type": "RegularExpression",
24230                 "value": "/42/",
24231                 "regex": {
24232                     "pattern": "42",
24233                     "flags": ""
24234                 },
24235                 "range": [
24236                     13,
24237                     17
24238                 ],
24239                 "loc": {
24240                     "start": {
24241                         "line": 1,
24242                         "column": 13
24243                     },
24244                     "end": {
24245                         "line": 1,
24246                         "column": 17
24247                     }
24248                 }
24249             },
24250             {
24251                 "type": "Punctuator",
24252                 "value": "}",
24253                 "range": [
24254                     18,
24255                     19
24256                 ],
24257                 "loc": {
24258                     "start": {
24259                         "line": 1,
24260                         "column": 18
24261                     },
24262                     "end": {
24263                         "line": 1,
24264                         "column": 19
24265                     }
24266                 }
24267             }
24268         ],
24269
24270         'with (false) /42/': [
24271             {
24272                 "type": "Keyword",
24273                 "value": "with",
24274                 "range": [
24275                     0,
24276                     4
24277                 ],
24278                 "loc": {
24279                     "start": {
24280                         "line": 1,
24281                         "column": 0
24282                     },
24283                     "end": {
24284                         "line": 1,
24285                         "column": 4
24286                     }
24287                 }
24288             },
24289             {
24290                 "type": "Punctuator",
24291                 "value": "(",
24292                 "range": [
24293                     5,
24294                     6
24295                 ],
24296                 "loc": {
24297                     "start": {
24298                         "line": 1,
24299                         "column": 5
24300                     },
24301                     "end": {
24302                         "line": 1,
24303                         "column": 6
24304                     }
24305                 }
24306             },
24307             {
24308                 "type": "Boolean",
24309                 "value": "false",
24310                 "range": [
24311                     6,
24312                     11
24313                 ],
24314                 "loc": {
24315                     "start": {
24316                         "line": 1,
24317                         "column": 6
24318                     },
24319                     "end": {
24320                         "line": 1,
24321                         "column": 11
24322                     }
24323                 }
24324             },
24325             {
24326                 "type": "Punctuator",
24327                 "value": ")",
24328                 "range": [
24329                     11,
24330                     12
24331                 ],
24332                 "loc": {
24333                     "start": {
24334                         "line": 1,
24335                         "column": 11
24336                     },
24337                     "end": {
24338                         "line": 1,
24339                         "column": 12
24340                     }
24341                 }
24342             },
24343             {
24344                 "type": "RegularExpression",
24345                 "value": "/42/",
24346                 "regex": {
24347                     "pattern": "42",
24348                     "flags": ""
24349                 },
24350                 "range": [
24351                     13,
24352                     17
24353                 ],
24354                 "loc": {
24355                     "start": {
24356                         "line": 1,
24357                         "column": 13
24358                     },
24359                     "end": {
24360                         "line": 1,
24361                         "column": 17
24362                     }
24363                 }
24364             }
24365         ],
24366
24367         '(false) /42/': [
24368             {
24369                 "type": "Punctuator",
24370                 "value": "(",
24371                 "range": [
24372                     0,
24373                     1
24374                 ],
24375                 "loc": {
24376                     "start": {
24377                         "line": 1,
24378                         "column": 0
24379                     },
24380                     "end": {
24381                         "line": 1,
24382                         "column": 1
24383                     }
24384                 }
24385             },
24386             {
24387                 "type": "Boolean",
24388                 "value": "false",
24389                 "range": [
24390                     1,
24391                     6
24392                 ],
24393                 "loc": {
24394                     "start": {
24395                         "line": 1,
24396                         "column": 1
24397                     },
24398                     "end": {
24399                         "line": 1,
24400                         "column": 6
24401                     }
24402                 }
24403             },
24404             {
24405                 "type": "Punctuator",
24406                 "value": ")",
24407                 "range": [
24408                     6,
24409                     7
24410                 ],
24411                 "loc": {
24412                     "start": {
24413                         "line": 1,
24414                         "column": 6
24415                     },
24416                     "end": {
24417                         "line": 1,
24418                         "column": 7
24419                     }
24420                 }
24421             },
24422             {
24423                 "type": "Punctuator",
24424                 "value": "/",
24425                 "range": [
24426                     8,
24427                     9
24428                 ],
24429                 "loc": {
24430                     "start": {
24431                         "line": 1,
24432                         "column": 8
24433                     },
24434                     "end": {
24435                         "line": 1,
24436                         "column": 9
24437                     }
24438                 }
24439             },
24440             {
24441                 "type": "Numeric",
24442                 "value": "42",
24443                 "range": [
24444                     9,
24445                     11
24446                 ],
24447                 "loc": {
24448                     "start": {
24449                         "line": 1,
24450                         "column": 9
24451                     },
24452                     "end": {
24453                         "line": 1,
24454                         "column": 11
24455                     }
24456                 }
24457             },
24458             {
24459                 "type": "Punctuator",
24460                 "value": "/",
24461                 "range": [
24462                     11,
24463                     12
24464                 ],
24465                 "loc": {
24466                     "start": {
24467                         "line": 1,
24468                         "column": 11
24469                     },
24470                     "end": {
24471                         "line": 1,
24472                         "column": 12
24473                     }
24474                 }
24475             }
24476         ],
24477
24478         'function f(){} /42/': [
24479             {
24480                 "type": "Keyword",
24481                 "value": "function",
24482                 "range": [
24483                     0,
24484                     8
24485                 ],
24486                 "loc": {
24487                     "start": {
24488                         "line": 1,
24489                         "column": 0
24490                     },
24491                     "end": {
24492                         "line": 1,
24493                         "column": 8
24494                     }
24495                 }
24496             },
24497             {
24498                 "type": "Identifier",
24499                 "value": "f",
24500                 "range": [
24501                     9,
24502                     10
24503                 ],
24504                 "loc": {
24505                     "start": {
24506                         "line": 1,
24507                         "column": 9
24508                     },
24509                     "end": {
24510                         "line": 1,
24511                         "column": 10
24512                     }
24513                 }
24514             },
24515             {
24516                 "type": "Punctuator",
24517                 "value": "(",
24518                 "range": [
24519                     10,
24520                     11
24521                 ],
24522                 "loc": {
24523                     "start": {
24524                         "line": 1,
24525                         "column": 10
24526                     },
24527                     "end": {
24528                         "line": 1,
24529                         "column": 11
24530                     }
24531                 }
24532             },
24533             {
24534                 "type": "Punctuator",
24535                 "value": ")",
24536                 "range": [
24537                     11,
24538                     12
24539                 ],
24540                 "loc": {
24541                     "start": {
24542                         "line": 1,
24543                         "column": 11
24544                     },
24545                     "end": {
24546                         "line": 1,
24547                         "column": 12
24548                     }
24549                 }
24550             },
24551             {
24552                 "type": "Punctuator",
24553                 "value": "{",
24554                 "range": [
24555                     12,
24556                     13
24557                 ],
24558                 "loc": {
24559                     "start": {
24560                         "line": 1,
24561                         "column": 12
24562                     },
24563                     "end": {
24564                         "line": 1,
24565                         "column": 13
24566                     }
24567                 }
24568             },
24569             {
24570                 "type": "Punctuator",
24571                 "value": "}",
24572                 "range": [
24573                     13,
24574                     14
24575                 ],
24576                 "loc": {
24577                     "start": {
24578                         "line": 1,
24579                         "column": 13
24580                     },
24581                     "end": {
24582                         "line": 1,
24583                         "column": 14
24584                     }
24585                 }
24586             },
24587             {
24588                 "type": "RegularExpression",
24589                 "value": "/42/",
24590                 "regex": {
24591                     "pattern": "42",
24592                     "flags": ""
24593                 },
24594                 "range": [
24595                     15,
24596                     19
24597                 ],
24598                 "loc": {
24599                     "start": {
24600                         "line": 1,
24601                         "column": 15
24602                     },
24603                     "end": {
24604                         "line": 1,
24605                         "column": 19
24606                     }
24607                 }
24608             }
24609         ],
24610
24611         'function(){} /42': [
24612             {
24613                 "type": "Keyword",
24614                 "value": "function",
24615                 "range": [
24616                     0,
24617                     8
24618                 ],
24619                 "loc": {
24620                     "start": {
24621                         "line": 1,
24622                         "column": 0
24623                     },
24624                     "end": {
24625                         "line": 1,
24626                         "column": 8
24627                     }
24628                 }
24629             },
24630             {
24631                 "type": "Punctuator",
24632                 "value": "(",
24633                 "range": [
24634                     8,
24635                     9
24636                 ],
24637                 "loc": {
24638                     "start": {
24639                         "line": 1,
24640                         "column": 8
24641                     },
24642                     "end": {
24643                         "line": 1,
24644                         "column": 9
24645                     }
24646                 }
24647             },
24648             {
24649                 "type": "Punctuator",
24650                 "value": ")",
24651                 "range": [
24652                     9,
24653                     10
24654                 ],
24655                 "loc": {
24656                     "start": {
24657                         "line": 1,
24658                         "column": 9
24659                     },
24660                     "end": {
24661                         "line": 1,
24662                         "column": 10
24663                     }
24664                 }
24665             },
24666             {
24667                 "type": "Punctuator",
24668                 "value": "{",
24669                 "range": [
24670                     10,
24671                     11
24672                 ],
24673                 "loc": {
24674                     "start": {
24675                         "line": 1,
24676                         "column": 10
24677                     },
24678                     "end": {
24679                         "line": 1,
24680                         "column": 11
24681                     }
24682                 }
24683             },
24684             {
24685                 "type": "Punctuator",
24686                 "value": "}",
24687                 "range": [
24688                     11,
24689                     12
24690                 ],
24691                 "loc": {
24692                     "start": {
24693                         "line": 1,
24694                         "column": 11
24695                     },
24696                     "end": {
24697                         "line": 1,
24698                         "column": 12
24699                     }
24700                 }
24701             },
24702             {
24703                 "type": "Punctuator",
24704                 "value": "/",
24705                 "range": [
24706                     13,
24707                     14
24708                 ],
24709                 "loc": {
24710                     "start": {
24711                         "line": 1,
24712                         "column": 13
24713                     },
24714                     "end": {
24715                         "line": 1,
24716                         "column": 14
24717                     }
24718                 }
24719             },
24720             {
24721                 "type": "Numeric",
24722                 "value": "42",
24723                 "range": [
24724                     14,
24725                     16
24726                 ],
24727                 "loc": {
24728                     "start": {
24729                         "line": 1,
24730                         "column": 14
24731                     },
24732                     "end": {
24733                         "line": 1,
24734                         "column": 16
24735                     }
24736                 }
24737             }
24738         ],
24739
24740         '{} /42': [
24741             {
24742                 "type": "Punctuator",
24743                 "value": "{",
24744                 "range": [
24745                     0,
24746                     1
24747                 ],
24748                 "loc": {
24749                     "start": {
24750                         "line": 1,
24751                         "column": 0
24752                     },
24753                     "end": {
24754                         "line": 1,
24755                         "column": 1
24756                     }
24757                 }
24758             },
24759             {
24760                 "type": "Punctuator",
24761                 "value": "}",
24762                 "range": [
24763                     1,
24764                     2
24765                 ],
24766                 "loc": {
24767                     "start": {
24768                         "line": 1,
24769                         "column": 1
24770                     },
24771                     "end": {
24772                         "line": 1,
24773                         "column": 2
24774                     }
24775                 }
24776             },
24777             {
24778                 "type": "Punctuator",
24779                 "value": "/",
24780                 "range": [
24781                     3,
24782                     4
24783                 ],
24784                 "loc": {
24785                     "start": {
24786                         "line": 1,
24787                         "column": 3
24788                     },
24789                     "end": {
24790                         "line": 1,
24791                         "column": 4
24792                     }
24793                 }
24794             },
24795             {
24796                 "type": "Numeric",
24797                 "value": "42",
24798                 "range": [
24799                     4,
24800                     6
24801                 ],
24802                 "loc": {
24803                     "start": {
24804                         "line": 1,
24805                         "column": 4
24806                     },
24807                     "end": {
24808                         "line": 1,
24809                         "column": 6
24810                     }
24811                 }
24812             }
24813         ],
24814
24815         '[function(){} /42]': [
24816             {
24817                 "type": "Punctuator",
24818                 "value": "[",
24819                 "range": [
24820                     0,
24821                     1
24822                 ],
24823                 "loc": {
24824                     "start": {
24825                         "line": 1,
24826                         "column": 0
24827                     },
24828                     "end": {
24829                         "line": 1,
24830                         "column": 1
24831                     }
24832                 }
24833             },
24834             {
24835                 "type": "Keyword",
24836                 "value": "function",
24837                 "range": [
24838                     1,
24839                     9
24840                 ],
24841                 "loc": {
24842                     "start": {
24843                         "line": 1,
24844                         "column": 1
24845                     },
24846                     "end": {
24847                         "line": 1,
24848                         "column": 9
24849                     }
24850                 }
24851             },
24852             {
24853                 "type": "Punctuator",
24854                 "value": "(",
24855                 "range": [
24856                     9,
24857                     10
24858                 ],
24859                 "loc": {
24860                     "start": {
24861                         "line": 1,
24862                         "column": 9
24863                     },
24864                     "end": {
24865                         "line": 1,
24866                         "column": 10
24867                     }
24868                 }
24869             },
24870             {
24871                 "type": "Punctuator",
24872                 "value": ")",
24873                 "range": [
24874                     10,
24875                     11
24876                 ],
24877                 "loc": {
24878                     "start": {
24879                         "line": 1,
24880                         "column": 10
24881                     },
24882                     "end": {
24883                         "line": 1,
24884                         "column": 11
24885                     }
24886                 }
24887             },
24888             {
24889                 "type": "Punctuator",
24890                 "value": "{",
24891                 "range": [
24892                     11,
24893                     12
24894                 ],
24895                 "loc": {
24896                     "start": {
24897                         "line": 1,
24898                         "column": 11
24899                     },
24900                     "end": {
24901                         "line": 1,
24902                         "column": 12
24903                     }
24904                 }
24905             },
24906             {
24907                 "type": "Punctuator",
24908                 "value": "}",
24909                 "range": [
24910                     12,
24911                     13
24912                 ],
24913                 "loc": {
24914                     "start": {
24915                         "line": 1,
24916                         "column": 12
24917                     },
24918                     "end": {
24919                         "line": 1,
24920                         "column": 13
24921                     }
24922                 }
24923             },
24924             {
24925                 "type": "Punctuator",
24926                 "value": "/",
24927                 "range": [
24928                     14,
24929                     15
24930                 ],
24931                 "loc": {
24932                     "start": {
24933                         "line": 1,
24934                         "column": 14
24935                     },
24936                     "end": {
24937                         "line": 1,
24938                         "column": 15
24939                     }
24940                 }
24941             },
24942             {
24943                 "type": "Numeric",
24944                 "value": "42",
24945                 "range": [
24946                     15,
24947                     17
24948                 ],
24949                 "loc": {
24950                     "start": {
24951                         "line": 1,
24952                         "column": 15
24953                     },
24954                     "end": {
24955                         "line": 1,
24956                         "column": 17
24957                     }
24958                 }
24959             },
24960             {
24961                 "type": "Punctuator",
24962                 "value": "]",
24963                 "range": [
24964                     17,
24965                     18
24966                 ],
24967                 "loc": {
24968                     "start": {
24969                         "line": 1,
24970                         "column": 17
24971                     },
24972                     "end": {
24973                         "line": 1,
24974                         "column": 18
24975                     }
24976                 }
24977             }
24978         ],
24979
24980         ';function f(){} /42/': [
24981             {
24982                 "type": "Punctuator",
24983                 "value": ";",
24984                 "range": [
24985                     0,
24986                     1
24987                 ],
24988                 "loc": {
24989                     "start": {
24990                         "line": 1,
24991                         "column": 0
24992                     },
24993                     "end": {
24994                         "line": 1,
24995                         "column": 1
24996                     }
24997                 }
24998             },
24999             {
25000                 "type": "Keyword",
25001                 "value": "function",
25002                 "range": [
25003                     1,
25004                     9
25005                 ],
25006                 "loc": {
25007                     "start": {
25008                         "line": 1,
25009                         "column": 1
25010                     },
25011                     "end": {
25012                         "line": 1,
25013                         "column": 9
25014                     }
25015                 }
25016             },
25017             {
25018                 "type": "Identifier",
25019                 "value": "f",
25020                 "range": [
25021                     10,
25022                     11
25023                 ],
25024                 "loc": {
25025                     "start": {
25026                         "line": 1,
25027                         "column": 10
25028                     },
25029                     "end": {
25030                         "line": 1,
25031                         "column": 11
25032                     }
25033                 }
25034             },
25035             {
25036                 "type": "Punctuator",
25037                 "value": "(",
25038                 "range": [
25039                     11,
25040                     12
25041                 ],
25042                 "loc": {
25043                     "start": {
25044                         "line": 1,
25045                         "column": 11
25046                     },
25047                     "end": {
25048                         "line": 1,
25049                         "column": 12
25050                     }
25051                 }
25052             },
25053             {
25054                 "type": "Punctuator",
25055                 "value": ")",
25056                 "range": [
25057                     12,
25058                     13
25059                 ],
25060                 "loc": {
25061                     "start": {
25062                         "line": 1,
25063                         "column": 12
25064                     },
25065                     "end": {
25066                         "line": 1,
25067                         "column": 13
25068                     }
25069                 }
25070             },
25071             {
25072                 "type": "Punctuator",
25073                 "value": "{",
25074                 "range": [
25075                     13,
25076                     14
25077                 ],
25078                 "loc": {
25079                     "start": {
25080                         "line": 1,
25081                         "column": 13
25082                     },
25083                     "end": {
25084                         "line": 1,
25085                         "column": 14
25086                     }
25087                 }
25088             },
25089             {
25090                 "type": "Punctuator",
25091                 "value": "}",
25092                 "range": [
25093                     14,
25094                     15
25095                 ],
25096                 "loc": {
25097                     "start": {
25098                         "line": 1,
25099                         "column": 14
25100                     },
25101                     "end": {
25102                         "line": 1,
25103                         "column": 15
25104                     }
25105                 }
25106             },
25107             {
25108                 "type": "RegularExpression",
25109                 "value": "/42/",
25110                 "regex": {
25111                     "pattern": "42",
25112                     "flags": ""
25113                 },
25114                 "range": [
25115                     16,
25116                     20
25117                 ],
25118                 "loc": {
25119                     "start": {
25120                         "line": 1,
25121                         "column": 16
25122                     },
25123                     "end": {
25124                         "line": 1,
25125                         "column": 20
25126                     }
25127                 }
25128             }
25129         ],
25130
25131         'void /42/': [
25132             {
25133                 "type": "Keyword",
25134                 "value": "void",
25135                 "range": [
25136                     0,
25137                     4
25138                 ],
25139                 "loc": {
25140                     "start": {
25141                         "line": 1,
25142                         "column": 0
25143                     },
25144                     "end": {
25145                         "line": 1,
25146                         "column": 4
25147                     }
25148                 }
25149             },
25150             {
25151                 "type": "RegularExpression",
25152                 "value": "/42/",
25153                 "regex": {
25154                     "pattern": "42",
25155                     "flags": ""
25156                 },
25157                 "range": [
25158                     5,
25159                     9
25160                 ],
25161                 "loc": {
25162                     "start": {
25163                         "line": 1,
25164                         "column": 5
25165                     },
25166                     "end": {
25167                         "line": 1,
25168                         "column": 9
25169                     }
25170                 }
25171             }
25172         ],
25173
25174         '/42/': [
25175             {
25176                 "type": "RegularExpression",
25177                 "value": "/42/",
25178                 "regex": {
25179                     "pattern": "42",
25180                     "flags": ""
25181                 },
25182                 "range": [
25183                     0,
25184                     4
25185                 ],
25186                 "loc": {
25187                     "start": {
25188                         "line": 1,
25189                         "column": 0
25190                     },
25191                     "end": {
25192                         "line": 1,
25193                         "column": 4
25194                     }
25195                 }
25196             }
25197         ],
25198
25199         'foo[/42]': [
25200             {
25201                 "type": "Identifier",
25202                 "value": "foo",
25203                 "range": [
25204                     0,
25205                     3
25206                 ],
25207                 "loc": {
25208                     "start": {
25209                         "line": 1,
25210                         "column": 0
25211                     },
25212                     "end": {
25213                         "line": 1,
25214                         "column": 3
25215                     }
25216                 }
25217             },
25218             {
25219                 "type": "Punctuator",
25220                 "value": "[",
25221                 "range": [
25222                     3,
25223                     4
25224                 ],
25225                 "loc": {
25226                     "start": {
25227                         "line": 1,
25228                         "column": 3
25229                     },
25230                     "end": {
25231                         "line": 1,
25232                         "column": 4
25233                     }
25234                 }
25235             }
25236         ],
25237
25238         '[a] / b': [
25239             {
25240                 "type": "Punctuator",
25241                 "value": "[",
25242                 "range": [
25243                     0,
25244                     1
25245                 ],
25246                 "loc": {
25247                     "start": {
25248                         "line": 1,
25249                         "column": 0
25250                     },
25251                     "end": {
25252                         "line": 1,
25253                         "column": 1
25254                     }
25255                 }
25256             },
25257             {
25258                 "type": "Identifier",
25259                 "value": "a",
25260                 "range": [
25261                     1,
25262                     2
25263                 ],
25264                 "loc": {
25265                     "start": {
25266                         "line": 1,
25267                         "column": 1
25268                     },
25269                     "end": {
25270                         "line": 1,
25271                         "column": 2
25272                     }
25273                 }
25274             },
25275             {
25276                 "type": "Punctuator",
25277                 "value": "]",
25278                 "range": [
25279                     2,
25280                     3
25281                 ],
25282                 "loc": {
25283                     "start": {
25284                         "line": 1,
25285                         "column": 2
25286                     },
25287                     "end": {
25288                         "line": 1,
25289                         "column": 3
25290                     }
25291                 }
25292             },
25293             {
25294                 "type": "Punctuator",
25295                 "value": "/",
25296                 "range": [
25297                     4,
25298                     5
25299                 ],
25300                 "loc": {
25301                     "start": {
25302                         "line": 1,
25303                         "column": 4
25304                     },
25305                     "end": {
25306                         "line": 1,
25307                         "column": 5
25308                     }
25309                 }
25310             },
25311             {
25312                 "type": "Identifier",
25313                 "value": "b",
25314                 "range": [
25315                     6,
25316                     7
25317                 ],
25318                 "loc": {
25319                     "start": {
25320                         "line": 1,
25321                         "column": 6
25322                     },
25323                     "end": {
25324                         "line": 1,
25325                         "column": 7
25326                     }
25327                 }
25328             }
25329         ],
25330
25331         '': [],
25332
25333         '/42': {
25334             tokenize: true,
25335             index: 3,
25336             lineNumber: 1,
25337             column: 4,
25338             message: 'Error: Line 1: Invalid regular expression: missing /'
25339         },
25340
25341         'foo[/42': {
25342             tokenize: true,
25343             index: 7,
25344             lineNumber: 1,
25345             column: 8,
25346             message: 'Error: Line 1: Invalid regular expression: missing /'
25347         },
25348
25349         'this / 100;': [
25350           {
25351             "type": "Keyword",
25352             "value": "this",
25353             "range": [
25354               0,
25355               4
25356             ],
25357             "loc": {
25358               "start": {
25359                 "line": 1,
25360                 "column": 0
25361               },
25362               "end": {
25363                 "line": 1,
25364                 "column": 4
25365               }
25366             }
25367           },
25368           {
25369             "type": "Punctuator",
25370             "value": "/",
25371             "range": [
25372               5,
25373               6
25374             ],
25375             "loc": {
25376               "start": {
25377                 "line": 1,
25378                 "column": 5
25379               },
25380               "end": {
25381                 "line": 1,
25382                 "column": 6
25383               }
25384             }
25385           },
25386           {
25387             "type": "Numeric",
25388             "value": "100",
25389             "range": [
25390               7,
25391               10
25392             ],
25393             "loc": {
25394               "start": {
25395                 "line": 1,
25396                 "column": 7
25397               },
25398               "end": {
25399                 "line": 1,
25400                 "column": 10
25401               }
25402             }
25403           },
25404           {
25405             "type": "Punctuator",
25406             "value": ";",
25407             "range": [
25408               10,
25409               11
25410             ],
25411             "loc": {
25412               "start": {
25413                 "line": 1,
25414                 "column": 10
25415               },
25416               "end": {
25417                 "line": 1,
25418                 "column": 11
25419               }
25420             }
25421           }
25422         ]
25423     },
25424
25425     'API': {
25426         'parse()': {
25427             call: 'parse',
25428             args: [],
25429             result: {
25430                 type: 'Program',
25431                 body: [{
25432                     type: 'ExpressionStatement',
25433                     expression: {
25434                         type: 'Identifier',
25435                         name: 'undefined'
25436                     }
25437                 }]
25438             }
25439         },
25440
25441         'parse(null)': {
25442             call: 'parse',
25443             args: [null],
25444             result: {
25445                 type: 'Program',
25446                 body: [{
25447                     type: 'ExpressionStatement',
25448                     expression: {
25449                         type: 'Literal',
25450                         value: null,
25451                         raw: 'null'
25452                     }
25453                 }]
25454             }
25455         },
25456
25457         'parse(42)': {
25458             call: 'parse',
25459             args: [42],
25460             result: {
25461                 type: 'Program',
25462                 body: [{
25463                     type: 'ExpressionStatement',
25464                     expression: {
25465                         type: 'Literal',
25466                         value: 42,
25467                         raw: '42'
25468                     }
25469                 }]
25470             }
25471         },
25472
25473         'parse(true)': {
25474             call: 'parse',
25475             args: [true],
25476             result: {
25477                 type: 'Program',
25478                 body: [{
25479                     type: 'ExpressionStatement',
25480                     expression: {
25481                         type: 'Literal',
25482                         value: true,
25483                         raw: 'true'
25484                     }
25485                 }]
25486             }
25487         },
25488
25489         'parse(undefined)': {
25490             call: 'parse',
25491             args: [void 0],
25492             result: {
25493                 type: 'Program',
25494                 body: [{
25495                     type: 'ExpressionStatement',
25496                     expression: {
25497                         type: 'Identifier',
25498                         name: 'undefined'
25499                     }
25500                 }]
25501             }
25502         },
25503
25504         'parse(new String("test"))': {
25505             call: 'parse',
25506             args: [new String('test')],
25507             result: {
25508                 type: 'Program',
25509                 body: [{
25510                     type: 'ExpressionStatement',
25511                     expression: {
25512                         type: 'Identifier',
25513                         name: 'test'
25514                     }
25515                 }]
25516             }
25517         },
25518
25519         'parse(new Number(42))': {
25520             call: 'parse',
25521             args: [new Number(42)],
25522             result: {
25523                 type: 'Program',
25524                 body: [{
25525                     type: 'ExpressionStatement',
25526                     expression: {
25527                         type: 'Literal',
25528                         value: 42,
25529                         raw: '42'
25530                     }
25531                 }]
25532             }
25533         },
25534
25535         'parse(new Boolean(true))': {
25536             call: 'parse',
25537             args: [new Boolean(true)],
25538             result: {
25539                 type: 'Program',
25540                 body: [{
25541                     type: 'ExpressionStatement',
25542                     expression: {
25543                         type: 'Literal',
25544                         value: true,
25545                         raw: 'true'
25546                     }
25547                 }]
25548             }
25549         },
25550
25551         'Syntax': {
25552             property: 'Syntax',
25553             result: {
25554                 AssignmentExpression: 'AssignmentExpression',
25555                 ArrayExpression: 'ArrayExpression',
25556                 ArrowFunctionExpression: 'ArrowFunctionExpression',
25557                 BlockStatement: 'BlockStatement',
25558                 BinaryExpression: 'BinaryExpression',
25559                 BreakStatement: 'BreakStatement',
25560                 CallExpression: 'CallExpression',
25561                 CatchClause: 'CatchClause',
25562                 ConditionalExpression: 'ConditionalExpression',
25563                 ContinueStatement: 'ContinueStatement',
25564                 DoWhileStatement: 'DoWhileStatement',
25565                 DebuggerStatement: 'DebuggerStatement',
25566                 EmptyStatement: 'EmptyStatement',
25567                 ExpressionStatement: 'ExpressionStatement',
25568                 ForStatement: 'ForStatement',
25569                 ForInStatement: 'ForInStatement',
25570                 FunctionDeclaration: 'FunctionDeclaration',
25571                 FunctionExpression: 'FunctionExpression',
25572                 Identifier: 'Identifier',
25573                 IfStatement: 'IfStatement',
25574                 Literal: 'Literal',
25575                 LabeledStatement: 'LabeledStatement',
25576                 LogicalExpression: 'LogicalExpression',
25577                 MemberExpression: 'MemberExpression',
25578                 NewExpression: 'NewExpression',
25579                 ObjectExpression: 'ObjectExpression',
25580                 Program: 'Program',
25581                 Property: 'Property',
25582                 ReturnStatement: 'ReturnStatement',
25583                 SequenceExpression: 'SequenceExpression',
25584                 SwitchStatement: 'SwitchStatement',
25585                 SwitchCase: 'SwitchCase',
25586                 ThisExpression: 'ThisExpression',
25587                 ThrowStatement: 'ThrowStatement',
25588                 TryStatement: 'TryStatement',
25589                 UnaryExpression: 'UnaryExpression',
25590                 UpdateExpression: 'UpdateExpression',
25591                 VariableDeclaration: 'VariableDeclaration',
25592                 VariableDeclarator: 'VariableDeclarator',
25593                 WhileStatement: 'WhileStatement',
25594                 WithStatement: 'WithStatement'
25595             }
25596         },
25597
25598         'tokenize()': {
25599           call: 'tokenize',
25600           args: [],
25601           result: [{
25602             type: 'Identifier',
25603             value: 'undefined'
25604           }]
25605         },
25606
25607         'tokenize(null)': {
25608           call: 'tokenize',
25609           args: [null],
25610           result: [{
25611             type: 'Null',
25612             value: 'null'
25613           }]
25614         },
25615
25616         'tokenize(42)': {
25617           call: 'tokenize',
25618           args: [42],
25619           result: [{
25620             type: 'Numeric',
25621             value: '42'
25622           }]
25623         },
25624
25625         'tokenize(true)': {
25626           call: 'tokenize',
25627           args: [true],
25628           result: [{
25629             type: 'Boolean',
25630             value: 'true'
25631           }]
25632         },
25633
25634         'tokenize(undefined)': {
25635           call: 'tokenize',
25636           args: [void 0],
25637           result: [{
25638             type: 'Identifier',
25639             value: 'undefined'
25640           }]
25641         },
25642
25643         'tokenize(new String("test"))': {
25644           call: 'tokenize',
25645           args: [new String('test')],
25646           result: [{
25647             type: 'Identifier',
25648             value: 'test'
25649           }]
25650         },
25651
25652         'tokenize(new Number(42))': {
25653           call: 'tokenize',
25654           args: [new Number(42)],
25655           result: [{
25656             type: 'Numeric',
25657             value: '42'
25658           }]
25659         },
25660
25661         'tokenize(new Boolean(true))': {
25662           call: 'tokenize',
25663           args: [new Boolean(true)],
25664           result: [{
25665             type: 'Boolean',
25666             value: 'true'
25667           }]
25668         }
25669     },
25670
25671     'Tolerant parse': {
25672         /** argument recovery */
25673         'f(a b c);': {
25674             range: [0, 9],
25675             loc: {
25676                 start: { line: 1, column: 0 },
25677                 end: { line: 1, column: 9 }
25678             },
25679             type: "Program",
25680             body: [{
25681                 range: [0, 9],
25682                 loc: {
25683                     start: { line: 1, column: 0 },
25684                     end: { line: 1, column: 9 }
25685                 },
25686                 type: "ExpressionStatement",
25687                 expression: {
25688                     range: [0, 8],
25689                     loc: {
25690                         start: { line: 1, column: 0 },
25691                         end: { line: 1, column: 8 }
25692                     },
25693                     type: "CallExpression",
25694                     callee: {
25695                         range: [0, 1],
25696                         loc: {
25697                             start: { line: 1, column: 0 },
25698                             end: { line: 1, column: 1 }
25699                         },
25700                         type: "Identifier",
25701                         name: "f"
25702                     },
25703                     "arguments": [{
25704                         range: [2, 3],
25705                         loc: {
25706                             start: { line: 1, column: 2 },
25707                             end: { line: 1, column: 3 }
25708                         },
25709                         type: "Identifier",
25710                         name: "a"
25711                     }, {
25712                         range: [4, 5],
25713                         loc: {
25714                             start: { line: 1, column: 4 },
25715                             end: { line: 1, column: 5 }
25716                         },
25717                         type: "Identifier",
25718                         name: "b"
25719                     }, {
25720                         range: [6, 7],
25721                         loc: {
25722                             start: { line: 1, column: 6 },
25723                             end: { line: 1, column: 7 }
25724                         },
25725                         type: "Identifier",
25726                         name: "c"
25727                     }]
25728                 }
25729             }],
25730             errors: [{
25731                 index: 4,
25732                 lineNumber: 1,
25733                 column: 5,
25734                 message: "Error: Line 1: Unexpected token b"
25735             }, {
25736                 index: 6,
25737                 lineNumber: 1,
25738                 column: 7,
25739                 message: "Error: Line 1: Unexpected token c"
25740             }]
25741         },
25742
25743         /** argument recovery function */
25744         'f(a function(){} c);': {
25745             range: [0, 20],
25746             loc: {
25747                 start: { line: 1, column: 0 },
25748                 end: { line: 1, column: 20 }
25749             },
25750             type: "Program",
25751             body: [{
25752                 range: [0, 20],
25753                 loc: {
25754                     start: { line: 1, column: 0 },
25755                     end: { line: 1, column: 20 }
25756                 },
25757                 type: "ExpressionStatement",
25758                 expression: {
25759                     range: [0, 19],
25760                     loc: {
25761                         start: { line: 1, column: 0 },
25762                         end: { line: 1, column: 19 }
25763                     },
25764                     type: "CallExpression",
25765                     callee: {
25766                         range: [0, 1],
25767                         loc: {
25768                             start: { line: 1, column: 0 },
25769                             end: { line: 1, column: 1 }
25770                         },
25771                         type: "Identifier",
25772                         name: "f"
25773                     },
25774                     "arguments": [{
25775                         range: [2, 3],
25776                         loc: {
25777                             start: { line: 1, column: 2 },
25778                             end: { line: 1, column: 3 }
25779                         },
25780                         type: "Identifier",
25781                         name: "a"
25782                     }, {
25783                         range: [4, 16],
25784                         loc: {
25785                             start: { line: 1, column: 4 },
25786                             end: { line: 1, column: 16 }
25787                         },
25788                         type: "FunctionExpression",
25789                         id: null,
25790                         params: [],
25791                         defaults: [],
25792                         body: {
25793                             range: [14, 16],
25794                             loc: {
25795                                 start: { line: 1, column: 14 },
25796                                 end: { line: 1, column: 16 }
25797                             },
25798                             type: "BlockStatement",
25799                             body: []
25800                         },
25801                         rest: null,
25802                         generator: false,
25803                         expression: false
25804                     }, {
25805                         range: [17, 18],
25806                         loc: {
25807                             start: { line: 1, column: 17 },
25808                             end: { line: 1, column: 18 }
25809                         },
25810                         type: "Identifier",
25811                         name: "c"
25812                     }]
25813                 }
25814             }],
25815             errors: [{
25816                 index: 4,
25817                 lineNumber: 1,
25818                 column: 5,
25819                 message: "Error: Line 1: Unexpected token function"
25820             }, {
25821                 index: 17,
25822                 lineNumber: 1,
25823                 column: 18,
25824                 message: "Error: Line 1: Unexpected token c"
25825             }]
25826         },
25827
25828         /** argument recovery object */
25829         'f({} b c);': {
25830             range: [0, 10],
25831             loc: {
25832                 start: { line: 1, column: 0 },
25833                 end: { line: 1, column: 10 }
25834             },
25835             type: "Program",
25836             body: [{
25837                 range: [0, 10],
25838                 loc: {
25839                     start: { line: 1, column: 0 },
25840                     end: { line: 1, column: 10 }
25841                 },
25842                 type: "ExpressionStatement",
25843                 expression: {
25844                     range: [0, 9],
25845                     loc: {
25846                         start: { line: 1, column: 0 },
25847                         end: { line: 1, column: 9 }
25848                     },
25849                     type: "CallExpression",
25850                     callee: {
25851                         range: [0, 1],
25852                         loc: {
25853                             start: { line: 1, column: 0 },
25854                             end: { line: 1, column: 1 }
25855                         },
25856                         type: "Identifier",
25857                         name: "f"
25858                     },
25859                     "arguments": [{
25860                         range: [2, 4],
25861                         loc: {
25862                             start: { line: 1, column: 2 },
25863                             end: { line: 1, column: 4 }
25864                         },
25865                         type: "ObjectExpression",
25866                         properties: []
25867                     }, {
25868                         range: [5, 6],
25869                         loc: {
25870                             start: { line: 1, column: 5 },
25871                             end: { line: 1, column: 6 }
25872                         },
25873                         type: "Identifier",
25874                         name: "b"
25875                     }, {
25876                         range: [7, 8],
25877                         loc: {
25878                             start: { line: 1, column: 7 },
25879                             end: { line: 1, column: 8 }
25880                         },
25881                         type: "Identifier",
25882                         name: "c"
25883                     }]
25884                 }
25885             }],
25886             errors: [{
25887                 index: 5,
25888                 lineNumber: 1,
25889                 column: 6,
25890                 message: "Error: Line 1: Unexpected token b"
25891             }, {
25892                 index: 7,
25893                 lineNumber: 1,
25894                 column: 8,
25895                 message: "Error: Line 1: Unexpected token c"
25896             }]
25897         },
25898
25899         /** single recovery - missing comma*/
25900         'var o = {one: function() {} two:2};': {
25901             range: [0, 35],
25902             loc: {
25903                 start: { line: 1, column: 0 },
25904                 end: { line: 1, column: 35 }
25905             },
25906             type: "Program",
25907             body: [{
25908                 range: [0, 35],
25909                 loc: {
25910                     start: { line: 1, column: 0 },
25911                     end: { line: 1, column: 35 }
25912                 },
25913                 type: "VariableDeclaration",
25914                 declarations: [{
25915                     range: [4, 34],
25916                     loc: {
25917                         start: { line: 1, column: 4 },
25918                         end: { line: 1, column: 34 }
25919                     },
25920                     type: "VariableDeclarator",
25921                     id: {
25922                         range: [4, 5],
25923                         loc: {
25924                             start: { line: 1, column: 4 },
25925                             end: { line: 1, column: 5 }
25926                         },
25927                         type: "Identifier",
25928                         name: "o"
25929                     },
25930                     init: {
25931                         range: [8, 34],
25932                         loc: {
25933                             start: { line: 1, column: 8 },
25934                             end: { line: 1, column: 34 }
25935                         },
25936                         type: "ObjectExpression",
25937                         properties: [{
25938                             range: [9, 27],
25939                             loc: {
25940                                 start: { line: 1, column: 9 },
25941                                 end: { line: 1, column: 27 }
25942                             },
25943                             type: "Property",
25944                             key: {
25945                                 range: [9, 12],
25946                                 loc: {
25947                                     start: { line: 1, column: 9 },
25948                                     end: { line: 1, column: 12 }
25949                                 },
25950                                 type: "Identifier",
25951                                 name: "one"
25952                             },
25953                             value: {
25954                                 range: [14, 27],
25955                                 loc: {
25956                                     start: { line: 1, column: 14 },
25957                                     end: { line: 1, column: 27 }
25958                                 },
25959                                 type: "FunctionExpression",
25960                                 id: null,
25961                                 params: [],
25962                                 defaults: [],
25963                                 body: {
25964                                     range: [25, 27],
25965                                     loc: {
25966                                         start: { line: 1, column: 25 },
25967                                         end: { line: 1, column: 27 }
25968                                     },
25969                                     type: "BlockStatement",
25970                                     body: []
25971                                 },
25972                                 rest: null,
25973                                 generator: false,
25974                                 expression: false
25975                             },
25976                             kind: "init",
25977                             method: false,
25978                             shorthand: false
25979                         }, {
25980                             range: [28, 33],
25981                             loc: {
25982                                 start: { line: 1, column: 28 },
25983                                 end: { line: 1, column: 33 }
25984                             },
25985                             type: "Property",
25986                             key: {
25987                                 range: [28, 31],
25988                                 loc: {
25989                                     start: { line: 1, column: 28 },
25990                                     end: { line: 1, column: 31 }
25991                                 },
25992                                 type: "Identifier",
25993                                 name: "two"
25994                             },
25995                             value: {
25996                                 range: [32, 33],
25997                                 loc: {
25998                                     start: { line: 1, column: 32 },
25999                                     end: { line: 1, column: 33 }
26000                                 },
26001                                 type: "Literal",
26002                                 value: 2,
26003                                 raw: "2"
26004                             },
26005                             kind: "init",
26006                             method: false,
26007                             shorthand: false
26008                         }]
26009                     }
26010                 }],
26011                 kind: "var"
26012             }],
26013             tokens: [{
26014                 type: "Keyword",
26015                 value: "var",
26016                 range: [0, 3],
26017                 loc: {
26018                     start: { line: 1, column: 0 },
26019                     end: { line: 1, column: 3 }
26020                 }
26021             }, {
26022                 type: "Identifier",
26023                 value: "o",
26024                 range: [4, 5],
26025                 loc: {
26026                     start: { line: 1, column: 4 },
26027                     end: { line: 1, column: 5 }
26028                 }
26029             }, {
26030                 type: "Punctuator",
26031                 value: "=",
26032                 range: [6, 7],
26033                 loc: {
26034                     start: { line: 1, column: 6 },
26035                     end: { line: 1, column: 7 }
26036                 }
26037             }, {
26038                 type: "Punctuator",
26039                 value: "{",
26040                 range: [8, 9],
26041                 loc: {
26042                     start: { line: 1, column: 8 },
26043                     end: { line: 1, column: 9 }
26044                 }
26045             }, {
26046                 type: "Identifier",
26047                 value: "one",
26048                 range: [9, 12],
26049                 loc: {
26050                     start: { line: 1, column: 9 },
26051                     end: { line: 1, column: 12 }
26052                 }
26053             }, {
26054                 type: "Punctuator",
26055                 value: ":",
26056                 range: [12, 13],
26057                 loc: {
26058                     start: { line: 1, column: 12 },
26059                     end: { line: 1, column: 13 }
26060                 }
26061             }, {
26062                 type: "Keyword",
26063                 value: "function",
26064                 range: [14, 22],
26065                 loc: {
26066                     start: { line: 1, column: 14 },
26067                     end: { line: 1, column: 22 }
26068                 }
26069             }, {
26070                 type: "Punctuator",
26071                 value: "(",
26072                 range: [22, 23],
26073                 loc: {
26074                     start: { line: 1, column: 22 },
26075                     end: { line: 1, column: 23 }
26076                 }
26077             }, {
26078                 type: "Punctuator",
26079                 value: ")",
26080                 range: [23, 24],
26081                 loc: {
26082                     start: { line: 1, column: 23 },
26083                     end: { line: 1, column: 24 }
26084                 }
26085             }, {
26086                 type: "Punctuator",
26087                 value: "{",
26088                 range: [25, 26],
26089                 loc: {
26090                     start: { line: 1, column: 25 },
26091                     end: { line: 1, column: 26 }
26092                 }
26093             }, {
26094                 type: "Punctuator",
26095                 value: "}",
26096                 range: [26, 27],
26097                 loc: {
26098                     start: { line: 1, column: 26 },
26099                     end: { line: 1, column: 27 }
26100                 }
26101             }, {
26102                 type: "Identifier",
26103                 value: "two",
26104                 range: [28, 31],
26105                 loc: {
26106                     start: { line: 1, column: 28 },
26107                     end: { line: 1, column: 31 }
26108                 }
26109             }, {
26110                 type: "Punctuator",
26111                 value: ":",
26112                 range: [31, 32],
26113                 loc: {
26114                     start: { line: 1, column: 31 },
26115                     end: { line: 1, column: 32 }
26116                 }
26117             }, {
26118                 type: "Numeric",
26119                 value: "2",
26120                 range: [32, 33],
26121                 loc: {
26122                     start: { line: 1, column: 32 },
26123                     end: { line: 1, column: 33 }
26124                 }
26125             }, {
26126                 type: "Punctuator",
26127                 value: "}",
26128                 range: [33, 34],
26129                 loc: {
26130                     start: { line: 1, column: 33 },
26131                     end: { line: 1, column: 34 }
26132                 }
26133             }, {
26134                 type: "Punctuator",
26135                 value: ";",
26136                 range: [34, 35],
26137                 loc: {
26138                     start: { line: 1, column: 34 },
26139                     end: { line: 1, column: 35 }
26140                 }
26141             }],
26142             errors: [{
26143                 index: 28,
26144                 lineNumber: 1,
26145                 column: 29,
26146                 message: "Error: Line 1: Unexpected token two"
26147             }]
26148         },
26149
26150         /** successive recovery - missing comma*/
26151         'var o = {one: function() {} two:2 three: 3};': {
26152             range: [0, 44],
26153             loc: {
26154                 start: { line: 1, column: 0 },
26155                 end: { line: 1, column: 44 }
26156             },
26157             type: "Program",
26158             body: [{
26159                 range: [0, 44],
26160                 loc: {
26161                     start: { line: 1, column: 0 },
26162                     end: { line: 1, column: 44 }
26163                 },
26164                 type: "VariableDeclaration",
26165                 declarations: [{
26166                     range: [4, 43],
26167                     loc: {
26168                         start: { line: 1, column: 4 },
26169                         end: { line: 1, column: 43 }
26170                     },
26171                     type: "VariableDeclarator",
26172                     id: {
26173                         range: [4, 5],
26174                         loc: {
26175                             start: { line: 1, column: 4 },
26176                             end: { line: 1, column: 5 }
26177                         },
26178                         type: "Identifier",
26179                         name: "o"
26180                     },
26181                     init: {
26182                         range: [8, 43],
26183                         loc: {
26184                             start: { line: 1, column: 8 },
26185                             end: { line: 1, column: 43 }
26186                         },
26187                         type: "ObjectExpression",
26188                         properties: [{
26189                             range: [9, 27],
26190                             loc: {
26191                                 start: { line: 1, column: 9 },
26192                                 end: { line: 1, column: 27 }
26193                             },
26194                             type: "Property",
26195                             key: {
26196                                 range: [9, 12],
26197                                 loc: {
26198                                     start: { line: 1, column: 9 },
26199                                     end: { line: 1, column: 12 }
26200                                 },
26201                                 type: "Identifier",
26202                                 name: "one"
26203                             },
26204                             value: {
26205                                 range: [14, 27],
26206                                 loc: {
26207                                     start: { line: 1, column: 14 },
26208                                     end: { line: 1, column: 27 }
26209                                 },
26210                                 type: "FunctionExpression",
26211                                 id: null,
26212                                 params: [],
26213                                 defaults: [],
26214                                 body: {
26215                                     range: [25, 27],
26216                                     loc: {
26217                                         start: { line: 1, column: 25 },
26218                                         end: { line: 1, column: 27 }
26219                                     },
26220                                     type: "BlockStatement",
26221                                     body: []
26222                                 },
26223                                 rest: null,
26224                                 generator: false,
26225                                 expression: false
26226                             },
26227                             kind: "init",
26228                             method: false,
26229                             shorthand: false
26230                         }, {
26231                             range: [28, 33],
26232                             loc: {
26233                                 start: { line: 1, column: 28 },
26234                                 end: { line: 1, column: 33 }
26235                             },
26236                             type: "Property",
26237                             key: {
26238                                 range: [28, 31],
26239                                 loc: {
26240                                     start: { line: 1, column: 28 },
26241                                     end: { line: 1, column: 31 }
26242                                 },
26243                                 type: "Identifier",
26244                                 name: "two"
26245                             },
26246                             value: {
26247                                 range: [32, 33],
26248                                 loc: {
26249                                     start: { line: 1, column: 32 },
26250                                     end: { line: 1, column: 33 }
26251                                 },
26252                                 type: "Literal",
26253                                 value: 2,
26254                                 raw: "2"
26255                             },
26256                             kind: "init",
26257                             method: false,
26258                             shorthand: false
26259                         }, {
26260                             range: [34, 42],
26261                             loc: {
26262                                 start: { line: 1, column: 34 },
26263                                 end: { line: 1, column: 42 }
26264                             },
26265                             type: "Property",
26266                             key: {
26267                                 range: [34, 39],
26268                                 loc: {
26269                                     start: { line: 1, column: 34 },
26270                                     end: { line: 1, column: 39 }
26271                                 },
26272                                 type: "Identifier",
26273                                 name: "three"
26274                             },
26275                             value: {
26276                                 range: [41, 42],
26277                                 loc: {
26278                                     start: { line: 1, column: 41 },
26279                                     end: { line: 1, column: 42 }
26280                                 },
26281                                 type: "Literal",
26282                                 value: 3,
26283                                 raw: "3"
26284                             },
26285                             kind: "init",
26286                             method: false,
26287                             shorthand: false
26288                         }]
26289                     }
26290                 }],
26291                 kind: "var"
26292             }],
26293             errors: [{
26294                 index: 28,
26295                 lineNumber: 1,
26296                 column: 29,
26297                 message: "Error: Line 1: Unexpected token two"
26298             }, {
26299                 index: 34,
26300                 lineNumber: 1,
26301                 column: 35,
26302                 message: "Error: Line 1: Unexpected token three"
26303             }]
26304         },
26305
26306         /** mixed recovery - missing comma */
26307         'var o = {one: function() {} two:2, three: 3 "four":4};': {
26308             range: [0, 54],
26309             loc: {
26310                 start: { line: 1, column: 0 },
26311                 end: { line: 1, column: 54 }
26312             },
26313             type: "Program",
26314             body: [{
26315                 range: [0, 54],
26316                 loc: {
26317                     start: { line: 1, column: 0 },
26318                     end: { line: 1, column: 54 }
26319                 },
26320                 type: "VariableDeclaration",
26321                 declarations: [{
26322                     range: [4, 53],
26323                     loc: {
26324                         start: { line: 1, column: 4 },
26325                         end: { line: 1, column: 53 }
26326                     },
26327                     type: "VariableDeclarator",
26328                     id: {
26329                         range: [4, 5],
26330                         loc: {
26331                             start: { line: 1, column: 4 },
26332                             end: { line: 1, column: 5 }
26333                         },
26334                         type: "Identifier",
26335                         name: "o"
26336                     },
26337                     init: {
26338                         range: [8, 53],
26339                         loc: {
26340                             start: { line: 1, column: 8 },
26341                             end: { line: 1, column: 53 }
26342                         },
26343                         type: "ObjectExpression",
26344                         properties: [{
26345                             range: [9, 27],
26346                             loc: {
26347                                 start: { line: 1, column: 9 },
26348                                 end: { line: 1, column: 27 }
26349                             },
26350                             type: "Property",
26351                             key: {
26352                                 range: [9, 12],
26353                                 loc: {
26354                                     start: { line: 1, column: 9 },
26355                                     end: { line: 1, column: 12 }
26356                                 },
26357                                 type: "Identifier",
26358                                 name: "one"
26359                             },
26360                             value: {
26361                                 range: [14, 27],
26362                                 loc: {
26363                                     start: { line: 1, column: 14 },
26364                                     end: { line: 1, column: 27 }
26365                                 },
26366                                 type: "FunctionExpression",
26367                                 id: null,
26368                                 params: [],
26369                                 defaults: [],
26370                                 body: {
26371                                     range: [25, 27],
26372                                     loc: {
26373                                         start: { line: 1, column: 25 },
26374                                         end: { line: 1, column: 27 }
26375                                     },
26376                                     type: "BlockStatement",
26377                                     body: []
26378                                 },
26379                                 rest: null,
26380                                 generator: false,
26381                                 expression: false
26382                             },
26383                             kind: "init",
26384                             method: false,
26385                             shorthand: false
26386                         }, {
26387                             range: [28, 33],
26388                             loc: {
26389                                 start: { line: 1, column: 28 },
26390                                 end: { line: 1, column: 33 }
26391                             },
26392                             type: "Property",
26393                             key: {
26394                                 range: [28, 31],
26395                                 loc: {
26396                                     start: { line: 1, column: 28 },
26397                                     end: { line: 1, column: 31 }
26398                                 },
26399                                 type: "Identifier",
26400                                 name: "two"
26401                             },
26402                             value: {
26403                                 range: [32, 33],
26404                                 loc: {
26405                                     start: { line: 1, column: 32 },
26406                                     end: { line: 1, column: 33 }
26407                                 },
26408                                 type: "Literal",
26409                                 value: 2,
26410                                 raw: "2"
26411                             },
26412                             kind: "init",
26413                             method: false,
26414                             shorthand: false
26415                         }, {
26416                             range: [35, 43],
26417                             loc: {
26418                                 start: { line: 1, column: 35 },
26419                                 end: { line: 1, column: 43 }
26420                             },
26421                             type: "Property",
26422                             key: {
26423                                 range: [35, 40],
26424                                 loc: {
26425                                     start: { line: 1, column: 35 },
26426                                     end: { line: 1, column: 40 }
26427                                 },
26428                                 type: "Identifier",
26429                                 name: "three"
26430                             },
26431                             value: {
26432                                 range: [42, 43],
26433                                 loc: {
26434                                     start: { line: 1, column: 42 },
26435                                     end: { line: 1, column: 43 }
26436                                 },
26437                                 type: "Literal",
26438                                 value: 3,
26439                                 raw: "3"
26440                             },
26441                             kind: "init",
26442                             method: false,
26443                             shorthand: false
26444                         }, {
26445                             range: [44, 52],
26446                             loc: {
26447                                 start: { line: 1, column: 44 },
26448                                 end: { line: 1, column: 52 }
26449                             },
26450                             type: "Property",
26451                             key: {
26452                                 range: [44, 50],
26453                                 loc: {
26454                                     start: { line: 1, column: 44 },
26455                                     end: { line: 1, column: 50 }
26456                                 },
26457                                 type: "Literal",
26458                                 value: "four",
26459                                 raw: "\"four\""
26460                             },
26461                             value: {
26462                                 range: [51, 52],
26463                                 loc: {
26464                                     start: { line: 1, column: 51 },
26465                                     end: { line: 1, column: 52 }
26466                                 },
26467                                 type: "Literal",
26468                                 value: 4,
26469                                 raw: "4"
26470                             },
26471                             kind: "init",
26472                             method: false,
26473                             shorthand: false
26474                         }]
26475                     }
26476                 }],
26477                 kind: "var"
26478             }],
26479             errors: [{
26480                 index: 28,
26481                 lineNumber: 1,
26482                 column: 29,
26483                 message: "Error: Line 1: Unexpected token two"
26484             }, {
26485                 index: 44,
26486                 lineNumber: 1,
26487                 column: 45,
26488                 message: "Error: Line 1: Unexpected token four"
26489             }]
26490         },
26491
26492         /** nested recovery - missing comma */
26493         'var o = {one: function() {} two:2, three: {aa: "a" bb: "b"} four: 4};': {
26494             range: [0, 69],
26495             loc: {
26496                 start: { line: 1, column: 0 },
26497                 end: { line: 1, column: 69 }
26498             },
26499             type: "Program",
26500             body: [{
26501                 range: [0, 69],
26502                 loc: {
26503                     start: { line: 1, column: 0 },
26504                     end: { line: 1, column: 69 }
26505                 },
26506                 type: "VariableDeclaration",
26507                 declarations: [{
26508                     range: [4, 68],
26509                     loc: {
26510                         start: { line: 1, column: 4 },
26511                         end: { line: 1, column: 68 }
26512                     },
26513                     type: "VariableDeclarator",
26514                     id: {
26515                         range: [4, 5],
26516                         loc: {
26517                             start: { line: 1, column: 4 },
26518                             end: { line: 1, column: 5 }
26519                         },
26520                         type: "Identifier",
26521                         name: "o"
26522                     },
26523                     init: {
26524                         range: [8, 68],
26525                         loc: {
26526                             start: { line: 1, column: 8 },
26527                             end: { line: 1, column: 68 }
26528                         },
26529                         type: "ObjectExpression",
26530                         properties: [{
26531                             range: [9, 27],
26532                             loc: {
26533                                 start: { line: 1, column: 9 },
26534                                 end: { line: 1, column: 27 }
26535                             },
26536                             type: "Property",
26537                             key: {
26538                                 range: [9, 12],
26539                                 loc: {
26540                                     start: { line: 1, column: 9 },
26541                                     end: { line: 1, column: 12 }
26542                                 },
26543                                 type: "Identifier",
26544                                 name: "one"
26545                             },
26546                             value: {
26547                                 range: [14, 27],
26548                                 loc: {
26549                                     start: { line: 1, column: 14 },
26550                                     end: { line: 1, column: 27 }
26551                                 },
26552                                 type: "FunctionExpression",
26553                                 id: null,
26554                                 params: [],
26555                                 defaults: [],
26556                                 body: {
26557                                     range: [25, 27],
26558                                     loc: {
26559                                         start: { line: 1, column: 25 },
26560                                         end: { line: 1, column: 27 }
26561                                     },
26562                                     type: "BlockStatement",
26563                                     body: []
26564                                 },
26565                                 rest: null,
26566                                 generator: false,
26567                                 expression: false
26568                             },
26569                             kind: "init",
26570                             method: false,
26571                             shorthand: false
26572                         }, {
26573                             range: [28, 33],
26574                             loc: {
26575                                 start: { line: 1, column: 28 },
26576                                 end: { line: 1, column: 33 }
26577                             },
26578                             type: "Property",
26579                             key: {
26580                                 range: [28, 31],
26581                                 loc: {
26582                                     start: { line: 1, column: 28 },
26583                                     end: { line: 1, column: 31 }
26584                                 },
26585                                 type: "Identifier",
26586                                 name: "two"
26587                             },
26588                             value: {
26589                                 range: [32, 33],
26590                                 loc: {
26591                                     start: { line: 1, column: 32 },
26592                                     end: { line: 1, column: 33 }
26593                                 },
26594                                 type: "Literal",
26595                                 value: 2,
26596                                 raw: "2"
26597                             },
26598                             kind: "init",
26599                             method: false,
26600                             shorthand: false
26601                         }, {
26602                             range: [35, 59],
26603                             loc: {
26604                                 start: { line: 1, column: 35 },
26605                                 end: { line: 1, column: 59 }
26606                             },
26607                             type: "Property",
26608                             key: {
26609                                 range: [35, 40],
26610                                 loc: {
26611                                     start: { line: 1, column: 35 },
26612                                     end: { line: 1, column: 40 }
26613                                 },
26614                                 type: "Identifier",
26615                                 name: "three"
26616                             },
26617                             value: {
26618                                 range: [42, 59],
26619                                 loc: {
26620                                     start: { line: 1, column: 42 },
26621                                     end: { line: 1, column: 59 }
26622                                 },
26623                                 type: "ObjectExpression",
26624                                 properties: [{
26625                                     range: [43, 50],
26626                                     loc: {
26627                                         start: { line: 1, column: 43 },
26628                                         end: { line: 1, column: 50 }
26629                                     },
26630                                     type: "Property",
26631                                     key: {
26632                                         range: [43, 45],
26633                                         loc: {
26634                                             start: { line: 1, column: 43 },
26635                                             end: { line: 1, column: 45 }
26636                                         },
26637                                         type: "Identifier",
26638                                         name: "aa"
26639                                     },
26640                                     value: {
26641                                         range: [47, 50],
26642                                         loc: {
26643                                             start: { line: 1, column: 47 },
26644                                             end: { line: 1, column: 50 }
26645                                         },
26646                                         type: "Literal",
26647                                         value: "a",
26648                                         raw: "\"a\""
26649                                     },
26650                                     kind: "init",
26651                                     method: false,
26652                                     shorthand: false
26653                                 }, {
26654                                     range: [51, 58],
26655                                     loc: {
26656                                         start: { line: 1, column: 51 },
26657                                         end: { line: 1, column: 58 }
26658                                     },
26659                                     type: "Property",
26660                                     key: {
26661                                         range: [51, 53],
26662                                         loc: {
26663                                             start: { line: 1, column: 51 },
26664                                             end: { line: 1, column: 53 }
26665                                         },
26666                                         type: "Identifier",
26667                                         name: "bb"
26668                                     },
26669                                     value: {
26670                                         range: [55, 58],
26671                                         loc: {
26672                                             start: { line: 1, column: 55 },
26673                                             end: { line: 1, column: 58 }
26674                                         },
26675                                         type: "Literal",
26676                                         value: "b",
26677                                         raw: "\"b\""
26678                                     },
26679                                     kind: "init",
26680                                     method: false,
26681                                     shorthand: false
26682                                 }]
26683                             },
26684                             kind: "init",
26685                             method: false,
26686                             shorthand: false
26687                         }, {
26688                             range: [60, 67],
26689                             loc: {
26690                                 start: { line: 1, column: 60 },
26691                                 end: { line: 1, column: 67 }
26692                             },
26693                             type: "Property",
26694                             key: {
26695                                 range: [60, 64],
26696                                 loc: {
26697                                     start: { line: 1, column: 60 },
26698                                     end: { line: 1, column: 64 }
26699                                 },
26700                                 type: "Identifier",
26701                                 name: "four"
26702                             },
26703                             value: {
26704                                 range: [66, 67],
26705                                 loc: {
26706                                     start: { line: 1, column: 66 },
26707                                     end: { line: 1, column: 67 }
26708                                 },
26709                                 type: "Literal",
26710                                 value: 4,
26711                                 raw: "4"
26712                             },
26713                             kind: "init",
26714                             method: false,
26715                             shorthand: false
26716                         }]
26717                     }
26718                 }],
26719                 kind: "var"
26720             }],
26721             errors: [{
26722                 index: 28,
26723                 lineNumber: 1,
26724                 column: 29,
26725                 message: "Error: Line 1: Unexpected token two"
26726             }, {
26727                 index: 51,
26728                 lineNumber: 1,
26729                 column: 52,
26730                 message: "Error: Line 1: Unexpected token bb"
26731             }, {
26732                 index: 60,
26733                 lineNumber: 1,
26734                 column: 61,
26735                 message: "Error: Line 1: Unexpected token four"
26736             }]
26737         },
26738
26739         'x = { y: z; }': {
26740             range: [0, 13],
26741             loc: {
26742                 start: { line: 1, column: 0 },
26743                 end: { line: 1, column: 13 }
26744             },
26745             type: "Program",
26746             body: [{
26747                 range: [0, 13],
26748                 loc: {
26749                     start: { line: 1, column: 0 },
26750                     end: { line: 1, column: 13 }
26751                 },
26752                 type: "ExpressionStatement",
26753                 expression: {
26754                     range: [0, 13],
26755                     loc: {
26756                         start: { line: 1, column: 0 },
26757                         end: { line: 1, column: 13 }
26758                     },
26759                     type: "AssignmentExpression",
26760                     operator: "=",
26761                     left: {
26762                         range: [0, 1],
26763                         loc: {
26764                             start: { line: 1, column: 0 },
26765                             end: { line: 1, column: 1 }
26766                         },
26767                         type: "Identifier",
26768                         name: "x"
26769                     },
26770                     right: {
26771                         range: [4, 13],
26772                         loc: {
26773                             start: { line: 1, column: 4 },
26774                             end: { line: 1, column: 13 }
26775                         },
26776                         type: "ObjectExpression",
26777                         properties: [{
26778                             range: [6, 10],
26779                             loc: {
26780                                 start: { line: 1, column: 6 },
26781                                 end: { line: 1, column: 10 }
26782                             },
26783                             type: "Property",
26784                             key: {
26785                                 range: [6, 7],
26786                                 loc: {
26787                                     start: { line: 1, column: 6 },
26788                                     end: { line: 1, column: 7 }
26789                                 },
26790                                 type: "Identifier",
26791                                 name: "y"
26792                             },
26793                             value: {
26794                                 range: [9, 10],
26795                                 loc: {
26796                                     start: { line: 1, column: 9 },
26797                                     end: { line: 1, column: 10 }
26798                                 },
26799                                 type: "Identifier",
26800                                 name: "z"
26801                             },
26802                             kind: "init",
26803                             method: false,
26804                             shorthand: false
26805                         }]
26806                     }
26807                 }
26808             }],
26809             errors: [{
26810                 index: 10,
26811                 lineNumber: 1,
26812                 column: 11,
26813                 message: "Error: Line 1: Unexpected token ;"
26814             }]
26815         },
26816
26817         'return': {
26818             type: 'Program',
26819             body: [{
26820                 type: 'ReturnStatement',
26821                 'argument': null,
26822                 range: [0, 6],
26823                 loc: {
26824                     start: { line: 1, column: 0 },
26825                     end: { line: 1, column: 6 }
26826                 }
26827             }],
26828             range: [0, 6],
26829             loc: {
26830                 start: { line: 1, column: 0 },
26831                 end: { line: 1, column: 6 }
26832             },
26833             errors: [{
26834                 index: 6,
26835                 lineNumber: 1,
26836                 column: 7,
26837                 message: 'Error: Line 1: Illegal return statement'
26838             }]
26839         },
26840
26841         '(function () { \'use strict\'; with (i); }())': {
26842             type: 'Program',
26843             body: [{
26844                 type: 'ExpressionStatement',
26845                 expression: {
26846                     type: 'CallExpression',
26847                     callee: {
26848                         type: 'FunctionExpression',
26849                         id: null,
26850                         params: [],
26851                         defaults: [],
26852                         body: {
26853                             type: 'BlockStatement',
26854                             body: [{
26855                                 type: 'ExpressionStatement',
26856                                 expression: {
26857                                     type: 'Literal',
26858                                     value: 'use strict',
26859                                     raw: '\'use strict\'',
26860                                     range: [15, 27],
26861                                     loc: {
26862                                         start: { line: 1, column: 15 },
26863                                         end: { line: 1, column: 27 }
26864                                     }
26865                                 },
26866                                 range: [15, 28],
26867                                 loc: {
26868                                     start: { line: 1, column: 15 },
26869                                     end: { line: 1, column: 28 }
26870                                 }
26871                             }, {
26872                                 type: 'WithStatement',
26873                                 object: {
26874                                     type: 'Identifier',
26875                                     name: 'i',
26876                                     range: [35, 36],
26877                                     loc: {
26878                                         start: { line: 1, column: 35 },
26879                                         end: { line: 1, column: 36 }
26880                                     }
26881                                 },
26882                                 body: {
26883                                     type: 'EmptyStatement',
26884                                     range: [37, 38],
26885                                     loc: {
26886                                         start: { line: 1, column: 37 },
26887                                         end: { line: 1, column: 38 }
26888                                     }
26889                                 },
26890                                 range: [29, 38],
26891                                 loc: {
26892                                     start: { line: 1, column: 29 },
26893                                     end: { line: 1, column: 38 }
26894                                 }
26895                             }],
26896                             range: [13, 40],
26897                             loc: {
26898                                 start: { line: 1, column: 13 },
26899                                 end: { line: 1, column: 40 }
26900                             }
26901                         },
26902                         rest: null,
26903                         generator: false,
26904                         expression: false,
26905                         range: [1, 40],
26906                         loc: {
26907                             start: { line: 1, column: 1 },
26908                             end: { line: 1, column: 40 }
26909                         }
26910                     },
26911                     'arguments': [],
26912                     range: [1, 42],
26913                     loc: {
26914                         start: { line: 1, column: 1 },
26915                         end: { line: 1, column: 42 }
26916                     }
26917                 },
26918                 range: [0, 43],
26919                 loc: {
26920                     start: { line: 1, column: 0 },
26921                     end: { line: 1, column: 43 }
26922                 }
26923             }],
26924             range: [0, 43],
26925             loc: {
26926                 start: { line: 1, column: 0 },
26927                 end: { line: 1, column: 43 }
26928             },
26929             errors: [{
26930                 index: 29,
26931                 lineNumber: 1,
26932                 column: 30,
26933                 message: 'Error: Line 1: Strict mode code may not include a with statement'
26934             }]
26935         },
26936
26937         '(function () { \'use strict\'; 021 }())': {
26938             type: 'Program',
26939             body: [{
26940                 type: 'ExpressionStatement',
26941                 expression: {
26942                     type: 'CallExpression',
26943                     callee: {
26944                         type: 'FunctionExpression',
26945                         id: null,
26946                         params: [],
26947                         defaults: [],
26948                         body: {
26949                             type: 'BlockStatement',
26950                             body: [{
26951                                 type: 'ExpressionStatement',
26952                                 expression: {
26953                                     type: 'Literal',
26954                                     value: 'use strict',
26955                                     raw: '\'use strict\'',
26956                                     range: [15, 27],
26957                                     loc: {
26958                                         start: { line: 1, column: 15 },
26959                                         end: { line: 1, column: 27 }
26960                                     }
26961                                 },
26962                                 range: [15, 28],
26963                                 loc: {
26964                                     start: { line: 1, column: 15 },
26965                                     end: { line: 1, column: 28 }
26966                                 }
26967                             }, {
26968                                 type: 'ExpressionStatement',
26969                                 expression: {
26970                                     type: 'Literal',
26971                                     value: 17,
26972                                     raw: "021",
26973                                     range: [29, 32],
26974                                     loc: {
26975                                         start: { line: 1, column: 29 },
26976                                         end: { line: 1, column: 32 }
26977                                     }
26978                                 },
26979                                 range: [29, 33],
26980                                 loc: {
26981                                     start: { line: 1, column: 29 },
26982                                     end: { line: 1, column: 33 }
26983                                 }
26984                             }],
26985                             range: [13, 34],
26986                             loc: {
26987                                 start: { line: 1, column: 13 },
26988                                 end: { line: 1, column: 34 }
26989                             }
26990                         },
26991                         rest: null,
26992                         generator: false,
26993                         expression: false,
26994                         range: [1, 34],
26995                         loc: {
26996                             start: { line: 1, column: 1 },
26997                             end: { line: 1, column: 34 }
26998                         }
26999                     },
27000                     'arguments': [],
27001                     range: [1, 36],
27002                     loc: {
27003                         start: { line: 1, column: 1 },
27004                         end: { line: 1, column: 36 }
27005                     }
27006                 },
27007                 range: [0, 37],
27008                 loc: {
27009                     start: { line: 1, column: 0 },
27010                     end: { line: 1, column: 37 }
27011                 }
27012             }],
27013             range: [0, 37],
27014             loc: {
27015                 start: { line: 1, column: 0 },
27016                 end: { line: 1, column: 37 }
27017             },
27018             errors: [{
27019                 index: 29,
27020                 lineNumber: 1,
27021                 column: 30,
27022                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
27023             }]
27024         },
27025
27026         '"use strict"; delete x': {
27027             type: 'Program',
27028             body: [{
27029                 type: 'ExpressionStatement',
27030                 expression: {
27031                     type: 'Literal',
27032                     value: 'use strict',
27033                     raw: '"use strict"',
27034                     range: [0, 12],
27035                     loc: {
27036                         start: { line: 1, column: 0 },
27037                         end: { line: 1, column: 12 }
27038                     }
27039                 },
27040                 range: [0, 13],
27041                 loc: {
27042                     start: { line: 1, column: 0 },
27043                     end: { line: 1, column: 13 }
27044                 }
27045             }, {
27046                 type: 'ExpressionStatement',
27047                 expression: {
27048                     type: 'UnaryExpression',
27049                     operator: 'delete',
27050                     argument: {
27051                         type: 'Identifier',
27052                         name: 'x',
27053                         range: [21, 22],
27054                         loc: {
27055                             start: { line: 1, column: 21 },
27056                             end: { line: 1, column: 22 }
27057                         }
27058                     },
27059                     prefix: true,
27060                     range: [14, 22],
27061                     loc: {
27062                         start: { line: 1, column: 14 },
27063                         end: { line: 1, column: 22 }
27064                     }
27065                 },
27066                 range: [14, 22],
27067                 loc: {
27068                     start: { line: 1, column: 14 },
27069                     end: { line: 1, column: 22 }
27070                 }
27071             }],
27072             range: [0, 22],
27073             loc: {
27074                 start: { line: 1, column: 0 },
27075                 end: { line: 1, column: 22 }
27076             },
27077             errors: [{
27078                 index: 22,
27079                 lineNumber: 1,
27080                 column: 23,
27081                 message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
27082             }]
27083         },
27084
27085         '"use strict"; try {} catch (eval) {}': {
27086             type: 'Program',
27087             body: [{
27088                 type: 'ExpressionStatement',
27089                 expression: {
27090                     type: 'Literal',
27091                     value: 'use strict',
27092                     raw: '"use strict"',
27093                     range: [0, 12],
27094                     loc: {
27095                         start: { line: 1, column: 0 },
27096                         end: { line: 1, column: 12 }
27097                     }
27098                 },
27099                 range: [0, 13],
27100                 loc: {
27101                     start: { line: 1, column: 0 },
27102                     end: { line: 1, column: 13 }
27103                 }
27104             }, {
27105                 type: 'TryStatement',
27106                 block: {
27107                     type: 'BlockStatement',
27108                     body: [],
27109                     range: [18, 20],
27110                     loc: {
27111                         start: { line: 1, column: 18 },
27112                         end: { line: 1, column: 20 }
27113                     }
27114                 },
27115                 guardedHandlers: [],
27116                 handlers: [{
27117                     type: 'CatchClause',
27118                     param: {
27119                         type: 'Identifier',
27120                         name: 'eval',
27121                         range: [28, 32],
27122                         loc: {
27123                             start: { line: 1, column: 28 },
27124                             end: { line: 1, column: 32 }
27125                         }
27126                     },
27127                     body: {
27128                         type: 'BlockStatement',
27129                         body: [],
27130                         range: [34, 36],
27131                         loc: {
27132                             start: { line: 1, column: 34 },
27133                             end: { line: 1, column: 36 }
27134                         }
27135                     },
27136                     range: [21, 36],
27137                     loc: {
27138                         start: { line: 1, column: 21 },
27139                         end: { line: 1, column: 36 }
27140                     }
27141                 }],
27142                 finalizer: null,
27143                 range: [14, 36],
27144                 loc: {
27145                     start: { line: 1, column: 14 },
27146                     end: { line: 1, column: 36 }
27147                 }
27148             }],
27149             range: [0, 36],
27150             loc: {
27151                 start: { line: 1, column: 0 },
27152                 end: { line: 1, column: 36 }
27153             },
27154             errors: [{
27155                 index: 32,
27156                 lineNumber: 1,
27157                 column: 33,
27158                 message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
27159             }]
27160         },
27161
27162         '"use strict"; try {} catch (arguments) {}': {
27163             type: 'Program',
27164             body: [{
27165                 type: 'ExpressionStatement',
27166                 expression: {
27167                     type: 'Literal',
27168                     value: 'use strict',
27169                     raw: '"use strict"',
27170                     range: [0, 12],
27171                     loc: {
27172                         start: { line: 1, column: 0 },
27173                         end: { line: 1, column: 12 }
27174                     }
27175                 },
27176                 range: [0, 13],
27177                 loc: {
27178                     start: { line: 1, column: 0 },
27179                     end: { line: 1, column: 13 }
27180                 }
27181             }, {
27182                 type: 'TryStatement',
27183                 block: {
27184                     type: 'BlockStatement',
27185                     body: [],
27186                     range: [18, 20],
27187                     loc: {
27188                         start: { line: 1, column: 18 },
27189                         end: { line: 1, column: 20 }
27190                     }
27191                 },
27192                 guardedHandlers: [],
27193                 handlers: [{
27194                     type: 'CatchClause',
27195                     param: {
27196                         type: 'Identifier',
27197                         name: 'arguments',
27198                         range: [28, 37],
27199                         loc: {
27200                             start: { line: 1, column: 28 },
27201                             end: { line: 1, column: 37 }
27202                         }
27203                     },
27204                     body: {
27205                         type: 'BlockStatement',
27206                         body: [],
27207                         range: [39, 41],
27208                         loc: {
27209                             start: { line: 1, column: 39 },
27210                             end: { line: 1, column: 41 }
27211                         }
27212                     },
27213                     range: [21, 41],
27214                     loc: {
27215                         start: { line: 1, column: 21 },
27216                         end: { line: 1, column: 41 }
27217                     }
27218                 }],
27219                 finalizer: null,
27220                 range: [14, 41],
27221                 loc: {
27222                     start: { line: 1, column: 14 },
27223                     end: { line: 1, column: 41 }
27224                 }
27225             }],
27226             range: [0, 41],
27227             loc: {
27228                 start: { line: 1, column: 0 },
27229                 end: { line: 1, column: 41 }
27230             },
27231             errors: [{
27232                 index: 37,
27233                 lineNumber: 1,
27234                 column: 38,
27235                 message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
27236             }]
27237         },
27238
27239         '"use strict"; var eval;': {
27240             type: 'Program',
27241             body: [{
27242                 type: 'ExpressionStatement',
27243                 expression: {
27244                     type: 'Literal',
27245                     value: 'use strict',
27246                     raw: '"use strict"',
27247                     range: [0, 12],
27248                     loc: {
27249                         start: { line: 1, column: 0 },
27250                         end: { line: 1, column: 12 }
27251                     }
27252                 },
27253                 range: [0, 13],
27254                 loc: {
27255                     start: { line: 1, column: 0 },
27256                     end: { line: 1, column: 13 }
27257                 }
27258             }, {
27259                 type: 'VariableDeclaration',
27260                 declarations: [{
27261                     type: 'VariableDeclarator',
27262                     id: {
27263                         type: 'Identifier',
27264                         name: 'eval',
27265                         range: [18, 22],
27266                         loc: {
27267                             start: { line: 1, column: 18 },
27268                             end: { line: 1, column: 22 }
27269                         }
27270                     },
27271                     init: null,
27272                     range: [18, 22],
27273                     loc: {
27274                         start: { line: 1, column: 18 },
27275                         end: { line: 1, column: 22 }
27276                     }
27277                 }],
27278                 kind: 'var',
27279                 range: [14, 23],
27280                 loc: {
27281                     start: { line: 1, column: 14 },
27282                     end: { line: 1, column: 23 }
27283                 }
27284             }],
27285             range: [0, 23],
27286             loc: {
27287                 start: { line: 1, column: 0 },
27288                 end: { line: 1, column: 23 }
27289             },
27290             errors: [{
27291                 index: 22,
27292                 lineNumber: 1,
27293                 column: 23,
27294                 message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
27295             }]
27296         },
27297
27298         '"use strict"; var arguments;': {
27299             type: 'Program',
27300             body: [{
27301                 type: 'ExpressionStatement',
27302                 expression: {
27303                     type: 'Literal',
27304                     value: 'use strict',
27305                     raw: '"use strict"',
27306                     range: [0, 12],
27307                     loc: {
27308                         start: { line: 1, column: 0 },
27309                         end: { line: 1, column: 12 }
27310                     }
27311                 },
27312                 range: [0, 13],
27313                 loc: {
27314                     start: { line: 1, column: 0 },
27315                     end: { line: 1, column: 13 }
27316                 }
27317             }, {
27318                 type: 'VariableDeclaration',
27319                 declarations: [{
27320                     type: 'VariableDeclarator',
27321                     id: {
27322                         type: 'Identifier',
27323                         name: 'arguments',
27324                         range: [18, 27],
27325                         loc: {
27326                             start: { line: 1, column: 18 },
27327                             end: { line: 1, column: 27 }
27328                         }
27329                     },
27330                     init: null,
27331                     range: [18, 27],
27332                     loc: {
27333                         start: { line: 1, column: 18 },
27334                         end: { line: 1, column: 27 }
27335                     }
27336                 }],
27337                 kind: 'var',
27338                 range: [14, 28],
27339                 loc: {
27340                     start: { line: 1, column: 14 },
27341                     end: { line: 1, column: 28 }
27342                 }
27343             }],
27344             range: [0, 28],
27345             loc: {
27346                 start: { line: 1, column: 0 },
27347                 end: { line: 1, column: 28 }
27348             },
27349             errors: [{
27350                 index: 27,
27351                 lineNumber: 1,
27352                 column: 28,
27353                 message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
27354             }]
27355         },
27356
27357         '"use strict"; eval = 0;': {
27358             type: 'Program',
27359             body: [{
27360                 type: 'ExpressionStatement',
27361                 expression: {
27362                     type: 'Literal',
27363                     value: 'use strict',
27364                     raw: '"use strict"',
27365                     range: [0, 12],
27366                     loc: {
27367                         start: { line: 1, column: 0 },
27368                         end: { line: 1, column: 12 }
27369                     }
27370                 },
27371                 range: [0, 13],
27372                 loc: {
27373                     start: { line: 1, column: 0 },
27374                     end: { line: 1, column: 13 }
27375                 }
27376             }, {
27377                 type: 'ExpressionStatement',
27378                 expression: {
27379                     type: 'AssignmentExpression',
27380                     operator: '=',
27381                     left: {
27382                         type: 'Identifier',
27383                         name: 'eval',
27384                         range: [14, 18],
27385                         loc: {
27386                             start: { line: 1, column: 14 },
27387                             end: { line: 1, column: 18 }
27388                         }
27389                     },
27390                     right: {
27391                         type: 'Literal',
27392                         value: 0,
27393                         raw: '0',
27394                         range: [21, 22],
27395                         loc: {
27396                             start: { line: 1, column: 21 },
27397                             end: { line: 1, column: 22 }
27398                         }
27399                     },
27400                     range: [14, 22],
27401                     loc: {
27402                         start: { line: 1, column: 14 },
27403                         end: { line: 1, column: 22 }
27404                     }
27405                 },
27406                 range: [14, 23],
27407                 loc: {
27408                     start: { line: 1, column: 14 },
27409                     end: { line: 1, column: 23 }
27410                 }
27411             }],
27412             range: [0, 23],
27413             loc: {
27414                 start: { line: 1, column: 0 },
27415                 end: { line: 1, column: 23 }
27416             },
27417             errors: [{
27418                 index: 14,
27419                 lineNumber: 1,
27420                 column: 15,
27421                 message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
27422             }]
27423         },
27424
27425         '"use strict"; eval++;': {
27426             type: 'Program',
27427             body: [{
27428                 type: 'ExpressionStatement',
27429                 expression: {
27430                     type: 'Literal',
27431                     value: 'use strict',
27432                     raw: '"use strict"',
27433                     range: [0, 12],
27434                     loc: {
27435                         start: { line: 1, column: 0 },
27436                         end: { line: 1, column: 12 }
27437                     }
27438                 },
27439                 range: [0, 13],
27440                 loc: {
27441                     start: { line: 1, column: 0 },
27442                     end: { line: 1, column: 13 }
27443                 }
27444             }, {
27445                 type: 'ExpressionStatement',
27446                 expression: {
27447                     type: 'UpdateExpression',
27448                     operator: '++',
27449                     argument: {
27450                         type: 'Identifier',
27451                         name: 'eval',
27452                         range: [14, 18],
27453                         loc: {
27454                             start: { line: 1, column: 14 },
27455                             end: { line: 1, column: 18 }
27456                         }
27457                     },
27458                     prefix: false,
27459                     range: [14, 20],
27460                     loc: {
27461                         start: { line: 1, column: 14 },
27462                         end: { line: 1, column: 20 }
27463                     }
27464                 },
27465                 range: [14, 21],
27466                 loc: {
27467                     start: { line: 1, column: 14 },
27468                     end: { line: 1, column: 21 }
27469                 }
27470             }],
27471             range: [0, 21],
27472             loc: {
27473                 start: { line: 1, column: 0 },
27474                 end: { line: 1, column: 21 }
27475             },
27476             errors: [{
27477                 index: 18,
27478                 lineNumber: 1,
27479                 column: 19,
27480                 message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
27481             }]
27482         },
27483
27484         '"use strict"; --eval;': {
27485             type: 'Program',
27486             body: [{
27487                 type: 'ExpressionStatement',
27488                 expression: {
27489                     type: 'Literal',
27490                     value: 'use strict',
27491                     raw: '"use strict"',
27492                     range: [0, 12],
27493                     loc: {
27494                         start: { line: 1, column: 0 },
27495                         end: { line: 1, column: 12 }
27496                     }
27497                 },
27498                 range: [0, 13],
27499                 loc: {
27500                     start: { line: 1, column: 0 },
27501                     end: { line: 1, column: 13 }
27502                 }
27503             }, {
27504                 type: 'ExpressionStatement',
27505                 expression: {
27506                     type: 'UpdateExpression',
27507                     operator: '--',
27508                     argument: {
27509                         type: 'Identifier',
27510                         name: 'eval',
27511                         range: [16, 20],
27512                         loc: {
27513                             start: { line: 1, column: 16 },
27514                             end: { line: 1, column: 20 }
27515                         }
27516                     },
27517                     prefix: true,
27518                     range: [14, 20],
27519                     loc: {
27520                         start: { line: 1, column: 14 },
27521                         end: { line: 1, column: 20 }
27522                     }
27523                 },
27524                 range: [14, 21],
27525                 loc: {
27526                     start: { line: 1, column: 14 },
27527                     end: { line: 1, column: 21 }
27528                 }
27529             }],
27530             range: [0, 21],
27531             loc: {
27532                 start: { line: 1, column: 0 },
27533                 end: { line: 1, column: 21 }
27534             },
27535             errors: [{
27536                 index: 20,
27537                 lineNumber: 1,
27538                 column: 21,
27539                 message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
27540             }]
27541         },
27542
27543         '"use strict"; arguments = 0;': {
27544             type: 'Program',
27545             body: [{
27546                 type: 'ExpressionStatement',
27547                 expression: {
27548                     type: 'Literal',
27549                     value: 'use strict',
27550                     raw: '"use strict"',
27551                     range: [0, 12],
27552                     loc: {
27553                         start: { line: 1, column: 0 },
27554                         end: { line: 1, column: 12 }
27555                     }
27556                 },
27557                 range: [0, 13],
27558                 loc: {
27559                     start: { line: 1, column: 0 },
27560                     end: { line: 1, column: 13 }
27561                 }
27562             }, {
27563                 type: 'ExpressionStatement',
27564                 expression: {
27565                     type: 'AssignmentExpression',
27566                     operator: '=',
27567                     left: {
27568                         type: 'Identifier',
27569                         name: 'arguments',
27570                         range: [14, 23],
27571                         loc: {
27572                             start: { line: 1, column: 14 },
27573                             end: { line: 1, column: 23 }
27574                         }
27575                     },
27576                     right: {
27577                         type: 'Literal',
27578                         value: 0,
27579                         raw: '0',
27580                         range: [26, 27],
27581                         loc: {
27582                             start: { line: 1, column: 26 },
27583                             end: { line: 1, column: 27 }
27584                         }
27585                     },
27586                     range: [14, 27],
27587                     loc: {
27588                         start: { line: 1, column: 14 },
27589                         end: { line: 1, column: 27 }
27590                     }
27591                 },
27592                 range: [14, 28],
27593                 loc: {
27594                     start: { line: 1, column: 14 },
27595                     end: { line: 1, column: 28 }
27596                 }
27597             }],
27598             range: [0, 28],
27599             loc: {
27600                 start: { line: 1, column: 0 },
27601                 end: { line: 1, column: 28 }
27602             },
27603             errors: [{
27604                 index: 14,
27605                 lineNumber: 1,
27606                 column: 15,
27607                 message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
27608             }]
27609         },
27610
27611         '"use strict"; arguments--;': {
27612             type: 'Program',
27613             body: [{
27614                 type: 'ExpressionStatement',
27615                 expression: {
27616                     type: 'Literal',
27617                     value: 'use strict',
27618                     raw: '"use strict"',
27619                     range: [0, 12],
27620                     loc: {
27621                         start: { line: 1, column: 0 },
27622                         end: { line: 1, column: 12 }
27623                     }
27624                 },
27625                 range: [0, 13],
27626                 loc: {
27627                     start: { line: 1, column: 0 },
27628                     end: { line: 1, column: 13 }
27629                 }
27630             }, {
27631                 type: 'ExpressionStatement',
27632                 expression: {
27633                     type: 'UpdateExpression',
27634                     operator: '--',
27635                     argument: {
27636                         type: 'Identifier',
27637                         name: 'arguments',
27638                         range: [14, 23],
27639                         loc: {
27640                             start: { line: 1, column: 14 },
27641                             end: { line: 1, column: 23 }
27642                         }
27643                     },
27644                     prefix: false,
27645                     range: [14, 25],
27646                     loc: {
27647                         start: { line: 1, column: 14 },
27648                         end: { line: 1, column: 25 }
27649                     }
27650                 },
27651                 range: [14, 26],
27652                 loc: {
27653                     start: { line: 1, column: 14 },
27654                     end: { line: 1, column: 26 }
27655                 }
27656             }],
27657             range: [0, 26],
27658             loc: {
27659                 start: { line: 1, column: 0 },
27660                 end: { line: 1, column: 26 }
27661             },
27662             errors: [{
27663                 index: 23,
27664                 lineNumber: 1,
27665                 column: 24,
27666                 message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
27667             }]
27668         },
27669
27670         '"use strict"; ++arguments;': {
27671             type: 'Program',
27672             body: [{
27673                 type: 'ExpressionStatement',
27674                 expression: {
27675                     type: 'Literal',
27676                     value: 'use strict',
27677                     raw: '"use strict"',
27678                     range: [0, 12],
27679                     loc: {
27680                         start: { line: 1, column: 0 },
27681                         end: { line: 1, column: 12 }
27682                     }
27683                 },
27684                 range: [0, 13],
27685                 loc: {
27686                     start: { line: 1, column: 0 },
27687                     end: { line: 1, column: 13 }
27688                 }
27689             }, {
27690                 type: 'ExpressionStatement',
27691                 expression: {
27692                     type: 'UpdateExpression',
27693                     operator: '++',
27694                     argument: {
27695                         type: 'Identifier',
27696                         name: 'arguments',
27697                         range: [16, 25],
27698                         loc: {
27699                             start: { line: 1, column: 16 },
27700                             end: { line: 1, column: 25 }
27701                         }
27702                     },
27703                     prefix: true,
27704                     range: [14, 25],
27705                     loc: {
27706                         start: { line: 1, column: 14 },
27707                         end: { line: 1, column: 25 }
27708                     }
27709                 },
27710                 range: [14, 26],
27711                 loc: {
27712                     start: { line: 1, column: 14 },
27713                     end: { line: 1, column: 26 }
27714                 }
27715             }],
27716             range: [0, 26],
27717             loc: {
27718                 start: { line: 1, column: 0 },
27719                 end: { line: 1, column: 26 }
27720             },
27721             errors: [{
27722                 index: 25,
27723                 lineNumber: 1,
27724                 column: 26,
27725                 message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
27726             }]
27727         },
27728
27729
27730         '"use strict";x={y:1,y:1}': {
27731             type: 'Program',
27732             body: [{
27733                 type: 'ExpressionStatement',
27734                 expression: {
27735                     type: 'Literal',
27736                     value: 'use strict',
27737                     raw: '"use strict"',
27738                     range: [0, 12],
27739                     loc: {
27740                         start: { line: 1, column: 0 },
27741                         end: { line: 1, column: 12 }
27742                     }
27743                 },
27744                 range: [0, 13],
27745                 loc: {
27746                     start: { line: 1, column: 0 },
27747                     end: { line: 1, column: 13 }
27748                 }
27749             }, {
27750                 type: 'ExpressionStatement',
27751                 expression: {
27752                     type: 'AssignmentExpression',
27753                     operator: '=',
27754                     left: {
27755                         type: 'Identifier',
27756                         name: 'x',
27757                         range: [13, 14],
27758                         loc: {
27759                             start: { line: 1, column: 13 },
27760                             end: { line: 1, column: 14 }
27761                         }
27762                     },
27763                     right: {
27764                         type: 'ObjectExpression',
27765                         properties: [{
27766                             type: 'Property',
27767                             key: {
27768                                 type: 'Identifier',
27769                                 name: 'y',
27770                                 range: [16, 17],
27771                                 loc: {
27772                                     start: { line: 1, column: 16 },
27773                                     end: { line: 1, column: 17 }
27774                                 }
27775                             },
27776                             value: {
27777                                 type: 'Literal',
27778                                 value: 1,
27779                                 raw: '1',
27780                                 range: [18, 19],
27781                                 loc: {
27782                                     start: { line: 1, column: 18 },
27783                                     end: { line: 1, column: 19 }
27784                                 }
27785                             },
27786                             kind: 'init',
27787                             method: false,
27788                             shorthand: false,
27789                             range: [16, 19],
27790                             loc: {
27791                                 start: { line: 1, column: 16 },
27792                                 end: { line: 1, column: 19 }
27793                             }
27794                         }, {
27795                             type: 'Property',
27796                             key: {
27797                                 type: 'Identifier',
27798                                 name: 'y',
27799                                 range: [20, 21],
27800                                 loc: {
27801                                     start: { line: 1, column: 20 },
27802                                     end: { line: 1, column: 21 }
27803                                 }
27804                             },
27805                             value: {
27806                                 type: 'Literal',
27807                                 value: 1,
27808                                 raw: '1',
27809                                 range: [22, 23],
27810                                 loc: {
27811                                     start: { line: 1, column: 22 },
27812                                     end: { line: 1, column: 23 }
27813                                 }
27814                             },
27815                             kind: 'init',
27816                             method: false,
27817                             shorthand: false,
27818                             range: [20, 23],
27819                             loc: {
27820                                 start: { line: 1, column: 20 },
27821                                 end: { line: 1, column: 23 }
27822                             }
27823                         }],
27824                         range: [15, 24],
27825                         loc: {
27826                             start: { line: 1, column: 15 },
27827                             end: { line: 1, column: 24 }
27828                         }
27829                     },
27830                     range: [13, 24],
27831                     loc: {
27832                         start: { line: 1, column: 13 },
27833                         end: { line: 1, column: 24 }
27834                     }
27835                 },
27836                 range: [13, 24],
27837                 loc: {
27838                     start: { line: 1, column: 13 },
27839                     end: { line: 1, column: 24 }
27840                 }
27841             }],
27842             range: [0, 24],
27843             loc: {
27844                 start: { line: 1, column: 0 },
27845                 end: { line: 1, column: 24 }
27846             },
27847             errors: [{
27848                 index: 23,
27849                 lineNumber: 1,
27850                 column: 24,
27851                 message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
27852             }]
27853         },
27854
27855         '"use strict"; function eval() {};': {
27856             type: 'Program',
27857             body: [{
27858                 type: 'ExpressionStatement',
27859                 expression: {
27860                     type: 'Literal',
27861                     value: 'use strict',
27862                     raw: '"use strict"',
27863                     range: [0, 12],
27864                     loc: {
27865                         start: { line: 1, column: 0 },
27866                         end: { line: 1, column: 12 }
27867                     }
27868                 },
27869                 range: [0, 13],
27870                 loc: {
27871                     start: { line: 1, column: 0 },
27872                     end: { line: 1, column: 13 }
27873                 }
27874             }, {
27875                 type: 'FunctionDeclaration',
27876                 id: {
27877                     type: 'Identifier',
27878                     name: 'eval',
27879                     range: [23, 27],
27880                     loc: {
27881                         start: { line: 1, column: 23 },
27882                         end: { line: 1, column: 27 }
27883                     }
27884                 },
27885                 params: [],
27886                 defaults: [],
27887                 body: {
27888                     type: 'BlockStatement',
27889                     body: [],
27890                     range: [30, 32],
27891                     loc: {
27892                         start: { line: 1, column: 30 },
27893                         end: { line: 1, column: 32 }
27894                     }
27895                 },
27896                 rest: null,
27897                 generator: false,
27898                 expression: false,
27899                 range: [14, 32],
27900                 loc: {
27901                     start: { line: 1, column: 14 },
27902                     end: { line: 1, column: 32 }
27903                 }
27904             }, {
27905                 type: 'EmptyStatement',
27906                 range: [32, 33],
27907                 loc: {
27908                     start: { line: 1, column: 32 },
27909                     end: { line: 1, column: 33 }
27910                 }
27911             }],
27912             range: [0, 33],
27913             loc: {
27914                 start: { line: 1, column: 0 },
27915                 end: { line: 1, column: 33 }
27916             },
27917             errors: [{
27918                 index: 23,
27919                 lineNumber: 1,
27920                 column: 24,
27921                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
27922             }]
27923         },
27924
27925         '"use strict"; function arguments() {};': {
27926             type: 'Program',
27927             body: [{
27928                 type: 'ExpressionStatement',
27929                 expression: {
27930                     type: 'Literal',
27931                     value: 'use strict',
27932                     raw: '"use strict"',
27933                     range: [0, 12],
27934                     loc: {
27935                         start: { line: 1, column: 0 },
27936                         end: { line: 1, column: 12 }
27937                     }
27938                 },
27939                 range: [0, 13],
27940                 loc: {
27941                     start: { line: 1, column: 0 },
27942                     end: { line: 1, column: 13 }
27943                 }
27944             }, {
27945                 type: 'FunctionDeclaration',
27946                 id: {
27947                     type: 'Identifier',
27948                     name: 'arguments',
27949                     range: [23, 32],
27950                     loc: {
27951                         start: { line: 1, column: 23 },
27952                         end: { line: 1, column: 32 }
27953                     }
27954                 },
27955                 params: [],
27956                 defaults: [],
27957                 body: {
27958                     type: 'BlockStatement',
27959                     body: [],
27960                     range: [35, 37],
27961                     loc: {
27962                         start: { line: 1, column: 35 },
27963                         end: { line: 1, column: 37 }
27964                     }
27965                 },
27966                 rest: null,
27967                 generator: false,
27968                 expression: false,
27969                 range: [14, 37],
27970                 loc: {
27971                     start: { line: 1, column: 14 },
27972                     end: { line: 1, column: 37 }
27973                 }
27974             }, {
27975                 type: 'EmptyStatement',
27976                 range: [37, 38],
27977                 loc: {
27978                     start: { line: 1, column: 37 },
27979                     end: { line: 1, column: 38 }
27980                 }
27981             }],
27982             range: [0, 38],
27983             loc: {
27984                 start: { line: 1, column: 0 },
27985                 end: { line: 1, column: 38 }
27986             },
27987             errors: [{
27988                 index: 23,
27989                 lineNumber: 1,
27990                 column: 24,
27991                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
27992             }]
27993         },
27994
27995         '"use strict"; function interface() {};': {
27996             type: 'Program',
27997             body: [{
27998                 type: 'ExpressionStatement',
27999                 expression: {
28000                     type: 'Literal',
28001                     value: 'use strict',
28002                     raw: '"use strict"',
28003                     range: [0, 12],
28004                     loc: {
28005                         start: { line: 1, column: 0 },
28006                         end: { line: 1, column: 12 }
28007                     }
28008                 },
28009                 range: [0, 13],
28010                 loc: {
28011                     start: { line: 1, column: 0 },
28012                     end: { line: 1, column: 13 }
28013                 }
28014             }, {
28015                 type: 'FunctionDeclaration',
28016                 id: {
28017                     type: 'Identifier',
28018                     name: 'interface',
28019                     range: [23, 32],
28020                     loc: {
28021                         start: { line: 1, column: 23 },
28022                         end: { line: 1, column: 32 }
28023                     }
28024                 },
28025                 params: [],
28026                 defaults: [],
28027                 body: {
28028                     type: 'BlockStatement',
28029                     body: [],
28030                     range: [35, 37],
28031                     loc: {
28032                         start: { line: 1, column: 35 },
28033                         end: { line: 1, column: 37 }
28034                     }
28035                 },
28036                 rest: null,
28037                 generator: false,
28038                 expression: false,
28039                 range: [14, 37],
28040                 loc: {
28041                     start: { line: 1, column: 14 },
28042                     end: { line: 1, column: 37 }
28043                 }
28044             }, {
28045                 type: 'EmptyStatement',
28046                 range: [37, 38],
28047                 loc: {
28048                     start: { line: 1, column: 37 },
28049                     end: { line: 1, column: 38 }
28050                 }
28051             }],
28052             range: [0, 38],
28053             loc: {
28054                 start: { line: 1, column: 0 },
28055                 end: { line: 1, column: 38 }
28056             },
28057             errors: [{
28058                 index: 23,
28059                 lineNumber: 1,
28060                 column: 24,
28061                 message: 'Error: Line 1: Use of future reserved word in strict mode'
28062             }]
28063         },
28064
28065         '"use strict"; (function eval() {});': {
28066             type: 'Program',
28067             body: [{
28068                 type: 'ExpressionStatement',
28069                 expression: {
28070                     type: 'Literal',
28071                     value: 'use strict',
28072                     raw: '"use strict"',
28073                     range: [0, 12],
28074                     loc: {
28075                         start: { line: 1, column: 0 },
28076                         end: { line: 1, column: 12 }
28077                     }
28078                 },
28079                 range: [0, 13],
28080                 loc: {
28081                     start: { line: 1, column: 0 },
28082                     end: { line: 1, column: 13 }
28083                 }
28084             }, {
28085                 type: 'ExpressionStatement',
28086                 expression: {
28087                     type: 'FunctionExpression',
28088                     id: {
28089                         type: 'Identifier',
28090                         name: 'eval',
28091                         range: [24, 28],
28092                         loc: {
28093                             start: { line: 1, column: 24 },
28094                             end: { line: 1, column: 28 }
28095                         }
28096                     },
28097                     params: [],
28098                     defaults: [],
28099                     body: {
28100                         type: 'BlockStatement',
28101                         body: [],
28102                         range: [31, 33],
28103                         loc: {
28104                             start: { line: 1, column: 31 },
28105                             end: { line: 1, column: 33 }
28106                         }
28107                     },
28108                     rest: null,
28109                     generator: false,
28110                     expression: false,
28111                     range: [15, 33],
28112                     loc: {
28113                         start: { line: 1, column: 15 },
28114                         end: { line: 1, column: 33 }
28115                     }
28116                 },
28117                 range: [14, 35],
28118                 loc: {
28119                     start: { line: 1, column: 14 },
28120                     end: { line: 1, column: 35 }
28121                 }
28122             }],
28123             range: [0, 35],
28124             loc: {
28125                 start: { line: 1, column: 0 },
28126                 end: { line: 1, column: 35 }
28127             },
28128             errors: [{
28129                 index: 24,
28130                 lineNumber: 1,
28131                 column: 25,
28132                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
28133             }]
28134         },
28135
28136         '"use strict"; (function arguments() {});': {
28137             type: 'Program',
28138             body: [{
28139                 type: 'ExpressionStatement',
28140                 expression: {
28141                     type: 'Literal',
28142                     value: 'use strict',
28143                     raw: '"use strict"',
28144                     range: [0, 12],
28145                     loc: {
28146                         start: { line: 1, column: 0 },
28147                         end: { line: 1, column: 12 }
28148                     }
28149                 },
28150                 range: [0, 13],
28151                 loc: {
28152                     start: { line: 1, column: 0 },
28153                     end: { line: 1, column: 13 }
28154                 }
28155             }, {
28156                 type: 'ExpressionStatement',
28157                 expression: {
28158                     type: 'FunctionExpression',
28159                     id: {
28160                         type: 'Identifier',
28161                         name: 'arguments',
28162                         range: [24, 33],
28163                         loc: {
28164                             start: { line: 1, column: 24 },
28165                             end: { line: 1, column: 33 }
28166                         }
28167                     },
28168                     params: [],
28169                     defaults: [],
28170                     body: {
28171                         type: 'BlockStatement',
28172                         body: [],
28173                         range: [36, 38],
28174                         loc: {
28175                             start: { line: 1, column: 36 },
28176                             end: { line: 1, column: 38 }
28177                         }
28178                     },
28179                     rest: null,
28180                     generator: false,
28181                     expression: false,
28182                     range: [15, 38],
28183                     loc: {
28184                         start: { line: 1, column: 15 },
28185                         end: { line: 1, column: 38 }
28186                     }
28187                 },
28188                 range: [14, 40],
28189                 loc: {
28190                     start: { line: 1, column: 14 },
28191                     end: { line: 1, column: 40 }
28192                 }
28193             }],
28194             range: [0, 40],
28195             loc: {
28196                 start: { line: 1, column: 0 },
28197                 end: { line: 1, column: 40 }
28198             },
28199             errors: [{
28200                 index: 24,
28201                 lineNumber: 1,
28202                 column: 25,
28203                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
28204             }]
28205         },
28206
28207         '"use strict"; (function interface() {});': {
28208             type: 'Program',
28209             body: [{
28210                 type: 'ExpressionStatement',
28211                 expression: {
28212                     type: 'Literal',
28213                     value: 'use strict',
28214                     raw: '"use strict"',
28215                     range: [0, 12],
28216                     loc: {
28217                         start: { line: 1, column: 0 },
28218                         end: { line: 1, column: 12 }
28219                     }
28220                 },
28221                 range: [0, 13],
28222                 loc: {
28223                     start: { line: 1, column: 0 },
28224                     end: { line: 1, column: 13 }
28225                 }
28226             }, {
28227                 type: 'ExpressionStatement',
28228                 expression: {
28229                     type: 'FunctionExpression',
28230                     id: {
28231                         type: 'Identifier',
28232                         name: 'interface',
28233                         range: [24, 33],
28234                         loc: {
28235                             start: { line: 1, column: 24 },
28236                             end: { line: 1, column: 33 }
28237                         }
28238                     },
28239                     params: [],
28240                     defaults: [],
28241                     body: {
28242                         type: 'BlockStatement',
28243                         body: [],
28244                         range: [36, 38],
28245                         loc: {
28246                             start: { line: 1, column: 36 },
28247                             end: { line: 1, column: 38 }
28248                         }
28249                     },
28250                     rest: null,
28251                     generator: false,
28252                     expression: false,
28253                     range: [15, 38],
28254                     loc: {
28255                         start: { line: 1, column: 15 },
28256                         end: { line: 1, column: 38 }
28257                     }
28258                 },
28259                 range: [14, 40],
28260                 loc: {
28261                     start: { line: 1, column: 14 },
28262                     end: { line: 1, column: 40 }
28263                 }
28264             }],
28265             range: [0, 40],
28266             loc: {
28267                 start: { line: 1, column: 0 },
28268                 end: { line: 1, column: 40 }
28269             },
28270             errors: [{
28271                 index: 24,
28272                 lineNumber: 1,
28273                 column: 25,
28274                 message: 'Error: Line 1: Use of future reserved word in strict mode'
28275             }]
28276         },
28277
28278         '"use strict"; function f(eval) {};': {
28279             type: 'Program',
28280             body: [{
28281                 type: 'ExpressionStatement',
28282                 expression: {
28283                     type: 'Literal',
28284                     value: 'use strict',
28285                     raw: '"use strict"',
28286                     range: [0, 12],
28287                     loc: {
28288                         start: { line: 1, column: 0 },
28289                         end: { line: 1, column: 12 }
28290                     }
28291                 },
28292                 range: [0, 13],
28293                 loc: {
28294                     start: { line: 1, column: 0 },
28295                     end: { line: 1, column: 13 }
28296                 }
28297             }, {
28298                 type: 'FunctionDeclaration',
28299                 id: {
28300                     type: 'Identifier',
28301                     name: 'f',
28302                     range: [23, 24],
28303                     loc: {
28304                         start: { line: 1, column: 23 },
28305                         end: { line: 1, column: 24 }
28306                     }
28307                 },
28308                 params: [{
28309                     type: 'Identifier',
28310                     name: 'eval',
28311                     range: [25, 29],
28312                     loc: {
28313                         start: { line: 1, column: 25 },
28314                         end: { line: 1, column: 29 }
28315                     }
28316                 }],
28317                 defaults: [],
28318                 body: {
28319                     type: 'BlockStatement',
28320                     body: [],
28321                     range: [31, 33],
28322                     loc: {
28323                         start: { line: 1, column: 31 },
28324                         end: { line: 1, column: 33 }
28325                     }
28326                 },
28327                 rest: null,
28328                 generator: false,
28329                 expression: false,
28330                 range: [14, 33],
28331                 loc: {
28332                     start: { line: 1, column: 14 },
28333                     end: { line: 1, column: 33 }
28334                 }
28335             }, {
28336                 type: 'EmptyStatement',
28337                 range: [33, 34],
28338                 loc: {
28339                     start: { line: 1, column: 33 },
28340                     end: { line: 1, column: 34 }
28341                 }
28342             }],
28343             range: [0, 34],
28344             loc: {
28345                 start: { line: 1, column: 0 },
28346                 end: { line: 1, column: 34 }
28347             },
28348             errors: [{
28349                 index: 25,
28350                 lineNumber: 1,
28351                 column: 26,
28352                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
28353             }]
28354         },
28355
28356         '"use strict"; function f(arguments) {};': {
28357             type: 'Program',
28358             body: [{
28359                 type: 'ExpressionStatement',
28360                 expression: {
28361                     type: 'Literal',
28362                     value: 'use strict',
28363                     raw: '"use strict"',
28364                     range: [0, 12],
28365                     loc: {
28366                         start: { line: 1, column: 0 },
28367                         end: { line: 1, column: 12 }
28368                     }
28369                 },
28370                 range: [0, 13],
28371                 loc: {
28372                     start: { line: 1, column: 0 },
28373                     end: { line: 1, column: 13 }
28374                 }
28375             }, {
28376                 type: 'FunctionDeclaration',
28377                 id: {
28378                     type: 'Identifier',
28379                     name: 'f',
28380                     range: [23, 24],
28381                     loc: {
28382                         start: { line: 1, column: 23 },
28383                         end: { line: 1, column: 24 }
28384                     }
28385                 },
28386                 params: [{
28387                     type: 'Identifier',
28388                     name: 'arguments',
28389                     range: [25, 34],
28390                     loc: {
28391                         start: { line: 1, column: 25 },
28392                         end: { line: 1, column: 34 }
28393                     }
28394                 }],
28395                 defaults: [],
28396                 body: {
28397                     type: 'BlockStatement',
28398                     body: [],
28399                     range: [36, 38],
28400                     loc: {
28401                         start: { line: 1, column: 36 },
28402                         end: { line: 1, column: 38 }
28403                     }
28404                 },
28405                 rest: null,
28406                 generator: false,
28407                 expression: false,
28408                 range: [14, 38],
28409                 loc: {
28410                     start: { line: 1, column: 14 },
28411                     end: { line: 1, column: 38 }
28412                 }
28413             }, {
28414                 type: 'EmptyStatement',
28415                 range: [38, 39],
28416                 loc: {
28417                     start: { line: 1, column: 38 },
28418                     end: { line: 1, column: 39 }
28419                 }
28420             }],
28421             range: [0, 39],
28422             loc: {
28423                 start: { line: 1, column: 0 },
28424                 end: { line: 1, column: 39 }
28425             },
28426             errors: [{
28427                 index: 25,
28428                 lineNumber: 1,
28429                 column: 26,
28430                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
28431             }]
28432         },
28433
28434         '"use strict"; function f(foo,  foo) {};': {
28435             type: 'Program',
28436             body: [{
28437                 type: 'ExpressionStatement',
28438                 expression: {
28439                     type: 'Literal',
28440                     value: 'use strict',
28441                     raw: '"use strict"',
28442                     range: [0, 12],
28443                     loc: {
28444                         start: { line: 1, column: 0 },
28445                         end: { line: 1, column: 12 }
28446                     }
28447                 },
28448                 range: [0, 13],
28449                 loc: {
28450                     start: { line: 1, column: 0 },
28451                     end: { line: 1, column: 13 }
28452                 }
28453             }, {
28454                 type: 'FunctionDeclaration',
28455                 id: {
28456                     type: 'Identifier',
28457                     name: 'f',
28458                     range: [23, 24],
28459                     loc: {
28460                         start: { line: 1, column: 23 },
28461                         end: { line: 1, column: 24 }
28462                     }
28463                 },
28464                 params: [{
28465                     type: 'Identifier',
28466                     name: 'foo',
28467                     range: [25, 28],
28468                     loc: {
28469                         start: { line: 1, column: 25 },
28470                         end: { line: 1, column: 28 }
28471                     }
28472                 }, {
28473                     type: 'Identifier',
28474                     name: 'foo',
28475                     range: [31, 34],
28476                     loc: {
28477                         start: { line: 1, column: 31 },
28478                         end: { line: 1, column: 34 }
28479                     }
28480                 }],
28481                 defaults: [],
28482                 body: {
28483                     type: 'BlockStatement',
28484                     body: [],
28485                     range: [36, 38],
28486                     loc: {
28487                         start: { line: 1, column: 36 },
28488                         end: { line: 1, column: 38 }
28489                     }
28490                 },
28491                 rest: null,
28492                 generator: false,
28493                 expression: false,
28494                 range: [14, 38],
28495                 loc: {
28496                     start: { line: 1, column: 14 },
28497                     end: { line: 1, column: 38 }
28498                 }
28499             }, {
28500                 type: 'EmptyStatement',
28501                 range: [38, 39],
28502                 loc: {
28503                     start: { line: 1, column: 38 },
28504                     end: { line: 1, column: 39 }
28505                 }
28506             }],
28507             range: [0, 39],
28508             loc: {
28509                 start: { line: 1, column: 0 },
28510                 end: { line: 1, column: 39 }
28511             },
28512             errors: [{
28513                 index: 31,
28514                 lineNumber: 1,
28515                 column: 32,
28516                 message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
28517             }]
28518         },
28519
28520         '"use strict"; (function f(eval) {});': {
28521             type: 'Program',
28522             body: [{
28523                 type: 'ExpressionStatement',
28524                 expression: {
28525                     type: 'Literal',
28526                     value: 'use strict',
28527                     raw: '"use strict"',
28528                     range: [0, 12],
28529                     loc: {
28530                         start: { line: 1, column: 0 },
28531                         end: { line: 1, column: 12 }
28532                     }
28533                 },
28534                 range: [0, 13],
28535                 loc: {
28536                     start: { line: 1, column: 0 },
28537                     end: { line: 1, column: 13 }
28538                 }
28539             }, {
28540                 type: 'ExpressionStatement',
28541                 expression: {
28542                     type: 'FunctionExpression',
28543                     id: {
28544                         type: 'Identifier',
28545                         name: 'f',
28546                         range: [24, 25],
28547                         loc: {
28548                             start: { line: 1, column: 24 },
28549                             end: { line: 1, column: 25 }
28550                         }
28551                     },
28552                     params: [{
28553                         type: 'Identifier',
28554                         name: 'eval',
28555                         range: [26, 30],
28556                         loc: {
28557                             start: { line: 1, column: 26 },
28558                             end: { line: 1, column: 30 }
28559                         }
28560                     }],
28561                     defaults: [],
28562                     body: {
28563                         type: 'BlockStatement',
28564                         body: [],
28565                         range: [32, 34],
28566                         loc: {
28567                             start: { line: 1, column: 32 },
28568                             end: { line: 1, column: 34 }
28569                         }
28570                     },
28571                     rest: null,
28572                     generator: false,
28573                     expression: false,
28574                     range: [15, 34],
28575                     loc: {
28576                         start: { line: 1, column: 15 },
28577                         end: { line: 1, column: 34 }
28578                     }
28579                 },
28580                 range: [14, 36],
28581                 loc: {
28582                     start: { line: 1, column: 14 },
28583                     end: { line: 1, column: 36 }
28584                 }
28585             }],
28586             range: [0, 36],
28587             loc: {
28588                 start: { line: 1, column: 0 },
28589                 end: { line: 1, column: 36 }
28590             },
28591             errors: [{
28592                 index: 26,
28593                 lineNumber: 1,
28594                 column: 27,
28595                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
28596             }]
28597         },
28598
28599
28600         '"use strict"; (function f(arguments) {});': {
28601             type: 'Program',
28602             body: [{
28603                 type: 'ExpressionStatement',
28604                 expression: {
28605                     type: 'Literal',
28606                     value: 'use strict',
28607                     raw: '"use strict"',
28608                     range: [0, 12],
28609                     loc: {
28610                         start: { line: 1, column: 0 },
28611                         end: { line: 1, column: 12 }
28612                     }
28613                 },
28614                 range: [0, 13],
28615                 loc: {
28616                     start: { line: 1, column: 0 },
28617                     end: { line: 1, column: 13 }
28618                 }
28619             }, {
28620                 type: 'ExpressionStatement',
28621                 expression: {
28622                     type: 'FunctionExpression',
28623                     id: {
28624                         type: 'Identifier',
28625                         name: 'f',
28626                         range: [24, 25],
28627                         loc: {
28628                             start: { line: 1, column: 24 },
28629                             end: { line: 1, column: 25 }
28630                         }
28631                     },
28632                     params: [{
28633                         type: 'Identifier',
28634                         name: 'arguments',
28635                         range: [26, 35],
28636                         loc: {
28637                             start: { line: 1, column: 26 },
28638                             end: { line: 1, column: 35 }
28639                         }
28640                     }],
28641                     defaults: [],
28642                     body: {
28643                         type: 'BlockStatement',
28644                         body: [],
28645                         range: [37, 39],
28646                         loc: {
28647                             start: { line: 1, column: 37 },
28648                             end: { line: 1, column: 39 }
28649                         }
28650                     },
28651                     rest: null,
28652                     generator: false,
28653                     expression: false,
28654                     range: [15, 39],
28655                     loc: {
28656                         start: { line: 1, column: 15 },
28657                         end: { line: 1, column: 39 }
28658                     }
28659                 },
28660                 range: [14, 41],
28661                 loc: {
28662                     start: { line: 1, column: 14 },
28663                     end: { line: 1, column: 41 }
28664                 }
28665             }],
28666             range: [0, 41],
28667             loc: {
28668                 start: { line: 1, column: 0 },
28669                 end: { line: 1, column: 41 }
28670             },
28671             errors: [{
28672                 index: 26,
28673                 lineNumber: 1,
28674                 column: 27,
28675                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
28676             }]
28677         },
28678
28679         '"use strict"; (function f(foo,  foo) {});': {
28680             type: 'Program',
28681             body: [{
28682                 type: 'ExpressionStatement',
28683                 expression: {
28684                     type: 'Literal',
28685                     value: 'use strict',
28686                     raw: '"use strict"',
28687                     range: [0, 12],
28688                     loc: {
28689                         start: { line: 1, column: 0 },
28690                         end: { line: 1, column: 12 }
28691                     }
28692                 },
28693                 range: [0, 13],
28694                 loc: {
28695                     start: { line: 1, column: 0 },
28696                     end: { line: 1, column: 13 }
28697                 }
28698             }, {
28699                 type: 'ExpressionStatement',
28700                 expression: {
28701                     type: 'FunctionExpression',
28702                     id: {
28703                         type: 'Identifier',
28704                         name: 'f',
28705                         range: [24, 25],
28706                         loc: {
28707                             start: { line: 1, column: 24 },
28708                             end: { line: 1, column: 25 }
28709                         }
28710                     },
28711                     params: [{
28712                         type: 'Identifier',
28713                         name: 'foo',
28714                         range: [26, 29],
28715                         loc: {
28716                             start: { line: 1, column: 26 },
28717                             end: { line: 1, column: 29 }
28718                         }
28719                     }, {
28720                         type: 'Identifier',
28721                         name: 'foo',
28722                         range: [32, 35],
28723                         loc: {
28724                             start: { line: 1, column: 32 },
28725                             end: { line: 1, column: 35 }
28726                         }
28727                     }],
28728                     defaults: [],
28729                     body: {
28730                         type: 'BlockStatement',
28731                         body: [],
28732                         range: [37, 39],
28733                         loc: {
28734                             start: { line: 1, column: 37 },
28735                             end: { line: 1, column: 39 }
28736                         }
28737                     },
28738                     rest: null,
28739                     generator: false,
28740                     expression: false,
28741                     range: [15, 39],
28742                     loc: {
28743                         start: { line: 1, column: 15 },
28744                         end: { line: 1, column: 39 }
28745                     }
28746                 },
28747                 range: [14, 41],
28748                 loc: {
28749                     start: { line: 1, column: 14 },
28750                     end: { line: 1, column: 41 }
28751                 }
28752             }],
28753             range: [0, 41],
28754             loc: {
28755                 start: { line: 1, column: 0 },
28756                 end: { line: 1, column: 41 }
28757             },
28758             errors: [{
28759                 index: 32,
28760                 lineNumber: 1,
28761                 column: 33,
28762                 message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
28763             }]
28764         },
28765
28766         '"use strict"; x = { set f(eval) {} }' : {
28767             type: 'Program',
28768             body: [{
28769                 type: 'ExpressionStatement',
28770                 expression: {
28771                     type: 'Literal',
28772                     value: 'use strict',
28773                     raw: '"use strict"',
28774                     range: [0, 12],
28775                     loc: {
28776                         start: { line: 1, column: 0 },
28777                         end: { line: 1, column: 12 }
28778                     }
28779                 },
28780                 range: [0, 13],
28781                 loc: {
28782                     start: { line: 1, column: 0 },
28783                     end: { line: 1, column: 13 }
28784                 }
28785             }, {
28786                 type: 'ExpressionStatement',
28787                 expression: {
28788                     type: 'AssignmentExpression',
28789                     operator: '=',
28790                     left: {
28791                         type: 'Identifier',
28792                         name: 'x',
28793                         range: [14, 15],
28794                         loc: {
28795                             start: { line: 1, column: 14 },
28796                             end: { line: 1, column: 15 }
28797                         }
28798                     },
28799                     right: {
28800                         type: 'ObjectExpression',
28801                         properties: [{
28802                             type: 'Property',
28803                             key: {
28804                                 type: 'Identifier',
28805                                 name: 'f',
28806                                 range: [24, 25],
28807                                 loc: {
28808                                     start: { line: 1, column: 24 },
28809                                     end: { line: 1, column: 25 }
28810                                 }
28811                             },
28812                             value : {
28813                                 type: 'FunctionExpression',
28814                                 id: null,
28815                                 params: [{
28816                                     type: 'Identifier',
28817                                     name: 'eval',
28818                                     range: [26, 30],
28819                                     loc: {
28820                                         start: { line: 1, column: 26 },
28821                                         end: { line: 1, column: 30 }
28822                                     }
28823                                 }],
28824                                 defaults: [],
28825                                 body: {
28826                                     type: 'BlockStatement',
28827                                     body: [],
28828                                     range: [32, 34],
28829                                     loc: {
28830                                         start: { line: 1, column: 32 },
28831                                         end: { line: 1, column: 34 }
28832                                     }
28833                                 },
28834                                 rest: null,
28835                                 generator: false,
28836                                 expression: false,
28837                                 range: [32, 34],
28838                                 loc: {
28839                                     start: { line: 1, column: 32 },
28840                                     end: { line: 1, column: 34 }
28841                                 }
28842                             },
28843                             kind: 'set',
28844                             method: false,
28845                             shorthand: false,
28846                             range: [20, 34],
28847                             loc: {
28848                                 start: { line: 1, column: 20 },
28849                                 end: { line: 1, column: 34 }
28850                             }
28851                         }],
28852                         range: [18, 36],
28853                         loc: {
28854                             start: { line: 1, column: 18 },
28855                             end: { line: 1, column: 36 }
28856                         }
28857                     },
28858                     range: [14, 36],
28859                     loc: {
28860                         start: { line: 1, column: 14 },
28861                         end: { line: 1, column: 36 }
28862                     }
28863                 },
28864                 range: [14, 36],
28865                 loc: {
28866                     start: { line: 1, column: 14 },
28867                     end: { line: 1, column: 36 }
28868                 }
28869             }],
28870             range: [0, 36],
28871             loc: {
28872                 start: { line: 1, column: 0 },
28873                 end: { line: 1, column: 36 }
28874             },
28875             errors: [{
28876                 index: 26,
28877                 lineNumber: 1,
28878                 column: 27,
28879                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
28880             }]
28881         },
28882
28883         'function hello() { "octal directive\\1"; "use strict"; }': {
28884             type: 'Program',
28885             body: [{
28886                 type: 'FunctionDeclaration',
28887                 id: {
28888                     type: 'Identifier',
28889                     name: 'hello',
28890                     range: [9, 14],
28891                     loc: {
28892                         start: { line: 1, column: 9 },
28893                         end: { line: 1, column: 14 }
28894                     }
28895                 },
28896                 params: [],
28897                 defaults: [],
28898                 body: {
28899                     type: 'BlockStatement',
28900                     body: [{
28901                         type: 'ExpressionStatement',
28902                         expression: {
28903                             type: 'Literal',
28904                             value: 'octal directive\u0001',
28905                             raw: '"octal directive\\1"',
28906                             range: [19, 38],
28907                             loc: {
28908                                 start: { line: 1, column: 19 },
28909                                 end: { line: 1, column: 38 }
28910                             }
28911                         },
28912                         range: [19, 39],
28913                         loc: {
28914                             start: { line: 1, column: 19 },
28915                             end: { line: 1, column: 39 }
28916                         }
28917                     }, {
28918                         type: 'ExpressionStatement',
28919                         expression: {
28920                             type: 'Literal',
28921                             value: 'use strict',
28922                             raw: '"use strict"',
28923                             range: [40, 52],
28924                             loc: {
28925                                 start: { line: 1, column: 40 },
28926                                 end: { line: 1, column: 52 }
28927                             }
28928                         },
28929                         range: [40, 53],
28930                         loc: {
28931                             start: { line: 1, column: 40 },
28932                             end: { line: 1, column: 53 }
28933                         }
28934                     }],
28935                     range: [17, 55],
28936                     loc: {
28937                         start: { line: 1, column: 17 },
28938                         end: { line: 1, column: 55 }
28939                     }
28940                 },
28941                 rest: null,
28942                 generator: false,
28943                 expression: false,
28944                 range: [0, 55],
28945                 loc: {
28946                     start: { line: 1, column: 0 },
28947                     end: { line: 1, column: 55 }
28948                 }
28949             }],
28950             range: [0, 55],
28951             loc: {
28952                 start: { line: 1, column: 0 },
28953                 end: { line: 1, column: 55 }
28954             },
28955             errors: [{
28956                 index: 19,
28957                 lineNumber: 1,
28958                 column: 20,
28959                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
28960             }]
28961         },
28962
28963         '"\\1"; \'use strict\';': {
28964             type: 'Program',
28965             body: [{
28966                 type: 'ExpressionStatement',
28967                 expression: {
28968                     type: 'Literal',
28969                     value: '\u0001',
28970                     raw: '"\\1"',
28971                     range: [0, 4],
28972                     loc: {
28973                         start: { line: 1, column: 0 },
28974                         end: { line: 1, column: 4 }
28975                     }
28976                 },
28977                 range: [0, 5],
28978                 loc: {
28979                     start: { line: 1, column: 0 },
28980                     end: { line: 1, column: 5 }
28981                 }
28982             }, {
28983                 type: 'ExpressionStatement',
28984                 expression: {
28985                     type: 'Literal',
28986                     value: 'use strict',
28987                     raw: '\'use strict\'',
28988                     range: [6, 18],
28989                     loc: {
28990                         start: { line: 1, column: 6 },
28991                         end: { line: 1, column: 18 }
28992                     }
28993                 },
28994                 range: [6, 19],
28995                 loc: {
28996                     start: { line: 1, column: 6 },
28997                     end: { line: 1, column: 19 }
28998                 }
28999             }],
29000             range: [0, 19],
29001             loc: {
29002                 start: { line: 1, column: 0 },
29003                 end: { line: 1, column: 19 }
29004             },
29005             errors: [{
29006                 index: 0,
29007                 lineNumber: 1,
29008                 column: 1,
29009                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
29010             }]
29011         },
29012
29013         '"use strict"; var x = { 014: 3}': {
29014             type: 'Program',
29015             body: [{
29016                 type: 'ExpressionStatement',
29017                 expression: {
29018                     type: 'Literal',
29019                     value: 'use strict',
29020                     raw: '"use strict"',
29021                     range: [0, 12],
29022                     loc: {
29023                         start: { line: 1, column: 0 },
29024                         end: { line: 1, column: 12 }
29025                     }
29026                 },
29027                 range: [0, 13],
29028                 loc: {
29029                     start: { line: 1, column: 0 },
29030                     end: { line: 1, column: 13 }
29031                 }
29032             }, {
29033                 type: 'VariableDeclaration',
29034                 declarations: [{
29035                     type: 'VariableDeclarator',
29036                     id: {
29037                         type: 'Identifier',
29038                         name: 'x',
29039                         range: [18, 19],
29040                         loc: {
29041                             start: { line: 1, column: 18 },
29042                             end: { line: 1, column: 19 }
29043                         }
29044                     },
29045                     init: {
29046                         type: 'ObjectExpression',
29047                         properties: [{
29048                             type: 'Property',
29049                             key: {
29050                                 type: 'Literal',
29051                                 value: 12,
29052                                 raw: '014',
29053                                 range: [24, 27],
29054                                 loc: {
29055                                     start: { line: 1, column: 24 },
29056                                     end: { line: 1, column: 27 }
29057                                 }
29058                             },
29059                             value: {
29060                                 type: 'Literal',
29061                                 value: 3,
29062                                 raw: '3',
29063                                 range: [29, 30],
29064                                 loc: {
29065                                     start: { line: 1, column: 29 },
29066                                     end: { line: 1, column: 30 }
29067                                 }
29068                             },
29069                             kind: 'init',
29070                             method: false,
29071                             shorthand: false,
29072                             range: [24, 30],
29073                             loc: {
29074                                 start: { line: 1, column: 24 },
29075                                 end: { line: 1, column: 30 }
29076                             }
29077                         }],
29078                         range: [22, 31],
29079                         loc: {
29080                             start: { line: 1, column: 22 },
29081                             end: { line: 1, column: 31 }
29082                         }
29083                     },
29084                     range: [18, 31],
29085                     loc: {
29086                         start: { line: 1, column: 18 },
29087                         end: { line: 1, column: 31 }
29088                     }
29089                 }],
29090                 kind: 'var',
29091                 range: [14, 31],
29092                 loc: {
29093                     start: { line: 1, column: 14 },
29094                     end: { line: 1, column: 31 }
29095                 }
29096             }],
29097             range: [0, 31],
29098             loc: {
29099                 start: { line: 1, column: 0 },
29100                 end: { line: 1, column: 31 }
29101             },
29102             errors: [{
29103                 index: 24,
29104                 lineNumber: 1,
29105                 column: 25,
29106                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
29107             }]
29108         },
29109
29110         '"use strict"; var x = { get i() {}, get i() {} }': {
29111             type: 'Program',
29112             body: [{
29113                 type: 'ExpressionStatement',
29114                 expression: {
29115                     type: 'Literal',
29116                     value: 'use strict',
29117                     raw: '"use strict"',
29118                     range: [0, 12],
29119                     loc: {
29120                         start: { line: 1, column: 0 },
29121                         end: { line: 1, column: 12 }
29122                     }
29123                 },
29124                 range: [0, 13],
29125                 loc: {
29126                     start: { line: 1, column: 0 },
29127                     end: { line: 1, column: 13 }
29128                 }
29129             }, {
29130                 type: 'VariableDeclaration',
29131                 declarations: [{
29132                     type: 'VariableDeclarator',
29133                     id: {
29134                         type: 'Identifier',
29135                         name: 'x',
29136                         range: [18, 19],
29137                         loc: {
29138                             start: { line: 1, column: 18 },
29139                             end: { line: 1, column: 19 }
29140                         }
29141                     },
29142                     init: {
29143                         type: 'ObjectExpression',
29144                         properties: [{
29145                             type: 'Property',
29146                             key: {
29147                                 type: 'Identifier',
29148                                 name: 'i',
29149                                 range: [28, 29],
29150                                 loc: {
29151                                     start: { line: 1, column: 28 },
29152                                     end: { line: 1, column: 29 }
29153                                 }
29154                             },
29155                             value: {
29156                                 type: 'FunctionExpression',
29157                                 id: null,
29158                                 params: [],
29159                                 defaults: [],
29160                                 body: {
29161                                     type: 'BlockStatement',
29162                                     body: [],
29163                                     range: [32, 34],
29164                                     loc: {
29165                                         start: { line: 1, column: 32 },
29166                                         end: { line: 1, column: 34 }
29167                                     }
29168                                 },
29169                                 rest: null,
29170                                 generator: false,
29171                                 expression: false,
29172                                 range: [32, 34],
29173                                 loc: {
29174                                     start: { line: 1, column: 32 },
29175                                     end: { line: 1, column: 34 }
29176                                 }
29177                             },
29178                             kind: 'get',
29179                             method: false,
29180                             shorthand: false,
29181                             range: [24, 34],
29182                             loc: {
29183                                 start: { line: 1, column: 24 },
29184                                 end: { line: 1, column: 34 }
29185                             }
29186                         }, {
29187                             type: 'Property',
29188                             key: {
29189                                 type: 'Identifier',
29190                                 name: 'i',
29191                                 range: [40, 41],
29192                                 loc: {
29193                                     start: { line: 1, column: 40 },
29194                                     end: { line: 1, column: 41 }
29195                                 }
29196                             },
29197                             value: {
29198                                 type: 'FunctionExpression',
29199                                 id: null,
29200                                 params: [],
29201                                 defaults: [],
29202                                 body: {
29203                                     type: 'BlockStatement',
29204                                     body: [],
29205                                     range: [44, 46],
29206                                     loc: {
29207                                         start: { line: 1, column: 44 },
29208                                         end: { line: 1, column: 46 }
29209                                     }
29210                                 },
29211                                 rest: null,
29212                                 generator: false,
29213                                 expression: false,
29214                                 range: [44, 46],
29215                                 loc: {
29216                                     start: { line: 1, column: 44 },
29217                                     end: { line: 1, column: 46 }
29218                                 }
29219                             },
29220                             kind: 'get',
29221                             method: false,
29222                             shorthand: false,
29223                             range: [36, 46],
29224                             loc: {
29225                                 start: { line: 1, column: 36 },
29226                                 end: { line: 1, column: 46 }
29227                             }
29228                         }],
29229                         range: [22, 48],
29230                         loc: {
29231                             start: { line: 1, column: 22 },
29232                             end: { line: 1, column: 48 }
29233                         }
29234                     },
29235                     range: [18, 48],
29236                     loc: {
29237                         start: { line: 1, column: 18 },
29238                         end: { line: 1, column: 48 }
29239                     }
29240                 }],
29241                 kind: 'var',
29242                 range: [14, 48],
29243                 loc: {
29244                     start: { line: 1, column: 14 },
29245                     end: { line: 1, column: 48 }
29246                 }
29247             }],
29248             range: [0, 48],
29249             loc: {
29250                 start: { line: 1, column: 0 },
29251                 end: { line: 1, column: 48 }
29252             },
29253             errors: [{
29254                 index: 46,
29255                 lineNumber: 1,
29256                 column: 47,
29257                 message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
29258             }]
29259         },
29260
29261         '"use strict"; var x = { i: 42, get i() {} }': {
29262             type: 'Program',
29263             body: [{
29264                 type: 'ExpressionStatement',
29265                 expression: {
29266                     type: 'Literal',
29267                     value: 'use strict',
29268                     raw: '"use strict"',
29269                     range: [0, 12],
29270                     loc: {
29271                         start: { line: 1, column: 0 },
29272                         end: { line: 1, column: 12 }
29273                     }
29274                 },
29275                 range: [0, 13],
29276                 loc: {
29277                     start: { line: 1, column: 0 },
29278                     end: { line: 1, column: 13 }
29279                 }
29280             }, {
29281                 type: 'VariableDeclaration',
29282                 declarations: [{
29283                     type: 'VariableDeclarator',
29284                     id: {
29285                         type: 'Identifier',
29286                         name: 'x',
29287                         range: [18, 19],
29288                         loc: {
29289                             start: { line: 1, column: 18 },
29290                             end: { line: 1, column: 19 }
29291                         }
29292                     },
29293                     init: {
29294                         type: 'ObjectExpression',
29295                         properties: [{
29296                             type: 'Property',
29297                             key: {
29298                                 type: 'Identifier',
29299                                 name: 'i',
29300                                 range: [24, 25],
29301                                 loc: {
29302                                     start: { line: 1, column: 24 },
29303                                     end: { line: 1, column: 25 }
29304                                 }
29305                             },
29306                             value: {
29307                                 type: 'Literal',
29308                                 value: 42,
29309                                 raw: '42',
29310                                 range: [27, 29],
29311                                 loc: {
29312                                     start: { line: 1, column: 27 },
29313                                     end: { line: 1, column: 29 }
29314                                 }
29315                             },
29316                             kind: 'init',
29317                             method: false,
29318                             shorthand: false,
29319                             range: [24, 29],
29320                             loc: {
29321                                 start: { line: 1, column: 24 },
29322                                 end: { line: 1, column: 29 }
29323                             }
29324                         }, {
29325                             type: 'Property',
29326                             key: {
29327                                 type: 'Identifier',
29328                                 name: 'i',
29329                                 range: [35, 36],
29330                                 loc: {
29331                                     start: { line: 1, column: 35 },
29332                                     end: { line: 1, column: 36 }
29333                                 }
29334                             },
29335                             value: {
29336                                 type: 'FunctionExpression',
29337                                 id: null,
29338                                 params: [],
29339                                 defaults: [],
29340                                 body: {
29341                                     type: 'BlockStatement',
29342                                     body: [],
29343                                     range: [39, 41],
29344                                     loc: {
29345                                         start: { line: 1, column: 39 },
29346                                         end: { line: 1, column: 41 }
29347                                     }
29348                                 },
29349                                 rest: null,
29350                                 generator: false,
29351                                 expression: false,
29352                                 range: [39, 41],
29353                                 loc: {
29354                                     start: { line: 1, column: 39 },
29355                                     end: { line: 1, column: 41 }
29356                                 }
29357                             },
29358                             kind: 'get',
29359                             method: false,
29360                             shorthand: false,
29361                             range: [31, 41],
29362                             loc: {
29363                                 start: { line: 1, column: 31 },
29364                                 end: { line: 1, column: 41 }
29365                             }
29366                         }],
29367                         range: [22, 43],
29368                         loc: {
29369                             start: { line: 1, column: 22 },
29370                             end: { line: 1, column: 43 }
29371                         }
29372                     },
29373                     range: [18, 43],
29374                     loc: {
29375                         start: { line: 1, column: 18 },
29376                         end: { line: 1, column: 43 }
29377                     }
29378                 }],
29379                 kind: 'var',
29380                 range: [14, 43],
29381                 loc: {
29382                     start: { line: 1, column: 14 },
29383                     end: { line: 1, column: 43 }
29384                 }
29385             }],
29386             range: [0, 43],
29387             loc: {
29388                 start: { line: 1, column: 0 },
29389                 end: { line: 1, column: 43 }
29390             },
29391             errors: [{
29392                 index: 41,
29393                 lineNumber: 1,
29394                 column: 42,
29395                 message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
29396             }]
29397         },
29398
29399         '"use strict"; var x = { set i(x) {}, i: 42 }': {
29400             type: 'Program',
29401             body: [{
29402                 type: 'ExpressionStatement',
29403                 expression: {
29404                     type: 'Literal',
29405                     value: 'use strict',
29406                     raw: '"use strict"',
29407                     range: [0, 12],
29408                     loc: {
29409                         start: { line: 1, column: 0 },
29410                         end: { line: 1, column: 12 }
29411                     }
29412                 },
29413                 range: [0, 13],
29414                 loc: {
29415                     start: { line: 1, column: 0 },
29416                     end: { line: 1, column: 13 }
29417                 }
29418             }, {
29419                 type: 'VariableDeclaration',
29420                 declarations: [{
29421                     type: 'VariableDeclarator',
29422                     id: {
29423                         type: 'Identifier',
29424                         name: 'x',
29425                         range: [18, 19],
29426                         loc: {
29427                             start: { line: 1, column: 18 },
29428                             end: { line: 1, column: 19 }
29429                         }
29430                     },
29431                     init: {
29432                         type: 'ObjectExpression',
29433                         properties: [{
29434                             type: 'Property',
29435                             key: {
29436                                 type: 'Identifier',
29437                                 name: 'i',
29438                                 range: [28, 29],
29439                                 loc: {
29440                                     start: { line: 1, column: 28 },
29441                                     end: { line: 1, column: 29 }
29442                                 }
29443                             },
29444                             value: {
29445                                 type: 'FunctionExpression',
29446                                 id: null,
29447                                 params: [{
29448                                     type: 'Identifier',
29449                                     name: 'x',
29450                                     range: [30, 31],
29451                                     loc: {
29452                                         start: { line: 1, column: 30 },
29453                                         end: { line: 1, column: 31 }
29454                                     }
29455                                 }],
29456                                 defaults: [],
29457                                 body: {
29458                                     type: 'BlockStatement',
29459                                     body: [],
29460                                     range: [33, 35],
29461                                     loc: {
29462                                         start: { line: 1, column: 33 },
29463                                         end: { line: 1, column: 35 }
29464                                     }
29465                                 },
29466                                 rest: null,
29467                                 generator: false,
29468                                 expression: false,
29469                                 range: [33, 35],
29470                                 loc: {
29471                                     start: { line: 1, column: 33 },
29472                                     end: { line: 1, column: 35 }
29473                                 }
29474                             },
29475                             kind: 'set',
29476                             method: false,
29477                             shorthand: false,
29478                             range: [24, 35],
29479                             loc: {
29480                                 start: { line: 1, column: 24 },
29481                                 end: { line: 1, column: 35 }
29482                             }
29483                         }, {
29484                             type: 'Property',
29485                             key: {
29486                                 type: 'Identifier',
29487                                 name: 'i',
29488                                 range: [37, 38],
29489                                 loc: {
29490                                     start: { line: 1, column: 37 },
29491                                     end: { line: 1, column: 38 }
29492                                 }
29493                             },
29494                             value: {
29495                                 type: 'Literal',
29496                                 value: 42,
29497                                 raw: '42',
29498                                 range: [40, 42],
29499                                 loc: {
29500                                     start: { line: 1, column: 40 },
29501                                     end: { line: 1, column: 42 }
29502                                 }
29503                             },
29504                             kind: 'init',
29505                             method: false,
29506                             shorthand: false,
29507                             range: [37, 42],
29508                             loc: {
29509                                 start: { line: 1, column: 37 },
29510                                 end: { line: 1, column: 42 }
29511                             }
29512                         }],
29513                         range: [22, 44],
29514                         loc: {
29515                             start: { line: 1, column: 22 },
29516                             end: { line: 1, column: 44 }
29517                         }
29518                     },
29519                     range: [18, 44],
29520                     loc: {
29521                         start: { line: 1, column: 18 },
29522                         end: { line: 1, column: 44 }
29523                     }
29524                 }],
29525                 kind: 'var',
29526                 range: [14, 44],
29527                 loc: {
29528                     start: { line: 1, column: 14 },
29529                     end: { line: 1, column: 44 }
29530                 }
29531             }],
29532             range: [0, 44],
29533             loc: {
29534                 start: { line: 1, column: 0 },
29535                 end: { line: 1, column: 44 }
29536             },
29537             errors: [{
29538                 index: 42,
29539                 lineNumber: 1,
29540                 column: 43,
29541                 message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
29542             }]
29543
29544
29545         },
29546
29547         '({ set s() { } })': {
29548             type: 'Program',
29549             body: [{
29550                 type: 'ExpressionStatement',
29551                 expression: {
29552                     type: 'ObjectExpression',
29553                     properties: [{
29554                         type: 'Property',
29555                         key: {
29556                             type: 'Identifier',
29557                             name: 's',
29558                             range: [7, 8],
29559                             loc: {
29560                                 start: { line: 1, column: 7 },
29561                                 end: { line: 1, column: 8 }
29562                             }
29563                         },
29564                         value: {
29565                             type: 'FunctionExpression',
29566                             id: null,
29567                             params: [],
29568                             defaults: [],
29569                             body: {
29570                                 type: 'BlockStatement',
29571                                 body: [],
29572                                 range: [11, 14],
29573                                 loc: {
29574                                     start: { line: 1, column: 11 },
29575                                     end: { line: 1, column: 14 }
29576                                 }
29577                             },
29578                             rest: null,
29579                             generator: false,
29580                             expression: false,
29581                             range: [11, 14],
29582                             loc: {
29583                                 start: { line: 1, column: 11 },
29584                                 end: { line: 1, column: 14 }
29585                             }
29586                         },
29587                         kind: 'set',
29588                         method: false,
29589                         shorthand: false,
29590                         range: [3, 14],
29591                         loc: {
29592                             start: { line: 1, column: 3 },
29593                             end: { line: 1, column: 14 }
29594                         }
29595                     }],
29596                     range: [1, 16],
29597                     loc: {
29598                         start: { line: 1, column: 1 },
29599                         end: { line: 1, column: 16 }
29600                     }
29601                 },
29602                 range: [0, 17],
29603                 loc: {
29604                     start: { line: 1, column: 0 },
29605                     end: { line: 1, column: 17 }
29606                 }
29607             }],
29608             range: [0, 17],
29609             loc: {
29610                 start: { line: 1, column: 0 },
29611                 end: { line: 1, column: 17 }
29612             },
29613             errors: [{
29614                 index: 9,
29615                 lineNumber: 1,
29616                 column: 10,
29617                 message: 'Error: Line 1: Unexpected token )'
29618             }]
29619         },
29620
29621         'foo("bar") = baz': {
29622             type: 'Program',
29623             body: [{
29624                 type: 'ExpressionStatement',
29625                 expression: {
29626                     type: 'AssignmentExpression',
29627                     operator: '=',
29628                     left: {
29629                         type: 'CallExpression',
29630                         callee: {
29631                             type: 'Identifier',
29632                             name: 'foo',
29633                             range: [0, 3],
29634                             loc: {
29635                                 start: { line: 1, column: 0 },
29636                                 end: { line: 1, column: 3 }
29637                             }
29638                         },
29639                         'arguments': [{
29640                             type: 'Literal',
29641                             value: 'bar',
29642                             raw: '"bar"',
29643                             range: [4, 9],
29644                             loc: {
29645                                 start: { line: 1, column: 4 },
29646                                 end: { line: 1, column: 9 }
29647                             }
29648                         }],
29649                         range: [0, 10],
29650                         loc: {
29651                             start: { line: 1, column: 0 },
29652                             end: { line: 1, column: 10 }
29653                         }
29654                     },
29655                     right: {
29656                         type: 'Identifier',
29657                         name: 'baz',
29658                         range: [13, 16],
29659                         loc: {
29660                             start: { line: 1, column: 13 },
29661                             end: { line: 1, column: 16 }
29662                         }
29663                     },
29664                     range: [0, 16],
29665                     loc: {
29666                         start: { line: 1, column: 0 },
29667                         end: { line: 1, column: 16 }
29668                     }
29669                 },
29670                 range: [0, 16],
29671                 loc: {
29672                     start: { line: 1, column: 0 },
29673                     end: { line: 1, column: 16 }
29674                 }
29675             }],
29676             range: [0, 16],
29677             loc: {
29678                 start: { line: 1, column: 0 },
29679                 end: { line: 1, column: 16 }
29680             },
29681             errors: [{
29682                 index: 10,
29683                 lineNumber: 1,
29684                 column: 11,
29685                 message: 'Error: Line 1: Invalid left-hand side in assignment'
29686             }]
29687         },
29688
29689         '1 = 2': {
29690             type: 'Program',
29691             body: [{
29692                 type: 'ExpressionStatement',
29693                 expression: {
29694                     type: 'AssignmentExpression',
29695                     operator: '=',
29696                     left: {
29697                         type: 'Literal',
29698                         value: 1,
29699                         raw: '1',
29700                         range: [0, 1],
29701                         loc: {
29702                             start: { line: 1, column: 0 },
29703                             end: { line: 1, column: 1 }
29704                         }
29705                     },
29706                     right: {
29707                         type: 'Literal',
29708                         value: 2,
29709                         raw: '2',
29710                         range: [4, 5],
29711                         loc: {
29712                             start: { line: 1, column: 4 },
29713                             end: { line: 1, column: 5 }
29714                         }
29715                     },
29716                     range: [0, 5],
29717                     loc: {
29718                         start: { line: 1, column: 0 },
29719                         end: { line: 1, column: 5 }
29720                     }
29721                 },
29722                 range: [0, 5],
29723                 loc: {
29724                     start: { line: 1, column: 0 },
29725                     end: { line: 1, column: 5 }
29726                 }
29727             }],
29728             range: [0, 5],
29729             loc: {
29730                 start: { line: 1, column: 0 },
29731                 end: { line: 1, column: 5 }
29732             },
29733             errors: [{
29734                 index: 1,
29735                 lineNumber: 1,
29736                 column: 2,
29737                 message: 'Error: Line 1: Invalid left-hand side in assignment'
29738             }]
29739         },
29740
29741         '3++': {
29742             type: 'Program',
29743             body: [{
29744                 type: 'ExpressionStatement',
29745                 expression: {
29746                     type: 'UpdateExpression',
29747                     operator: '++',
29748                     argument: {
29749                         type: 'Literal',
29750                         value: 3,
29751                         raw: '3',
29752                         range: [0, 1],
29753                         loc: {
29754                             start: { line: 1, column: 0 },
29755                             end: { line: 1, column: 1 }
29756                         }
29757                     },
29758                     prefix: false,
29759                     range: [0, 3],
29760                     loc: {
29761                         start: { line: 1, column: 0 },
29762                         end: { line: 1, column: 3 }
29763                     }
29764                 },
29765                 range: [0, 3],
29766                 loc: {
29767                     start: { line: 1, column: 0 },
29768                     end: { line: 1, column: 3 }
29769                 }
29770             }],
29771             range: [0, 3],
29772             loc: {
29773                 start: { line: 1, column: 0 },
29774                 end: { line: 1, column: 3 }
29775             },
29776             errors: [{
29777                 index: 1,
29778                 lineNumber: 1,
29779                 column: 2,
29780                 message: 'Error: Line 1: Invalid left-hand side in assignment'
29781             }]
29782         },
29783
29784         '--4': {
29785             type: 'Program',
29786             body: [{
29787                 type: 'ExpressionStatement',
29788                 expression: {
29789                     type: 'UpdateExpression',
29790                     operator: '--',
29791                     argument: {
29792                         type: 'Literal',
29793                         value: 4,
29794                         raw: '4',
29795                         range: [2, 3],
29796                         loc: {
29797                             start: { line: 1, column: 2 },
29798                             end: { line: 1, column: 3 }
29799                         }
29800                     },
29801                     prefix: true,
29802                     range: [0, 3],
29803                     loc: {
29804                         start: { line: 1, column: 0 },
29805                         end: { line: 1, column: 3 }
29806                     }
29807                 },
29808                 range: [0, 3],
29809                 loc: {
29810                     start: { line: 1, column: 0 },
29811                     end: { line: 1, column: 3 }
29812                 }
29813             }],
29814             range: [0, 3],
29815             loc: {
29816                 start: { line: 1, column: 0 },
29817                 end: { line: 1, column: 3 }
29818             },
29819             errors: [{
29820                 index: 3,
29821                 lineNumber: 1,
29822                 column: 4,
29823                 message: 'Error: Line 1: Invalid left-hand side in assignment'
29824             }]
29825         },
29826
29827         'for (5 in []) {}': {
29828             type: 'Program',
29829             body: [{
29830                 type: 'ForInStatement',
29831                 left: {
29832                     type: 'Literal',
29833                     value: 5,
29834                     raw: '5',
29835                     range: [5, 6],
29836                     loc: {
29837                         start: { line: 1, column: 5 },
29838                         end: { line: 1, column: 6 }
29839                     }
29840                 },
29841                 right: {
29842                     type: 'ArrayExpression',
29843                     elements: [],
29844                     range: [10, 12],
29845                     loc: {
29846                         start: { line: 1, column: 10 },
29847                         end: { line: 1, column: 12 }
29848                     }
29849                 },
29850                 body: {
29851                     type: 'BlockStatement',
29852                     body: [],
29853                     range: [14, 16],
29854                     loc: {
29855                         start: { line: 1, column: 14 },
29856                         end: { line: 1, column: 16 }
29857                     }
29858                 },
29859                 each: false,
29860                 range: [0, 16],
29861                 loc: {
29862                     start: { line: 1, column: 0 },
29863                     end: { line: 1, column: 16 }
29864                 }
29865             }],
29866             range: [0, 16],
29867             loc: {
29868                 start: { line: 1, column: 0 },
29869                 end: { line: 1, column: 16 }
29870             },
29871             errors: [{
29872                 index: 6,
29873                 lineNumber: 1,
29874                 column: 7,
29875                 message: 'Error: Line 1: Invalid left-hand side in for-in'
29876             }]
29877         },
29878
29879         'var x = /[P QR]/\\g': {
29880             type: "Program",
29881             body: [{
29882                 type: "VariableDeclaration",
29883                 declarations: [{
29884                     type: "VariableDeclarator",
29885                     id: {
29886                         type: "Identifier",
29887                         name: "x",
29888                         range: [4, 5],
29889                         loc: {
29890                             start: { line: 1, column: 4 },
29891                             end: { line: 1, column: 5 }
29892                         }
29893                     },
29894                     init: {
29895                         type: "Literal",
29896                         value: "/[P QR]/g",
29897                         raw: "/[P QR]/\\g",
29898                         regex: {
29899                             pattern: "[P QR]",
29900                             flags: "g"
29901                         },
29902                         range: [8, 18],
29903                         loc: {
29904                             start: { line: 1, column: 8 },
29905                             end: { line: 1, column: 18 }
29906                         }
29907                     },
29908                     range: [4, 18],
29909                     loc: {
29910                         start: { line: 1, column: 4 },
29911                         end: { line: 1, column: 18 }
29912                     }
29913                 }],
29914                 kind: "var",
29915                 range: [0, 18],
29916                 loc: {
29917                     start: { line: 1, column: 0 },
29918                     end: { line: 1, column: 18 }
29919                 }
29920             }],
29921             range: [0, 18],
29922             loc: {
29923                 start: { line: 1, column: 0 },
29924                 end: { line: 1, column: 18 }
29925             },
29926             errors: [{
29927                 index: 17,
29928                 lineNumber: 1,
29929                 column: 18,
29930                 message: "Error: Line 1: Unexpected token ILLEGAL"
29931             }]
29932         },
29933
29934         'var x = /[P QR]/\\\\u0067': {
29935             type: "Program",
29936             body: [{
29937                 type: "VariableDeclaration",
29938                 declarations: [{
29939                     type: "VariableDeclarator",
29940                     id: {
29941                         type: "Identifier",
29942                         name: "x",
29943                         range: [4, 5],
29944                         loc: {
29945                             start: { line: 1, column: 4 },
29946                             end: { line: 1, column: 5 }
29947                         }
29948                     },
29949                     init: {
29950                         type: "Literal",
29951                         value: "/[P QR]/g",
29952                         raw: "/[P QR]/\\\\u0067",
29953                         regex: {
29954                             pattern: "[P QR]",
29955                             flags: "g"
29956                         },
29957                         range: [8, 23],
29958                         loc: {
29959                             start: { line: 1, column: 8 },
29960                             end: { line: 1, column: 23 }
29961                         }
29962                     },
29963                     range: [4, 23],
29964                     loc: {
29965                         start: { line: 1, column: 4 },
29966                         end: { line: 1, column: 23 }
29967                     }
29968                 }],
29969                 kind: "var",
29970                 range: [0, 23],
29971                 loc: {
29972                     start: { line: 1, column: 0 },
29973                     end: { line: 1, column: 23 }
29974                 }
29975             }],
29976             range: [0, 23],
29977             loc: {
29978                 start: { line: 1, column: 0 },
29979                 end: { line: 1, column: 23 }
29980             },
29981             errors: [{
29982                 index: 17,
29983                 lineNumber: 1,
29984                 column: 18,
29985                 message: "Error: Line 1: Unexpected token ILLEGAL"
29986             }, {
29987                 index: 23,
29988                 lineNumber: 1,
29989                 column: 24,
29990                 message: "Error: Line 1: Unexpected token ILLEGAL"
29991             }]
29992         }
29993
29994     }
29995 };