8ceee54b749716bac4b4e159ca4f5e01e88cdc67
[platform/framework/web/crosswalk-tizen.git] /
1 /*
2   Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
3   Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
4   Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
5   Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
6   Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
7   Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
8   Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
9
10   Redistribution and use in source and binary forms, with or without
11   modification, are permitted provided that the following conditions are met:
12
13     * Redistributions of source code must retain the above copyright
14       notice, this list of conditions and the following disclaimer.
15     * Redistributions in binary form must reproduce the above copyright
16       notice, this list of conditions and the following disclaimer in the
17       documentation and/or other materials provided with the distribution.
18
19   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22   ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
23   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 var testFixture = {
32
33     'Primary Expression': {
34
35         'this\n': {
36             type: 'Program',
37             body: [{
38                 type: 'ExpressionStatement',
39                 expression: {
40                     type: 'ThisExpression',
41                     range: [0, 4],
42                     loc: {
43                         start: { line: 1, column: 0 },
44                         end: { line: 1, column: 4 }
45                     }
46                 },
47                 range: [0, 5],
48                 loc: {
49                     start: { line: 1, column: 0 },
50                     end: { line: 2, column: 0 }
51                 }
52             }],
53             range: [0, 5],
54             loc: {
55                 start: { line: 1, column: 0 },
56                 end: { line: 2, column: 0 }
57             },
58             tokens: [{
59                 type: 'Keyword',
60                 value: 'this',
61                 range: [0, 4],
62                 loc: {
63                     start: { line: 1, column: 0 },
64                     end: { line: 1, column: 4 }
65                 }
66             }]
67         },
68
69         'null\n': {
70             type: 'Program',
71             body: [{
72                 type: 'ExpressionStatement',
73                 expression: {
74                     type: 'Literal',
75                     value: null,
76                     raw: 'null',
77                     range: [0, 4],
78                     loc: {
79                         start: { line: 1, column: 0 },
80                         end: { line: 1, column: 4 }
81                     }
82                 },
83                 range: [0, 5],
84                 loc: {
85                     start: { line: 1, column: 0 },
86                     end: { line: 2, column: 0 }
87                 }
88             }],
89             range: [0, 5],
90             loc: {
91                 start: { line: 1, column: 0 },
92                 end: { line: 2, column: 0 }
93             },
94             tokens: [{
95                 type: 'Null',
96                 value: 'null',
97                 range: [0, 4],
98                 loc: {
99                     start: { line: 1, column: 0 },
100                     end: { line: 1, column: 4 }
101                 }
102             }]
103         },
104
105         '\n    42\n\n': {
106             type: 'Program',
107             body: [{
108                 type: 'ExpressionStatement',
109                 expression: {
110                     type: 'Literal',
111                     value: 42,
112                     raw: '42',
113                     range: [5, 7],
114                     loc: {
115                         start: { line: 2, column: 4 },
116                         end: { line: 2, column: 6 }
117                     }
118                 },
119                 range: [5, 9],
120                 loc: {
121                     start: { line: 2, column: 4 },
122                     end: { line: 4, column: 0 }
123                 }
124             }],
125             range: [5, 9],
126             loc: {
127                 start: { line: 2, column: 4 },
128                 end: { line: 4, column: 0 }
129             },
130             tokens: [{
131                 type: 'Numeric',
132                 value: '42',
133                 range: [5, 7],
134                 loc: {
135                     start: { line: 2, column: 4 },
136                     end: { line: 2, column: 6 }
137                 }
138             }]
139         },
140
141         '(1 + 2 ) * 3': {
142             type: 'ExpressionStatement',
143             expression: {
144                 type: 'BinaryExpression',
145                 operator: '*',
146                 left: {
147                     type: 'BinaryExpression',
148                     operator: '+',
149                     left: {
150                         type: 'Literal',
151                         value: 1,
152                         raw: '1',
153                         range: [1, 2],
154                         loc: {
155                             start: { line: 1, column: 1 },
156                             end: { line: 1, column: 2 }
157                         }
158                     },
159                     right: {
160                         type: 'Literal',
161                         value: 2,
162                         raw: '2',
163                         range: [5, 6],
164                         loc: {
165                             start: { line: 1, column: 5 },
166                             end: { line: 1, column: 6 }
167                         }
168                     },
169                     range: [1, 6],
170                     loc: {
171                         start: { line: 1, column: 1 },
172                         end: { line: 1, column: 6 }
173                     }
174                 },
175                 right: {
176                     type: 'Literal',
177                     value: 3,
178                     raw: '3',
179                     range: [11, 12],
180                     loc: {
181                         start: { line: 1, column: 11 },
182                         end: { line: 1, column: 12 }
183                     }
184                 },
185                 range: [0, 12],
186                 loc: {
187                     start: { line: 1, column: 0 },
188                     end: { line: 1, column: 12 }
189                 }
190             },
191             range: [0, 12],
192             loc: {
193                 start: { line: 1, column: 0 },
194                 end: { line: 1, column: 12 }
195             }
196         }
197
198     },
199
200     'Grouping Operator': {
201
202         '(1) + (2  ) + 3': {
203             type: 'ExpressionStatement',
204             expression: {
205                 type: 'BinaryExpression',
206                 operator: '+',
207                 left: {
208                     type: 'BinaryExpression',
209                     operator: '+',
210                     left: {
211                         type: 'Literal',
212                         value: 1,
213                         raw: '1',
214                         range: [1, 2],
215                         loc: {
216                             start: { line: 1, column: 1 },
217                             end: { line: 1, column: 2 }
218                         }
219                     },
220                     right: {
221                         type: 'Literal',
222                         value: 2,
223                         raw: '2',
224                         range: [7, 8],
225                         loc: {
226                             start: { line: 1, column: 7 },
227                             end: { line: 1, column: 8 }
228                         }
229                     },
230                     range: [0, 11],
231                     loc: {
232                         start: { line: 1, column: 0 },
233                         end: { line: 1, column: 11 }
234                     }
235                 },
236                 right: {
237                     type: 'Literal',
238                     value: 3,
239                     raw: '3',
240                     range: [14, 15],
241                     loc: {
242                         start: { line: 1, column: 14 },
243                         end: { line: 1, column: 15 }
244                     }
245                 },
246                 range: [0, 15],
247                 loc: {
248                     start: { line: 1, column: 0 },
249                     end: { line: 1, column: 15 }
250                 }
251             },
252             range: [0, 15],
253             loc: {
254                 start: { line: 1, column: 0 },
255                 end: { line: 1, column: 15 }
256             }
257         },
258
259         '4 + 5 << (6)': {
260             type: 'ExpressionStatement',
261             expression: {
262                 type: 'BinaryExpression',
263                 operator: '<<',
264                 left: {
265                     type: 'BinaryExpression',
266                     operator: '+',
267                     left: {
268                         type: 'Literal',
269                         value: 4,
270                         raw: '4',
271                         range: [0, 1],
272                         loc: {
273                             start: { line: 1, column: 0 },
274                             end: { line: 1, column: 1 }
275                         }
276                     },
277                     right: {
278                         type: 'Literal',
279                         value: 5,
280                         raw: '5',
281                         range: [4, 5],
282                         loc: {
283                             start: { line: 1, column: 4 },
284                             end: { line: 1, column: 5 }
285                         }
286                     },
287                     range: [0, 5],
288                     loc: {
289                         start: { line: 1, column: 0 },
290                         end: { line: 1, column: 5 }
291                     }
292                 },
293                 right: {
294                     type: 'Literal',
295                     value: 6,
296                     raw: '6',
297                     range: [10, 11],
298                     loc: {
299                         start: { line: 1, column: 10 },
300                         end: { line: 1, column: 11 }
301                     }
302                 },
303                 range: [0, 12],
304                 loc: {
305                     start: { line: 1, column: 0 },
306                     end: { line: 1, column: 12 }
307                 }
308             },
309             range: [0, 12],
310             loc: {
311                 start: { line: 1, column: 0 },
312                 end: { line: 1, column: 12 }
313             }
314         }
315
316     },
317
318     'Array Initializer': {
319
320         'x = []': {
321             type: 'Program',
322             body: [{
323                 type: 'ExpressionStatement',
324                 expression: {
325                     type: 'AssignmentExpression',
326                     operator: '=',
327                     left: {
328                         type: 'Identifier',
329                         name: 'x',
330                         range: [0, 1],
331                         loc: {
332                             start: { line: 1, column: 0 },
333                             end: { line: 1, column: 1 }
334                         }
335                     },
336                     right: {
337                         type: 'ArrayExpression',
338                         elements: [],
339                         range: [4, 6],
340                         loc: {
341                             start: { line: 1, column: 4 },
342                             end: { line: 1, column: 6 }
343                         }
344                     },
345                     range: [0, 6],
346                     loc: {
347                         start: { line: 1, column: 0 },
348                         end: { line: 1, column: 6 }
349                     }
350                 },
351                 range: [0, 6],
352                 loc: {
353                     start: { line: 1, column: 0 },
354                     end: { line: 1, column: 6 }
355                 }
356             }],
357             range: [0, 6],
358             loc: {
359                 start: { line: 1, column: 0 },
360                 end: { line: 1, column: 6 }
361             },
362             tokens: [{
363                 type: 'Identifier',
364                 value: 'x',
365                 range: [0, 1],
366                 loc: {
367                     start: { line: 1, column: 0 },
368                     end: { line: 1, column: 1 }
369                 }
370             }, {
371                 type: 'Punctuator',
372                 value: '=',
373                 range: [2, 3],
374                 loc: {
375                     start: { line: 1, column: 2 },
376                     end: { line: 1, column: 3 }
377                 }
378             }, {
379                 type: 'Punctuator',
380                 value: '[',
381                 range: [4, 5],
382                 loc: {
383                     start: { line: 1, column: 4 },
384                     end: { line: 1, column: 5 }
385                 }
386             }, {
387                 type: 'Punctuator',
388                 value: ']',
389                 range: [5, 6],
390                 loc: {
391                     start: { line: 1, column: 5 },
392                     end: { line: 1, column: 6 }
393                 }
394             }]
395         },
396
397         'x = [ ]': {
398             type: 'ExpressionStatement',
399             expression: {
400                 type: 'AssignmentExpression',
401                 operator: '=',
402                 left: {
403                     type: 'Identifier',
404                     name: 'x',
405                     range: [0, 1],
406                     loc: {
407                         start: { line: 1, column: 0 },
408                         end: { line: 1, column: 1 }
409                     }
410                 },
411                 right: {
412                     type: 'ArrayExpression',
413                     elements: [],
414                     range: [4, 7],
415                     loc: {
416                         start: { line: 1, column: 4 },
417                         end: { line: 1, column: 7 }
418                     }
419                 },
420                 range: [0, 7],
421                 loc: {
422                     start: { line: 1, column: 0 },
423                     end: { line: 1, column: 7 }
424                 }
425             },
426             range: [0, 7],
427             loc: {
428                 start: { line: 1, column: 0 },
429                 end: { line: 1, column: 7 }
430             }
431         },
432
433         'x = [ 42 ]': {
434             type: 'ExpressionStatement',
435             expression: {
436                 type: 'AssignmentExpression',
437                 operator: '=',
438                 left: {
439                     type: 'Identifier',
440                     name: 'x',
441                     range: [0, 1],
442                     loc: {
443                         start: { line: 1, column: 0 },
444                         end: { line: 1, column: 1 }
445                     }
446                 },
447                 right: {
448                     type: 'ArrayExpression',
449                     elements: [{
450                         type: 'Literal',
451                         value: 42,
452                         raw: '42',
453                         range: [6, 8],
454                         loc: {
455                             start: { line: 1, column: 6 },
456                             end: { line: 1, column: 8 }
457                         }
458                     }],
459                     range: [4, 10],
460                     loc: {
461                         start: { line: 1, column: 4 },
462                         end: { line: 1, column: 10 }
463                     }
464                 },
465                 range: [0, 10],
466                 loc: {
467                     start: { line: 1, column: 0 },
468                     end: { line: 1, column: 10 }
469                 }
470             },
471             range: [0, 10],
472             loc: {
473                 start: { line: 1, column: 0 },
474                 end: { line: 1, column: 10 }
475             }
476         },
477
478         'x = [ 42, ]': {
479             type: 'ExpressionStatement',
480             expression: {
481                 type: 'AssignmentExpression',
482                 operator: '=',
483                 left: {
484                     type: 'Identifier',
485                     name: 'x',
486                     range: [0, 1],
487                     loc: {
488                         start: { line: 1, column: 0 },
489                         end: { line: 1, column: 1 }
490                     }
491                 },
492                 right: {
493                     type: 'ArrayExpression',
494                     elements: [{
495                         type: 'Literal',
496                         value: 42,
497                         raw: '42',
498                         range: [6, 8],
499                         loc: {
500                             start: { line: 1, column: 6 },
501                             end: { line: 1, column: 8 }
502                         }
503                     }],
504                     range: [4, 11],
505                     loc: {
506                         start: { line: 1, column: 4 },
507                         end: { line: 1, column: 11 }
508                     }
509                 },
510                 range: [0, 11],
511                 loc: {
512                     start: { line: 1, column: 0 },
513                     end: { line: 1, column: 11 }
514                 }
515             },
516             range: [0, 11],
517             loc: {
518                 start: { line: 1, column: 0 },
519                 end: { line: 1, column: 11 }
520             }
521         },
522
523         'x = [ ,, 42 ]': {
524             type: 'ExpressionStatement',
525             expression: {
526                 type: 'AssignmentExpression',
527                 operator: '=',
528                 left: {
529                     type: 'Identifier',
530                     name: 'x',
531                     range: [0, 1],
532                     loc: {
533                         start: { line: 1, column: 0 },
534                         end: { line: 1, column: 1 }
535                     }
536                 },
537                 right: {
538                     type: 'ArrayExpression',
539                     elements: [
540                         null,
541                         null,
542                         {
543                             type: 'Literal',
544                             value: 42,
545                             raw: '42',
546                             range: [9, 11],
547                             loc: {
548                                 start: { line: 1, column: 9 },
549                                 end: { line: 1, column: 11 }
550                             }
551                         }],
552                     range: [4, 13],
553                     loc: {
554                         start: { line: 1, column: 4 },
555                         end: { line: 1, column: 13 }
556                     }
557                 },
558                 range: [0, 13],
559                 loc: {
560                     start: { line: 1, column: 0 },
561                     end: { line: 1, column: 13 }
562                 }
563             },
564             range: [0, 13],
565             loc: {
566                 start: { line: 1, column: 0 },
567                 end: { line: 1, column: 13 }
568             }
569         },
570
571         'x = [ 1, 2, 3, ]': {
572             type: 'ExpressionStatement',
573             expression: {
574                 type: 'AssignmentExpression',
575                 operator: '=',
576                 left: {
577                     type: 'Identifier',
578                     name: 'x',
579                     range: [0, 1],
580                     loc: {
581                         start: { line: 1, column: 0 },
582                         end: { line: 1, column: 1 }
583                     }
584                 },
585                 right: {
586                     type: 'ArrayExpression',
587                     elements: [{
588                         type: 'Literal',
589                         value: 1,
590                         raw: '1',
591                         range: [6, 7],
592                         loc: {
593                             start: { line: 1, column: 6 },
594                             end: { line: 1, column: 7 }
595                         }
596                     }, {
597                         type: 'Literal',
598                         value: 2,
599                         raw: '2',
600                         range: [9, 10],
601                         loc: {
602                             start: { line: 1, column: 9 },
603                             end: { line: 1, column: 10 }
604                         }
605                     }, {
606                         type: 'Literal',
607                         value: 3,
608                         raw: '3',
609                         range: [12, 13],
610                         loc: {
611                             start: { line: 1, column: 12 },
612                             end: { line: 1, column: 13 }
613                         }
614                     }],
615                     range: [4, 16],
616                     loc: {
617                         start: { line: 1, column: 4 },
618                         end: { line: 1, column: 16 }
619                     }
620                 },
621                 range: [0, 16],
622                 loc: {
623                     start: { line: 1, column: 0 },
624                     end: { line: 1, column: 16 }
625                 }
626             },
627             range: [0, 16],
628             loc: {
629                 start: { line: 1, column: 0 },
630                 end: { line: 1, column: 16 }
631             }
632         },
633
634         'x = [ 1, 2,, 3, ]': {
635             type: 'ExpressionStatement',
636             expression: {
637                 type: 'AssignmentExpression',
638                 operator: '=',
639                 left: {
640                     type: 'Identifier',
641                     name: 'x',
642                     range: [0, 1],
643                     loc: {
644                         start: { line: 1, column: 0 },
645                         end: { line: 1, column: 1 }
646                     }
647                 },
648                 right: {
649                     type: 'ArrayExpression',
650                     elements: [{
651                         type: 'Literal',
652                         value: 1,
653                         raw: '1',
654                         range: [6, 7],
655                         loc: {
656                             start: { line: 1, column: 6 },
657                             end: { line: 1, column: 7 }
658                         }
659                     }, {
660                         type: 'Literal',
661                         value: 2,
662                         raw: '2',
663                         range: [9, 10],
664                         loc: {
665                             start: { line: 1, column: 9 },
666                             end: { line: 1, column: 10 }
667                         }
668                     }, null, {
669                         type: 'Literal',
670                         value: 3,
671                         raw: '3',
672                         range: [13, 14],
673                         loc: {
674                             start: { line: 1, column: 13 },
675                             end: { line: 1, column: 14 }
676                         }
677                     }],
678                     range: [4, 17],
679                     loc: {
680                         start: { line: 1, column: 4 },
681                         end: { line: 1, column: 17 }
682                     }
683                 },
684                 range: [0, 17],
685                 loc: {
686                     start: { line: 1, column: 0 },
687                     end: { line: 1, column: 17 }
688                 }
689             },
690             range: [0, 17],
691             loc: {
692                 start: { line: 1, column: 0 },
693                 end: { line: 1, column: 17 }
694             }
695         },
696
697         '日本語 = []': {
698             type: 'ExpressionStatement',
699             expression: {
700                 type: 'AssignmentExpression',
701                 operator: '=',
702                 left: {
703                     type: 'Identifier',
704                     name: '日本語',
705                     range: [0, 3],
706                     loc: {
707                         start: { line: 1, column: 0 },
708                         end: { line: 1, column: 3 }
709                     }
710                 },
711                 right: {
712                     type: 'ArrayExpression',
713                     elements: [],
714                     range: [6, 8],
715                     loc: {
716                         start: { line: 1, column: 6 },
717                         end: { line: 1, column: 8 }
718                     }
719                 },
720                 range: [0, 8],
721                 loc: {
722                     start: { line: 1, column: 0 },
723                     end: { line: 1, column: 8 }
724                 }
725             },
726             range: [0, 8],
727             loc: {
728                 start: { line: 1, column: 0 },
729                 end: { line: 1, column: 8 }
730             }
731         },
732
733         'T\u203F = []': {
734             type: 'ExpressionStatement',
735             expression: {
736                 type: 'AssignmentExpression',
737                 operator: '=',
738                 left: {
739                     type: 'Identifier',
740                     name: 'T\u203F',
741                     range: [0, 2],
742                     loc: {
743                         start: { line: 1, column: 0 },
744                         end: { line: 1, column: 2 }
745                     }
746                 },
747                 right: {
748                     type: 'ArrayExpression',
749                     elements: [],
750                     range: [5, 7],
751                     loc: {
752                         start: { line: 1, column: 5 },
753                         end: { line: 1, column: 7 }
754                     }
755                 },
756                 range: [0, 7],
757                 loc: {
758                     start: { line: 1, column: 0 },
759                     end: { line: 1, column: 7 }
760                 }
761             },
762             range: [0, 7],
763             loc: {
764                 start: { line: 1, column: 0 },
765                 end: { line: 1, column: 7 }
766             }
767         },
768
769         'T\u200C = []': {
770             type: 'ExpressionStatement',
771             expression: {
772                 type: 'AssignmentExpression',
773                 operator: '=',
774                 left: {
775                     type: 'Identifier',
776                     name: 'T\u200C',
777                     range: [0, 2],
778                     loc: {
779                         start: { line: 1, column: 0 },
780                         end: { line: 1, column: 2 }
781                     }
782                 },
783                 right: {
784                     type: 'ArrayExpression',
785                     elements: [],
786                     range: [5, 7],
787                     loc: {
788                         start: { line: 1, column: 5 },
789                         end: { line: 1, column: 7 }
790                     }
791                 },
792                 range: [0, 7],
793                 loc: {
794                     start: { line: 1, column: 0 },
795                     end: { line: 1, column: 7 }
796                 }
797             },
798             range: [0, 7],
799             loc: {
800                 start: { line: 1, column: 0 },
801                 end: { line: 1, column: 7 }
802             }
803         },
804
805         'T\u200D = []': {
806             type: 'ExpressionStatement',
807             expression: {
808                 type: 'AssignmentExpression',
809                 operator: '=',
810                 left: {
811                     type: 'Identifier',
812                     name: 'T\u200D',
813                     range: [0, 2],
814                     loc: {
815                         start: { line: 1, column: 0 },
816                         end: { line: 1, column: 2 }
817                     }
818                 },
819                 right: {
820                     type: 'ArrayExpression',
821                     elements: [],
822                     range: [5, 7],
823                     loc: {
824                         start: { line: 1, column: 5 },
825                         end: { line: 1, column: 7 }
826                     }
827                 },
828                 range: [0, 7],
829                 loc: {
830                     start: { line: 1, column: 0 },
831                     end: { line: 1, column: 7 }
832                 }
833             },
834             range: [0, 7],
835             loc: {
836                 start: { line: 1, column: 0 },
837                 end: { line: 1, column: 7 }
838             }
839         },
840
841         '\u2163\u2161 = []': {
842             type: 'ExpressionStatement',
843             expression: {
844                 type: 'AssignmentExpression',
845                 operator: '=',
846                 left: {
847                     type: 'Identifier',
848                     name: '\u2163\u2161',
849                     range: [0, 2],
850                     loc: {
851                         start: { line: 1, column: 0 },
852                         end: { line: 1, column: 2 }
853                     }
854                 },
855                 right: {
856                     type: 'ArrayExpression',
857                     elements: [],
858                     range: [5, 7],
859                     loc: {
860                         start: { line: 1, column: 5 },
861                         end: { line: 1, column: 7 }
862                     }
863                 },
864                 range: [0, 7],
865                 loc: {
866                     start: { line: 1, column: 0 },
867                     end: { line: 1, column: 7 }
868                 }
869             },
870             range: [0, 7],
871             loc: {
872                 start: { line: 1, column: 0 },
873                 end: { line: 1, column: 7 }
874             }
875         },
876
877         '\u2163\u2161\u200A=\u2009[]': {
878             type: 'ExpressionStatement',
879             expression: {
880                 type: 'AssignmentExpression',
881                 operator: '=',
882                 left: {
883                     type: 'Identifier',
884                     name: '\u2163\u2161',
885                     range: [0, 2],
886                     loc: {
887                         start: { line: 1, column: 0 },
888                         end: { line: 1, column: 2 }
889                     }
890                 },
891                 right: {
892                     type: 'ArrayExpression',
893                     elements: [],
894                     range: [5, 7],
895                     loc: {
896                         start: { line: 1, column: 5 },
897                         end: { line: 1, column: 7 }
898                     }
899                 },
900                 range: [0, 7],
901                 loc: {
902                     start: { line: 1, column: 0 },
903                     end: { line: 1, column: 7 }
904                 }
905             },
906             range: [0, 7],
907             loc: {
908                 start: { line: 1, column: 0 },
909                 end: { line: 1, column: 7 }
910             }
911         }
912
913     },
914
915     'Object Initializer': {
916
917         'x = {}': {
918             type: 'ExpressionStatement',
919             expression: {
920                 type: 'AssignmentExpression',
921                 operator: '=',
922                 left: {
923                     type: 'Identifier',
924                     name: 'x',
925                     range: [0, 1],
926                     loc: {
927                         start: { line: 1, column: 0 },
928                         end: { line: 1, column: 1 }
929                     }
930                 },
931                 right: {
932                     type: 'ObjectExpression',
933                     properties: [],
934                     range: [4, 6],
935                     loc: {
936                         start: { line: 1, column: 4 },
937                         end: { line: 1, column: 6 }
938                     }
939                 },
940                 range: [0, 6],
941                 loc: {
942                     start: { line: 1, column: 0 },
943                     end: { line: 1, column: 6 }
944                 }
945             },
946             range: [0, 6],
947             loc: {
948                 start: { line: 1, column: 0 },
949                 end: { line: 1, column: 6 }
950             }
951         },
952
953         'x = { }': {
954             type: 'ExpressionStatement',
955             expression: {
956                 type: 'AssignmentExpression',
957                 operator: '=',
958                 left: {
959                     type: 'Identifier',
960                     name: 'x',
961                     range: [0, 1],
962                     loc: {
963                         start: { line: 1, column: 0 },
964                         end: { line: 1, column: 1 }
965                     }
966                 },
967                 right: {
968                     type: 'ObjectExpression',
969                     properties: [],
970                     range: [4, 7],
971                     loc: {
972                         start: { line: 1, column: 4 },
973                         end: { line: 1, column: 7 }
974                     }
975                 },
976                 range: [0, 7],
977                 loc: {
978                     start: { line: 1, column: 0 },
979                     end: { line: 1, column: 7 }
980                 }
981             },
982             range: [0, 7],
983             loc: {
984                 start: { line: 1, column: 0 },
985                 end: { line: 1, column: 7 }
986             }
987         },
988
989         'x = { answer: 42 }': {
990             type: 'ExpressionStatement',
991             expression: {
992                 type: 'AssignmentExpression',
993                 operator: '=',
994                 left: {
995                     type: 'Identifier',
996                     name: 'x',
997                     range: [0, 1],
998                     loc: {
999                         start: { line: 1, column: 0 },
1000                         end: { line: 1, column: 1 }
1001                     }
1002                 },
1003                 right: {
1004                     type: 'ObjectExpression',
1005                     properties: [{
1006                         type: 'Property',
1007                         key: {
1008                             type: 'Identifier',
1009                             name: 'answer',
1010                             range: [6, 12],
1011                             loc: {
1012                                 start: { line: 1, column: 6 },
1013                                 end: { line: 1, column: 12 }
1014                             }
1015                         },
1016                         value: {
1017                             type: 'Literal',
1018                             value: 42,
1019                             raw: '42',
1020                             range: [14, 16],
1021                             loc: {
1022                                 start: { line: 1, column: 14 },
1023                                 end: { line: 1, column: 16 }
1024                             }
1025                         },
1026                         kind: 'init',
1027                         range: [6, 16],
1028                         loc: {
1029                             start: { line: 1, column: 6 },
1030                             end: { line: 1, column: 16 }
1031                         }
1032                     }],
1033                     range: [4, 18],
1034                     loc: {
1035                         start: { line: 1, column: 4 },
1036                         end: { line: 1, column: 18 }
1037                     }
1038                 },
1039                 range: [0, 18],
1040                 loc: {
1041                     start: { line: 1, column: 0 },
1042                     end: { line: 1, column: 18 }
1043                 }
1044             },
1045             range: [0, 18],
1046             loc: {
1047                 start: { line: 1, column: 0 },
1048                 end: { line: 1, column: 18 }
1049             }
1050         },
1051
1052         'x = { if: 42 }': {
1053             type: 'ExpressionStatement',
1054             expression: {
1055                 type: 'AssignmentExpression',
1056                 operator: '=',
1057                 left: {
1058                     type: 'Identifier',
1059                     name: 'x',
1060                     range: [0, 1],
1061                     loc: {
1062                         start: { line: 1, column: 0 },
1063                         end: { line: 1, column: 1 }
1064                     }
1065                 },
1066                 right: {
1067                     type: 'ObjectExpression',
1068                     properties: [{
1069                         type: 'Property',
1070                         key: {
1071                             type: 'Identifier',
1072                             name: 'if',
1073                             range: [6, 8],
1074                             loc: {
1075                                 start: { line: 1, column: 6 },
1076                                 end: { line: 1, column: 8 }
1077                             }
1078                         },
1079                         value: {
1080                             type: 'Literal',
1081                             value: 42,
1082                             raw: '42',
1083                             range: [10, 12],
1084                             loc: {
1085                                 start: { line: 1, column: 10 },
1086                                 end: { line: 1, column: 12 }
1087                             }
1088                         },
1089                         kind: 'init',
1090                         range: [6, 12],
1091                         loc: {
1092                             start: { line: 1, column: 6 },
1093                             end: { line: 1, column: 12 }
1094                         }
1095                     }],
1096                     range: [4, 14],
1097                     loc: {
1098                         start: { line: 1, column: 4 },
1099                         end: { line: 1, column: 14 }
1100                     }
1101                 },
1102                 range: [0, 14],
1103                 loc: {
1104                     start: { line: 1, column: 0 },
1105                     end: { line: 1, column: 14 }
1106                 }
1107             },
1108             range: [0, 14],
1109             loc: {
1110                 start: { line: 1, column: 0 },
1111                 end: { line: 1, column: 14 }
1112             }
1113         },
1114
1115         'x = { true: 42 }': {
1116             type: 'ExpressionStatement',
1117             expression: {
1118                 type: 'AssignmentExpression',
1119                 operator: '=',
1120                 left: {
1121                     type: 'Identifier',
1122                     name: 'x',
1123                     range: [0, 1],
1124                     loc: {
1125                         start: { line: 1, column: 0 },
1126                         end: { line: 1, column: 1 }
1127                     }
1128                 },
1129                 right: {
1130                     type: 'ObjectExpression',
1131                     properties: [{
1132                         type: 'Property',
1133                         key: {
1134                             type: 'Identifier',
1135                             name: 'true',
1136                             range: [6, 10],
1137                             loc: {
1138                                 start: { line: 1, column: 6 },
1139                                 end: { line: 1, column: 10 }
1140                             }
1141                         },
1142                         value: {
1143                             type: 'Literal',
1144                             value: 42,
1145                             raw: '42',
1146                             range: [12, 14],
1147                             loc: {
1148                                 start: { line: 1, column: 12 },
1149                                 end: { line: 1, column: 14 }
1150                             }
1151                         },
1152                         kind: 'init',
1153                         range: [6, 14],
1154                         loc: {
1155                             start: { line: 1, column: 6 },
1156                             end: { line: 1, column: 14 }
1157                         }
1158                     }],
1159                     range: [4, 16],
1160                     loc: {
1161                         start: { line: 1, column: 4 },
1162                         end: { line: 1, column: 16 }
1163                     }
1164                 },
1165                 range: [0, 16],
1166                 loc: {
1167                     start: { line: 1, column: 0 },
1168                     end: { line: 1, column: 16 }
1169                 }
1170             },
1171             range: [0, 16],
1172             loc: {
1173                 start: { line: 1, column: 0 },
1174                 end: { line: 1, column: 16 }
1175             }
1176         },
1177
1178         'x = { false: 42 }': {
1179             type: 'ExpressionStatement',
1180             expression: {
1181                 type: 'AssignmentExpression',
1182                 operator: '=',
1183                 left: {
1184                     type: 'Identifier',
1185                     name: 'x',
1186                     range: [0, 1],
1187                     loc: {
1188                         start: { line: 1, column: 0 },
1189                         end: { line: 1, column: 1 }
1190                     }
1191                 },
1192                 right: {
1193                     type: 'ObjectExpression',
1194                     properties: [{
1195                         type: 'Property',
1196                         key: {
1197                             type: 'Identifier',
1198                             name: 'false',
1199                             range: [6, 11],
1200                             loc: {
1201                                 start: { line: 1, column: 6 },
1202                                 end: { line: 1, column: 11 }
1203                             }
1204                         },
1205                         value: {
1206                             type: 'Literal',
1207                             value: 42,
1208                             raw: '42',
1209                             range: [13, 15],
1210                             loc: {
1211                                 start: { line: 1, column: 13 },
1212                                 end: { line: 1, column: 15 }
1213                             }
1214                         },
1215                         kind: 'init',
1216                         range: [6, 15],
1217                         loc: {
1218                             start: { line: 1, column: 6 },
1219                             end: { line: 1, column: 15 }
1220                         }
1221                     }],
1222                     range: [4, 17],
1223                     loc: {
1224                         start: { line: 1, column: 4 },
1225                         end: { line: 1, column: 17 }
1226                     }
1227                 },
1228                 range: [0, 17],
1229                 loc: {
1230                     start: { line: 1, column: 0 },
1231                     end: { line: 1, column: 17 }
1232                 }
1233             },
1234             range: [0, 17],
1235             loc: {
1236                 start: { line: 1, column: 0 },
1237                 end: { line: 1, column: 17 }
1238             }
1239         },
1240
1241         'x = { null: 42 }': {
1242             type: 'ExpressionStatement',
1243             expression: {
1244                 type: 'AssignmentExpression',
1245                 operator: '=',
1246                 left: {
1247                     type: 'Identifier',
1248                     name: 'x',
1249                     range: [0, 1],
1250                     loc: {
1251                         start: { line: 1, column: 0 },
1252                         end: { line: 1, column: 1 }
1253                     }
1254                 },
1255                 right: {
1256                     type: 'ObjectExpression',
1257                     properties: [{
1258                         type: 'Property',
1259                         key: {
1260                             type: 'Identifier',
1261                             name: 'null',
1262                             range: [6, 10],
1263                             loc: {
1264                                 start: { line: 1, column: 6 },
1265                                 end: { line: 1, column: 10 }
1266                             }
1267                         },
1268                         value: {
1269                             type: 'Literal',
1270                             value: 42,
1271                             raw: '42',
1272                             range: [12, 14],
1273                             loc: {
1274                                 start: { line: 1, column: 12 },
1275                                 end: { line: 1, column: 14 }
1276                             }
1277                         },
1278                         kind: 'init',
1279                         range: [6, 14],
1280                         loc: {
1281                             start: { line: 1, column: 6 },
1282                             end: { line: 1, column: 14 }
1283                         }
1284                     }],
1285                     range: [4, 16],
1286                     loc: {
1287                         start: { line: 1, column: 4 },
1288                         end: { line: 1, column: 16 }
1289                     }
1290                 },
1291                 range: [0, 16],
1292                 loc: {
1293                     start: { line: 1, column: 0 },
1294                     end: { line: 1, column: 16 }
1295                 }
1296             },
1297             range: [0, 16],
1298             loc: {
1299                 start: { line: 1, column: 0 },
1300                 end: { line: 1, column: 16 }
1301             }
1302         },
1303
1304         'x = { "answer": 42 }': {
1305             type: 'ExpressionStatement',
1306             expression: {
1307                 type: 'AssignmentExpression',
1308                 operator: '=',
1309                 left: {
1310                     type: 'Identifier',
1311                     name: 'x',
1312                     range: [0, 1],
1313                     loc: {
1314                         start: { line: 1, column: 0 },
1315                         end: { line: 1, column: 1 }
1316                     }
1317                 },
1318                 right: {
1319                     type: 'ObjectExpression',
1320                     properties: [{
1321                         type: 'Property',
1322                         key: {
1323                             type: 'Literal',
1324                             value: 'answer',
1325                             raw: '"answer"',
1326                             range: [6, 14],
1327                             loc: {
1328                                 start: { line: 1, column: 6 },
1329                                 end: { line: 1, column: 14 }
1330                             }
1331                         },
1332                         value: {
1333                             type: 'Literal',
1334                             value: 42,
1335                             raw: '42',
1336                             range: [16, 18],
1337                             loc: {
1338                                 start: { line: 1, column: 16 },
1339                                 end: { line: 1, column: 18 }
1340                             }
1341                         },
1342                         kind: 'init',
1343                         range: [6, 18],
1344                         loc: {
1345                             start: { line: 1, column: 6 },
1346                             end: { line: 1, column: 18 }
1347                         }
1348                     }],
1349                     range: [4, 20],
1350                     loc: {
1351                         start: { line: 1, column: 4 },
1352                         end: { line: 1, column: 20 }
1353                     }
1354                 },
1355                 range: [0, 20],
1356                 loc: {
1357                     start: { line: 1, column: 0 },
1358                     end: { line: 1, column: 20 }
1359                 }
1360             },
1361             range: [0, 20],
1362             loc: {
1363                 start: { line: 1, column: 0 },
1364                 end: { line: 1, column: 20 }
1365             }
1366         },
1367
1368         'x = { x: 1, x: 2 }': {
1369             type: 'ExpressionStatement',
1370             expression: {
1371                 type: 'AssignmentExpression',
1372                 operator: '=',
1373                 left: {
1374                     type: 'Identifier',
1375                     name: 'x',
1376                     range: [0, 1],
1377                     loc: {
1378                         start: { line: 1, column: 0 },
1379                         end: { line: 1, column: 1 }
1380                     }
1381                 },
1382                 right: {
1383                     type: 'ObjectExpression',
1384                     properties: [
1385                         {
1386                             type: 'Property',
1387                             key: {
1388                                 type: 'Identifier',
1389                                 name: 'x',
1390                                 range: [6, 7],
1391                                 loc: {
1392                                     start: { line: 1, column: 6 },
1393                                     end: { line: 1, column: 7 }
1394                                 }
1395                             },
1396                             value: {
1397                                 type: 'Literal',
1398                                 value: 1,
1399                                 raw: '1',
1400                                 range: [9, 10],
1401                                 loc: {
1402                                     start: { line: 1, column: 9 },
1403                                     end: { line: 1, column: 10 }
1404                                 }
1405                             },
1406                             kind: 'init',
1407                             range: [6, 10],
1408                             loc: {
1409                                 start: { line: 1, column: 6 },
1410                                 end: { line: 1, column: 10 }
1411                             }
1412                         },
1413                         {
1414                             type: 'Property',
1415                             key: {
1416                                 type: 'Identifier',
1417                                 name: 'x',
1418                                 range: [12, 13],
1419                                 loc: {
1420                                     start: { line: 1, column: 12 },
1421                                     end: { line: 1, column: 13 }
1422                                 }
1423                             },
1424                             value: {
1425                                 type: 'Literal',
1426                                 value: 2,
1427                                 raw: '2',
1428                                 range: [15, 16],
1429                                 loc: {
1430                                     start: { line: 1, column: 15 },
1431                                     end: { line: 1, column: 16 }
1432                                 }
1433                             },
1434                             kind: 'init',
1435                             range: [12, 16],
1436                             loc: {
1437                                 start: { line: 1, column: 12 },
1438                                 end: { line: 1, column: 16 }
1439                             }
1440                         }
1441                     ],
1442                     range: [4, 18],
1443                     loc: {
1444                         start: { line: 1, column: 4 },
1445                         end: { line: 1, column: 18 }
1446                     }
1447                 },
1448                 range: [0, 18],
1449                 loc: {
1450                     start: { line: 1, column: 0 },
1451                     end: { line: 1, column: 18 }
1452                 }
1453             },
1454             range: [0, 18],
1455             loc: {
1456                 start: { line: 1, column: 0 },
1457                 end: { line: 1, column: 18 }
1458             }
1459         },
1460
1461         'x = { get width() { return m_width } }': {
1462             type: 'ExpressionStatement',
1463             expression: {
1464                 type: 'AssignmentExpression',
1465                 operator: '=',
1466                 left: {
1467                     type: 'Identifier',
1468                     name: 'x',
1469                     range: [0, 1],
1470                     loc: {
1471                         start: { line: 1, column: 0 },
1472                         end: { line: 1, column: 1 }
1473                     }
1474                 },
1475                 right: {
1476                     type: 'ObjectExpression',
1477                     properties: [{
1478                         type: 'Property',
1479                         key: {
1480                             type: 'Identifier',
1481                             name: 'width',
1482                             range: [10, 15],
1483                             loc: {
1484                                 start: { line: 1, column: 10 },
1485                                 end: { line: 1, column: 15 }
1486                             }
1487                         },
1488                         value: {
1489                             type: 'FunctionExpression',
1490                             id: null,
1491                             params: [],
1492                             defaults: [],
1493                             body: {
1494                                 type: 'BlockStatement',
1495                                 body: [{
1496                                     type: 'ReturnStatement',
1497                                     argument: {
1498                                         type: 'Identifier',
1499                                         name: 'm_width',
1500                                         range: [27, 34],
1501                                         loc: {
1502                                             start: { line: 1, column: 27 },
1503                                             end: { line: 1, column: 34 }
1504                                         }
1505                                     },
1506                                     range: [20, 35],
1507                                     loc: {
1508                                         start: { line: 1, column: 20 },
1509                                         end: { line: 1, column: 35 }
1510                                     }
1511                                 }],
1512                                 range: [18, 36],
1513                                 loc: {
1514                                     start: { line: 1, column: 18 },
1515                                     end: { line: 1, column: 36 }
1516                                 }
1517                             },
1518                             rest: null,
1519                             generator: false,
1520                             expression: false,
1521                             range: [18, 36],
1522                             loc: {
1523                                 start: { line: 1, column: 18 },
1524                                 end: { line: 1, column: 36 }
1525                             }
1526                         },
1527                         kind: 'get',
1528                         range: [6, 36],
1529                         loc: {
1530                             start: { line: 1, column: 6 },
1531                             end: { line: 1, column: 36 }
1532                         }
1533                     }],
1534                     range: [4, 38],
1535                     loc: {
1536                         start: { line: 1, column: 4 },
1537                         end: { line: 1, column: 38 }
1538                     }
1539                 },
1540                 range: [0, 38],
1541                 loc: {
1542                     start: { line: 1, column: 0 },
1543                     end: { line: 1, column: 38 }
1544                 }
1545             },
1546             range: [0, 38],
1547             loc: {
1548                 start: { line: 1, column: 0 },
1549                 end: { line: 1, column: 38 }
1550             }
1551         },
1552
1553         'x = { get undef() {} }': {
1554             type: 'ExpressionStatement',
1555             expression: {
1556                 type: 'AssignmentExpression',
1557                 operator: '=',
1558                 left: {
1559                     type: 'Identifier',
1560                     name: 'x',
1561                     range: [0, 1],
1562                     loc: {
1563                         start: { line: 1, column: 0 },
1564                         end: { line: 1, column: 1 }
1565                     }
1566                 },
1567                 right: {
1568                     type: 'ObjectExpression',
1569                     properties: [{
1570                         type: 'Property',
1571                         key: {
1572                             type: 'Identifier',
1573                             name: 'undef',
1574                             range: [10, 15],
1575                             loc: {
1576                                 start: { line: 1, column: 10 },
1577                                 end: { line: 1, column: 15 }
1578                             }
1579                         },
1580                         value: {
1581                             type: 'FunctionExpression',
1582                             id: null,
1583                             params: [],
1584                             defaults: [],
1585                             body: {
1586                                 type: 'BlockStatement',
1587                                 body: [],
1588                                 range: [18, 20],
1589                                 loc: {
1590                                     start: { line: 1, column: 18 },
1591                                     end: { line: 1, column: 20 }
1592                                 }
1593                             },
1594                             rest: null,
1595                             generator: false,
1596                             expression: false,
1597                             range: [18, 20],
1598                             loc: {
1599                                 start: { line: 1, column: 18 },
1600                                 end: { line: 1, column: 20 }
1601                             }
1602                         },
1603                         kind: 'get',
1604                         range: [6, 20],
1605                         loc: {
1606                             start: { line: 1, column: 6 },
1607                             end: { line: 1, column: 20 }
1608                         }
1609                     }],
1610                     range: [4, 22],
1611                     loc: {
1612                         start: { line: 1, column: 4 },
1613                         end: { line: 1, column: 22 }
1614                     }
1615                 },
1616                 range: [0, 22],
1617                 loc: {
1618                     start: { line: 1, column: 0 },
1619                     end: { line: 1, column: 22 }
1620                 }
1621             },
1622             range: [0, 22],
1623             loc: {
1624                 start: { line: 1, column: 0 },
1625                 end: { line: 1, column: 22 }
1626             }
1627         },
1628
1629         'x = { get if() {} }': {
1630             type: 'ExpressionStatement',
1631             expression: {
1632                 type: 'AssignmentExpression',
1633                 operator: '=',
1634                 left: {
1635                     type: 'Identifier',
1636                     name: 'x',
1637                     range: [0, 1],
1638                     loc: {
1639                         start: { line: 1, column: 0 },
1640                         end: { line: 1, column: 1 }
1641                     }
1642                 },
1643                 right: {
1644                     type: 'ObjectExpression',
1645                     properties: [{
1646                         type: 'Property',
1647                         key: {
1648                             type: 'Identifier',
1649                             name: 'if',
1650                             range: [10, 12],
1651                             loc: {
1652                                 start: { line: 1, column: 10 },
1653                                 end: { line: 1, column: 12 }
1654                             }
1655                         },
1656                         value: {
1657                             type: 'FunctionExpression',
1658                             id: null,
1659                             params: [],
1660                             defaults: [],
1661                             body: {
1662                                 type: 'BlockStatement',
1663                                 body: [],
1664                                 range: [15, 17],
1665                                 loc: {
1666                                     start: { line: 1, column: 15 },
1667                                     end: { line: 1, column: 17 }
1668                                 }
1669                             },
1670                             rest: null,
1671                             generator: false,
1672                             expression: false,
1673                             range: [15, 17],
1674                             loc: {
1675                                 start: { line: 1, column: 15 },
1676                                 end: { line: 1, column: 17 }
1677                             }
1678                         },
1679                         kind: 'get',
1680                         range: [6, 17],
1681                         loc: {
1682                             start: { line: 1, column: 6 },
1683                             end: { line: 1, column: 17 }
1684                         }
1685                     }],
1686                     range: [4, 19],
1687                     loc: {
1688                         start: { line: 1, column: 4 },
1689                         end: { line: 1, column: 19 }
1690                     }
1691                 },
1692                 range: [0, 19],
1693                 loc: {
1694                     start: { line: 1, column: 0 },
1695                     end: { line: 1, column: 19 }
1696                 }
1697             },
1698             range: [0, 19],
1699             loc: {
1700                 start: { line: 1, column: 0 },
1701                 end: { line: 1, column: 19 }
1702             }
1703         },
1704
1705         'x = { get true() {} }': {
1706             type: 'ExpressionStatement',
1707             expression: {
1708                 type: 'AssignmentExpression',
1709                 operator: '=',
1710                 left: {
1711                     type: 'Identifier',
1712                     name: 'x',
1713                     range: [0, 1],
1714                     loc: {
1715                         start: { line: 1, column: 0 },
1716                         end: { line: 1, column: 1 }
1717                     }
1718                 },
1719                 right: {
1720                     type: 'ObjectExpression',
1721                     properties: [{
1722                         type: 'Property',
1723                         key: {
1724                             type: 'Identifier',
1725                             name: 'true',
1726                             range: [10, 14],
1727                             loc: {
1728                                 start: { line: 1, column: 10 },
1729                                 end: { line: 1, column: 14 }
1730                             }
1731                         },
1732                         value: {
1733                             type: 'FunctionExpression',
1734                             id: null,
1735                             params: [],
1736                             defaults: [],
1737                             body: {
1738                                 type: 'BlockStatement',
1739                                 body: [],
1740                                 range: [17, 19],
1741                                 loc: {
1742                                     start: { line: 1, column: 17 },
1743                                     end: { line: 1, column: 19 }
1744                                 }
1745                             },
1746                             rest: null,
1747                             generator: false,
1748                             expression: false,
1749                             range: [17, 19],
1750                             loc: {
1751                                 start: { line: 1, column: 17 },
1752                                 end: { line: 1, column: 19 }
1753                             }
1754                         },
1755                         kind: 'get',
1756                         range: [6, 19],
1757                         loc: {
1758                             start: { line: 1, column: 6 },
1759                             end: { line: 1, column: 19 }
1760                         }
1761                     }],
1762                     range: [4, 21],
1763                     loc: {
1764                         start: { line: 1, column: 4 },
1765                         end: { line: 1, column: 21 }
1766                     }
1767                 },
1768                 range: [0, 21],
1769                 loc: {
1770                     start: { line: 1, column: 0 },
1771                     end: { line: 1, column: 21 }
1772                 }
1773             },
1774             range: [0, 21],
1775             loc: {
1776                 start: { line: 1, column: 0 },
1777                 end: { line: 1, column: 21 }
1778             }
1779         },
1780
1781         'x = { get false() {} }': {
1782             type: 'ExpressionStatement',
1783             expression: {
1784                 type: 'AssignmentExpression',
1785                 operator: '=',
1786                 left: {
1787                     type: 'Identifier',
1788                     name: 'x',
1789                     range: [0, 1],
1790                     loc: {
1791                         start: { line: 1, column: 0 },
1792                         end: { line: 1, column: 1 }
1793                     }
1794                 },
1795                 right: {
1796                     type: 'ObjectExpression',
1797                     properties: [{
1798                         type: 'Property',
1799                         key: {
1800                             type: 'Identifier',
1801                             name: 'false',
1802                             range: [10, 15],
1803                             loc: {
1804                                 start: { line: 1, column: 10 },
1805                                 end: { line: 1, column: 15 }
1806                             }
1807                         },
1808                         value: {
1809                             type: 'FunctionExpression',
1810                             id: null,
1811                             params: [],
1812                             defaults: [],
1813                             body: {
1814                                 type: 'BlockStatement',
1815                                 body: [],
1816                                 range: [18, 20],
1817                                 loc: {
1818                                     start: { line: 1, column: 18 },
1819                                     end: { line: 1, column: 20 }
1820                                 }
1821                             },
1822                             rest: null,
1823                             generator: false,
1824                             expression: false,
1825                             range: [18, 20],
1826                             loc: {
1827                                 start: { line: 1, column: 18 },
1828                                 end: { line: 1, column: 20 }
1829                             }
1830                         },
1831                         kind: 'get',
1832                         range: [6, 20],
1833                         loc: {
1834                             start: { line: 1, column: 6 },
1835                             end: { line: 1, column: 20 }
1836                         }
1837                     }],
1838                     range: [4, 22],
1839                     loc: {
1840                         start: { line: 1, column: 4 },
1841                         end: { line: 1, column: 22 }
1842                     }
1843                 },
1844                 range: [0, 22],
1845                 loc: {
1846                     start: { line: 1, column: 0 },
1847                     end: { line: 1, column: 22 }
1848                 }
1849             },
1850             range: [0, 22],
1851             loc: {
1852                 start: { line: 1, column: 0 },
1853                 end: { line: 1, column: 22 }
1854             }
1855         },
1856
1857         'x = { get null() {} }': {
1858             type: 'ExpressionStatement',
1859             expression: {
1860                 type: 'AssignmentExpression',
1861                 operator: '=',
1862                 left: {
1863                     type: 'Identifier',
1864                     name: 'x',
1865                     range: [0, 1],
1866                     loc: {
1867                         start: { line: 1, column: 0 },
1868                         end: { line: 1, column: 1 }
1869                     }
1870                 },
1871                 right: {
1872                     type: 'ObjectExpression',
1873                     properties: [{
1874                         type: 'Property',
1875                         key: {
1876                             type: 'Identifier',
1877                             name: 'null',
1878                             range: [10, 14],
1879                             loc: {
1880                                 start: { line: 1, column: 10 },
1881                                 end: { line: 1, column: 14 }
1882                             }
1883                         },
1884                         value: {
1885                             type: 'FunctionExpression',
1886                             id: null,
1887                             params: [],
1888                             defaults: [],
1889                             body: {
1890                                 type: 'BlockStatement',
1891                                 body: [],
1892                                 range: [17, 19],
1893                                 loc: {
1894                                     start: { line: 1, column: 17 },
1895                                     end: { line: 1, column: 19 }
1896                                 }
1897                             },
1898                             rest: null,
1899                             generator: false,
1900                             expression: false,
1901                             range: [17, 19],
1902                             loc: {
1903                                 start: { line: 1, column: 17 },
1904                                 end: { line: 1, column: 19 }
1905                             }
1906                         },
1907                         kind: 'get',
1908                         range: [6, 19],
1909                         loc: {
1910                             start: { line: 1, column: 6 },
1911                             end: { line: 1, column: 19 }
1912                         }
1913                     }],
1914                     range: [4, 21],
1915                     loc: {
1916                         start: { line: 1, column: 4 },
1917                         end: { line: 1, column: 21 }
1918                     }
1919                 },
1920                 range: [0, 21],
1921                 loc: {
1922                     start: { line: 1, column: 0 },
1923                     end: { line: 1, column: 21 }
1924                 }
1925             },
1926             range: [0, 21],
1927             loc: {
1928                 start: { line: 1, column: 0 },
1929                 end: { line: 1, column: 21 }
1930             }
1931         },
1932
1933         'x = { get "undef"() {} }': {
1934             type: 'ExpressionStatement',
1935             expression: {
1936                 type: 'AssignmentExpression',
1937                 operator: '=',
1938                 left: {
1939                     type: 'Identifier',
1940                     name: 'x',
1941                     range: [0, 1],
1942                     loc: {
1943                         start: { line: 1, column: 0 },
1944                         end: { line: 1, column: 1 }
1945                     }
1946                 },
1947                 right: {
1948                     type: 'ObjectExpression',
1949                     properties: [{
1950                         type: 'Property',
1951                         key: {
1952                             type: 'Literal',
1953                             value: 'undef',
1954                             raw: '"undef"',
1955                             range: [10, 17],
1956                             loc: {
1957                                 start: { line: 1, column: 10 },
1958                                 end: { line: 1, column: 17 }
1959                             }
1960                         },
1961                         value: {
1962                             type: 'FunctionExpression',
1963                             id: null,
1964                             params: [],
1965                             defaults: [],
1966                             body: {
1967                                 type: 'BlockStatement',
1968                                 body: [],
1969                                 range: [20, 22],
1970                                 loc: {
1971                                     start: { line: 1, column: 20 },
1972                                     end: { line: 1, column: 22 }
1973                                 }
1974                             },
1975                             rest: null,
1976                             generator: false,
1977                             expression: false,
1978                             range: [20, 22],
1979                             loc: {
1980                                 start: { line: 1, column: 20 },
1981                                 end: { line: 1, column: 22 }
1982                             }
1983                         },
1984                         kind: 'get',
1985                         range: [6, 22],
1986                         loc: {
1987                             start: { line: 1, column: 6 },
1988                             end: { line: 1, column: 22 }
1989                         }
1990                     }],
1991                     range: [4, 24],
1992                     loc: {
1993                         start: { line: 1, column: 4 },
1994                         end: { line: 1, column: 24 }
1995                     }
1996                 },
1997                 range: [0, 24],
1998                 loc: {
1999                     start: { line: 1, column: 0 },
2000                     end: { line: 1, column: 24 }
2001                 }
2002             },
2003             range: [0, 24],
2004             loc: {
2005                 start: { line: 1, column: 0 },
2006                 end: { line: 1, column: 24 }
2007             }
2008         },
2009
2010         'x = { get 10() {} }': {
2011             type: 'ExpressionStatement',
2012             expression: {
2013                 type: 'AssignmentExpression',
2014                 operator: '=',
2015                 left: {
2016                     type: 'Identifier',
2017                     name: 'x',
2018                     range: [0, 1],
2019                     loc: {
2020                         start: { line: 1, column: 0 },
2021                         end: { line: 1, column: 1 }
2022                     }
2023                 },
2024                 right: {
2025                     type: 'ObjectExpression',
2026                     properties: [{
2027                         type: 'Property',
2028                         key: {
2029                             type: 'Literal',
2030                             value: 10,
2031                             raw: '10',
2032                             range: [10, 12],
2033                             loc: {
2034                                 start: { line: 1, column: 10 },
2035                                 end: { line: 1, column: 12 }
2036                             }
2037                         },
2038                         value: {
2039                             type: 'FunctionExpression',
2040                             id: null,
2041                             params: [],
2042                             defaults: [],
2043                             body: {
2044                                 type: 'BlockStatement',
2045                                 body: [],
2046                                 range: [15, 17],
2047                                 loc: {
2048                                     start: { line: 1, column: 15 },
2049                                     end: { line: 1, column: 17 }
2050                                 }
2051                             },
2052                             rest: null,
2053                             generator: false,
2054                             expression: false,
2055                             range: [15, 17],
2056                             loc: {
2057                                 start: { line: 1, column: 15 },
2058                                 end: { line: 1, column: 17 }
2059                             }
2060                         },
2061                         kind: 'get',
2062                         range: [6, 17],
2063                         loc: {
2064                             start: { line: 1, column: 6 },
2065                             end: { line: 1, column: 17 }
2066                         }
2067                     }],
2068                     range: [4, 19],
2069                     loc: {
2070                         start: { line: 1, column: 4 },
2071                         end: { line: 1, column: 19 }
2072                     }
2073                 },
2074                 range: [0, 19],
2075                 loc: {
2076                     start: { line: 1, column: 0 },
2077                     end: { line: 1, column: 19 }
2078                 }
2079             },
2080             range: [0, 19],
2081             loc: {
2082                 start: { line: 1, column: 0 },
2083                 end: { line: 1, column: 19 }
2084             }
2085         },
2086
2087         'x = { set width(w) { m_width = w } }': {
2088             type: 'ExpressionStatement',
2089             expression: {
2090                 type: 'AssignmentExpression',
2091                 operator: '=',
2092                 left: {
2093                     type: 'Identifier',
2094                     name: 'x',
2095                     range: [0, 1],
2096                     loc: {
2097                         start: { line: 1, column: 0 },
2098                         end: { line: 1, column: 1 }
2099                     }
2100                 },
2101                 right: {
2102                     type: 'ObjectExpression',
2103                     properties: [{
2104                         type: 'Property',
2105                         key: {
2106                             type: 'Identifier',
2107                             name: 'width',
2108                             range: [10, 15],
2109                             loc: {
2110                                 start: { line: 1, column: 10 },
2111                                 end: { line: 1, column: 15 }
2112                             }
2113                         },
2114                         value: {
2115                             type: 'FunctionExpression',
2116                             id: null,
2117                             params: [{
2118                                 type: 'Identifier',
2119                                 name: 'w',
2120                                 range: [16, 17],
2121                                 loc: {
2122                                     start: { line: 1, column: 16 },
2123                                     end: { line: 1, column: 17 }
2124                                 }
2125                             }],
2126                             defaults: [],
2127                             body: {
2128                                 type: 'BlockStatement',
2129                                 body: [{
2130                                     type: 'ExpressionStatement',
2131                                     expression: {
2132                                         type: 'AssignmentExpression',
2133                                         operator: '=',
2134                                         left: {
2135                                             type: 'Identifier',
2136                                             name: 'm_width',
2137                                             range: [21, 28],
2138                                             loc: {
2139                                                 start: { line: 1, column: 21 },
2140                                                 end: { line: 1, column: 28 }
2141                                             }
2142                                         },
2143                                         right: {
2144                                             type: 'Identifier',
2145                                             name: 'w',
2146                                             range: [31, 32],
2147                                             loc: {
2148                                                 start: { line: 1, column: 31 },
2149                                                 end: { line: 1, column: 32 }
2150                                             }
2151                                         },
2152                                         range: [21, 32],
2153                                         loc: {
2154                                             start: { line: 1, column: 21 },
2155                                             end: { line: 1, column: 32 }
2156                                         }
2157                                     },
2158                                     range: [21, 33],
2159                                     loc: {
2160                                         start: { line: 1, column: 21 },
2161                                         end: { line: 1, column: 33 }
2162                                     }
2163                                 }],
2164                                 range: [19, 34],
2165                                 loc: {
2166                                     start: { line: 1, column: 19 },
2167                                     end: { line: 1, column: 34 }
2168                                 }
2169                             },
2170                             rest: null,
2171                             generator: false,
2172                             expression: false,
2173                             range: [19, 34],
2174                             loc: {
2175                                 start: { line: 1, column: 19 },
2176                                 end: { line: 1, column: 34 }
2177                             }
2178                         },
2179                         kind: 'set',
2180                         range: [6, 34],
2181                         loc: {
2182                             start: { line: 1, column: 6 },
2183                             end: { line: 1, column: 34 }
2184                         }
2185                     }],
2186                     range: [4, 36],
2187                     loc: {
2188                         start: { line: 1, column: 4 },
2189                         end: { line: 1, column: 36 }
2190                     }
2191                 },
2192                 range: [0, 36],
2193                 loc: {
2194                     start: { line: 1, column: 0 },
2195                     end: { line: 1, column: 36 }
2196                 }
2197             },
2198             range: [0, 36],
2199             loc: {
2200                 start: { line: 1, column: 0 },
2201                 end: { line: 1, column: 36 }
2202             }
2203         },
2204
2205         'x = { set if(w) { m_if = w } }': {
2206             type: 'ExpressionStatement',
2207             expression: {
2208                 type: 'AssignmentExpression',
2209                 operator: '=',
2210                 left: {
2211                     type: 'Identifier',
2212                     name: 'x',
2213                     range: [0, 1],
2214                     loc: {
2215                         start: { line: 1, column: 0 },
2216                         end: { line: 1, column: 1 }
2217                     }
2218                 },
2219                 right: {
2220                     type: 'ObjectExpression',
2221                     properties: [{
2222                         type: 'Property',
2223                         key: {
2224                             type: 'Identifier',
2225                             name: 'if',
2226                             range: [10, 12],
2227                             loc: {
2228                                 start: { line: 1, column: 10 },
2229                                 end: { line: 1, column: 12 }
2230                             }
2231                         },
2232                         value: {
2233                             type: 'FunctionExpression',
2234                             id: null,
2235                             params: [{
2236                                 type: 'Identifier',
2237                                 name: 'w',
2238                                 range: [13, 14],
2239                                 loc: {
2240                                     start: { line: 1, column: 13 },
2241                                     end: { line: 1, column: 14 }
2242                                 }
2243                             }],
2244                             defaults: [],
2245                             body: {
2246                                 type: 'BlockStatement',
2247                                 body: [{
2248                                     type: 'ExpressionStatement',
2249                                     expression: {
2250                                         type: 'AssignmentExpression',
2251                                         operator: '=',
2252                                         left: {
2253                                             type: 'Identifier',
2254                                             name: 'm_if',
2255                                             range: [18, 22],
2256                                             loc: {
2257                                                 start: { line: 1, column: 18 },
2258                                                 end: { line: 1, column: 22 }
2259                                             }
2260                                         },
2261                                         right: {
2262                                             type: 'Identifier',
2263                                             name: 'w',
2264                                             range: [25, 26],
2265                                             loc: {
2266                                                 start: { line: 1, column: 25 },
2267                                                 end: { line: 1, column: 26 }
2268                                             }
2269                                         },
2270                                         range: [18, 26],
2271                                         loc: {
2272                                             start: { line: 1, column: 18 },
2273                                             end: { line: 1, column: 26 }
2274                                         }
2275                                     },
2276                                     range: [18, 27],
2277                                     loc: {
2278                                         start: { line: 1, column: 18 },
2279                                         end: { line: 1, column: 27 }
2280                                     }
2281                                 }],
2282                                 range: [16, 28],
2283                                 loc: {
2284                                     start: { line: 1, column: 16 },
2285                                     end: { line: 1, column: 28 }
2286                                 }
2287                             },
2288                             rest: null,
2289                             generator: false,
2290                             expression: false,
2291                             range: [16, 28],
2292                             loc: {
2293                                 start: { line: 1, column: 16 },
2294                                 end: { line: 1, column: 28 }
2295                             }
2296                         },
2297                         kind: 'set',
2298                         range: [6, 28],
2299                         loc: {
2300                             start: { line: 1, column: 6 },
2301                             end: { line: 1, column: 28 }
2302                         }
2303                     }],
2304                     range: [4, 30],
2305                     loc: {
2306                         start: { line: 1, column: 4 },
2307                         end: { line: 1, column: 30 }
2308                     }
2309                 },
2310                 range: [0, 30],
2311                 loc: {
2312                     start: { line: 1, column: 0 },
2313                     end: { line: 1, column: 30 }
2314                 }
2315             },
2316             range: [0, 30],
2317             loc: {
2318                 start: { line: 1, column: 0 },
2319                 end: { line: 1, column: 30 }
2320             }
2321         },
2322
2323         'x = { set true(w) { m_true = w } }': {
2324             type: 'ExpressionStatement',
2325             expression: {
2326                 type: 'AssignmentExpression',
2327                 operator: '=',
2328                 left: {
2329                     type: 'Identifier',
2330                     name: 'x',
2331                     range: [0, 1],
2332                     loc: {
2333                         start: { line: 1, column: 0 },
2334                         end: { line: 1, column: 1 }
2335                     }
2336                 },
2337                 right: {
2338                     type: 'ObjectExpression',
2339                     properties: [{
2340                         type: 'Property',
2341                         key: {
2342                             type: 'Identifier',
2343                             name: 'true',
2344                             range: [10, 14],
2345                             loc: {
2346                                 start: { line: 1, column: 10 },
2347                                 end: { line: 1, column: 14 }
2348                             }
2349                         },
2350                         value: {
2351                             type: 'FunctionExpression',
2352                             id: null,
2353                             params: [{
2354                                 type: 'Identifier',
2355                                 name: 'w',
2356                                 range: [15, 16],
2357                                 loc: {
2358                                     start: { line: 1, column: 15 },
2359                                     end: { line: 1, column: 16 }
2360                                 }
2361                             }],
2362                             defaults: [],
2363                             body: {
2364                                 type: 'BlockStatement',
2365                                 body: [{
2366                                     type: 'ExpressionStatement',
2367                                     expression: {
2368                                         type: 'AssignmentExpression',
2369                                         operator: '=',
2370                                         left: {
2371                                             type: 'Identifier',
2372                                             name: 'm_true',
2373                                             range: [20, 26],
2374                                             loc: {
2375                                                 start: { line: 1, column: 20 },
2376                                                 end: { line: 1, column: 26 }
2377                                             }
2378                                         },
2379                                         right: {
2380                                             type: 'Identifier',
2381                                             name: 'w',
2382                                             range: [29, 30],
2383                                             loc: {
2384                                                 start: { line: 1, column: 29 },
2385                                                 end: { line: 1, column: 30 }
2386                                             }
2387                                         },
2388                                         range: [20, 30],
2389                                         loc: {
2390                                             start: { line: 1, column: 20 },
2391                                             end: { line: 1, column: 30 }
2392                                         }
2393                                     },
2394                                     range: [20, 31],
2395                                     loc: {
2396                                         start: { line: 1, column: 20 },
2397                                         end: { line: 1, column: 31 }
2398                                     }
2399                                 }],
2400                                 range: [18, 32],
2401                                 loc: {
2402                                     start: { line: 1, column: 18 },
2403                                     end: { line: 1, column: 32 }
2404                                 }
2405                             },
2406                             rest: null,
2407                             generator: false,
2408                             expression: false,
2409                             range: [18, 32],
2410                             loc: {
2411                                 start: { line: 1, column: 18 },
2412                                 end: { line: 1, column: 32 }
2413                             }
2414                         },
2415                         kind: 'set',
2416                         range: [6, 32],
2417                         loc: {
2418                             start: { line: 1, column: 6 },
2419                             end: { line: 1, column: 32 }
2420                         }
2421                     }],
2422                     range: [4, 34],
2423                     loc: {
2424                         start: { line: 1, column: 4 },
2425                         end: { line: 1, column: 34 }
2426                     }
2427                 },
2428                 range: [0, 34],
2429                 loc: {
2430                     start: { line: 1, column: 0 },
2431                     end: { line: 1, column: 34 }
2432                 }
2433             },
2434             range: [0, 34],
2435             loc: {
2436                 start: { line: 1, column: 0 },
2437                 end: { line: 1, column: 34 }
2438             }
2439         },
2440
2441         'x = { set false(w) { m_false = w } }': {
2442             type: 'ExpressionStatement',
2443             expression: {
2444                 type: 'AssignmentExpression',
2445                 operator: '=',
2446                 left: {
2447                     type: 'Identifier',
2448                     name: 'x',
2449                     range: [0, 1],
2450                     loc: {
2451                         start: { line: 1, column: 0 },
2452                         end: { line: 1, column: 1 }
2453                     }
2454                 },
2455                 right: {
2456                     type: 'ObjectExpression',
2457                     properties: [{
2458                         type: 'Property',
2459                         key: {
2460                             type: 'Identifier',
2461                             name: 'false',
2462                             range: [10, 15],
2463                             loc: {
2464                                 start: { line: 1, column: 10 },
2465                                 end: { line: 1, column: 15 }
2466                             }
2467                         },
2468                         value: {
2469                             type: 'FunctionExpression',
2470                             id: null,
2471                             params: [{
2472                                 type: 'Identifier',
2473                                 name: 'w',
2474                                 range: [16, 17],
2475                                 loc: {
2476                                     start: { line: 1, column: 16 },
2477                                     end: { line: 1, column: 17 }
2478                                 }
2479                             }],
2480                             defaults: [],
2481                             body: {
2482                                 type: 'BlockStatement',
2483                                 body: [{
2484                                     type: 'ExpressionStatement',
2485                                     expression: {
2486                                         type: 'AssignmentExpression',
2487                                         operator: '=',
2488                                         left: {
2489                                             type: 'Identifier',
2490                                             name: 'm_false',
2491                                             range: [21, 28],
2492                                             loc: {
2493                                                 start: { line: 1, column: 21 },
2494                                                 end: { line: 1, column: 28 }
2495                                             }
2496                                         },
2497                                         right: {
2498                                             type: 'Identifier',
2499                                             name: 'w',
2500                                             range: [31, 32],
2501                                             loc: {
2502                                                 start: { line: 1, column: 31 },
2503                                                 end: { line: 1, column: 32 }
2504                                             }
2505                                         },
2506                                         range: [21, 32],
2507                                         loc: {
2508                                             start: { line: 1, column: 21 },
2509                                             end: { line: 1, column: 32 }
2510                                         }
2511                                     },
2512                                     range: [21, 33],
2513                                     loc: {
2514                                         start: { line: 1, column: 21 },
2515                                         end: { line: 1, column: 33 }
2516                                     }
2517                                 }],
2518                                 range: [19, 34],
2519                                 loc: {
2520                                     start: { line: 1, column: 19 },
2521                                     end: { line: 1, column: 34 }
2522                                 }
2523                             },
2524                             rest: null,
2525                             generator: false,
2526                             expression: false,
2527                             range: [19, 34],
2528                             loc: {
2529                                 start: { line: 1, column: 19 },
2530                                 end: { line: 1, column: 34 }
2531                             }
2532                         },
2533                         kind: 'set',
2534                         range: [6, 34],
2535                         loc: {
2536                             start: { line: 1, column: 6 },
2537                             end: { line: 1, column: 34 }
2538                         }
2539                     }],
2540                     range: [4, 36],
2541                     loc: {
2542                         start: { line: 1, column: 4 },
2543                         end: { line: 1, column: 36 }
2544                     }
2545                 },
2546                 range: [0, 36],
2547                 loc: {
2548                     start: { line: 1, column: 0 },
2549                     end: { line: 1, column: 36 }
2550                 }
2551             },
2552             range: [0, 36],
2553             loc: {
2554                 start: { line: 1, column: 0 },
2555                 end: { line: 1, column: 36 }
2556             }
2557         },
2558
2559         'x = { set null(w) { m_null = w } }': {
2560             type: 'ExpressionStatement',
2561             expression: {
2562                 type: 'AssignmentExpression',
2563                 operator: '=',
2564                 left: {
2565                     type: 'Identifier',
2566                     name: 'x',
2567                     range: [0, 1],
2568                     loc: {
2569                         start: { line: 1, column: 0 },
2570                         end: { line: 1, column: 1 }
2571                     }
2572                 },
2573                 right: {
2574                     type: 'ObjectExpression',
2575                     properties: [{
2576                         type: 'Property',
2577                         key: {
2578                             type: 'Identifier',
2579                             name: 'null',
2580                             range: [10, 14],
2581                             loc: {
2582                                 start: { line: 1, column: 10 },
2583                                 end: { line: 1, column: 14 }
2584                             }
2585                         },
2586                         value: {
2587                             type: 'FunctionExpression',
2588                             id: null,
2589                             params: [{
2590                                 type: 'Identifier',
2591                                 name: 'w',
2592                                 range: [15, 16],
2593                                 loc: {
2594                                     start: { line: 1, column: 15 },
2595                                     end: { line: 1, column: 16 }
2596                                 }
2597                             }],
2598                             defaults: [],
2599                             body: {
2600                                 type: 'BlockStatement',
2601                                 body: [{
2602                                     type: 'ExpressionStatement',
2603                                     expression: {
2604                                         type: 'AssignmentExpression',
2605                                         operator: '=',
2606                                         left: {
2607                                             type: 'Identifier',
2608                                             name: 'm_null',
2609                                             range: [20, 26],
2610                                             loc: {
2611                                                 start: { line: 1, column: 20 },
2612                                                 end: { line: 1, column: 26 }
2613                                             }
2614                                         },
2615                                         right: {
2616                                             type: 'Identifier',
2617                                             name: 'w',
2618                                             range: [29, 30],
2619                                             loc: {
2620                                                 start: { line: 1, column: 29 },
2621                                                 end: { line: 1, column: 30 }
2622                                             }
2623                                         },
2624                                         range: [20, 30],
2625                                         loc: {
2626                                             start: { line: 1, column: 20 },
2627                                             end: { line: 1, column: 30 }
2628                                         }
2629                                     },
2630                                     range: [20, 31],
2631                                     loc: {
2632                                         start: { line: 1, column: 20 },
2633                                         end: { line: 1, column: 31 }
2634                                     }
2635                                 }],
2636                                 range: [18, 32],
2637                                 loc: {
2638                                     start: { line: 1, column: 18 },
2639                                     end: { line: 1, column: 32 }
2640                                 }
2641                             },
2642                             rest: null,
2643                             generator: false,
2644                             expression: false,
2645                             range: [18, 32],
2646                             loc: {
2647                                 start: { line: 1, column: 18 },
2648                                 end: { line: 1, column: 32 }
2649                             }
2650                         },
2651                         kind: 'set',
2652                         range: [6, 32],
2653                         loc: {
2654                             start: { line: 1, column: 6 },
2655                             end: { line: 1, column: 32 }
2656                         }
2657                     }],
2658                     range: [4, 34],
2659                     loc: {
2660                         start: { line: 1, column: 4 },
2661                         end: { line: 1, column: 34 }
2662                     }
2663                 },
2664                 range: [0, 34],
2665                 loc: {
2666                     start: { line: 1, column: 0 },
2667                     end: { line: 1, column: 34 }
2668                 }
2669             },
2670             range: [0, 34],
2671             loc: {
2672                 start: { line: 1, column: 0 },
2673                 end: { line: 1, column: 34 }
2674             }
2675         },
2676
2677         'x = { set "null"(w) { m_null = w } }': {
2678             type: 'ExpressionStatement',
2679             expression: {
2680                 type: 'AssignmentExpression',
2681                 operator: '=',
2682                 left: {
2683                     type: 'Identifier',
2684                     name: 'x',
2685                     range: [0, 1],
2686                     loc: {
2687                         start: { line: 1, column: 0 },
2688                         end: { line: 1, column: 1 }
2689                     }
2690                 },
2691                 right: {
2692                     type: 'ObjectExpression',
2693                     properties: [{
2694                         type: 'Property',
2695                         key: {
2696                             type: 'Literal',
2697                             value: 'null',
2698                             raw: '"null"',
2699                             range: [10, 16],
2700                             loc: {
2701                                 start: { line: 1, column: 10 },
2702                                 end: { line: 1, column: 16 }
2703                             }
2704                         },
2705                         value: {
2706                             type: 'FunctionExpression',
2707                             id: null,
2708                             params: [{
2709                                 type: 'Identifier',
2710                                 name: 'w',
2711                                 range: [17, 18],
2712                                 loc: {
2713                                     start: { line: 1, column: 17 },
2714                                     end: { line: 1, column: 18 }
2715                                 }
2716                             }],
2717                             defaults: [],
2718                             body: {
2719                                 type: 'BlockStatement',
2720                                 body: [{
2721                                     type: 'ExpressionStatement',
2722                                     expression: {
2723                                         type: 'AssignmentExpression',
2724                                         operator: '=',
2725                                         left: {
2726                                             type: 'Identifier',
2727                                             name: 'm_null',
2728                                             range: [22, 28],
2729                                             loc: {
2730                                                 start: { line: 1, column: 22 },
2731                                                 end: { line: 1, column: 28 }
2732                                             }
2733                                         },
2734                                         right: {
2735                                             type: 'Identifier',
2736                                             name: 'w',
2737                                             range: [31, 32],
2738                                             loc: {
2739                                                 start: { line: 1, column: 31 },
2740                                                 end: { line: 1, column: 32 }
2741                                             }
2742                                         },
2743                                         range: [22, 32],
2744                                         loc: {
2745                                             start: { line: 1, column: 22 },
2746                                             end: { line: 1, column: 32 }
2747                                         }
2748                                     },
2749                                     range: [22, 33],
2750                                     loc: {
2751                                         start: { line: 1, column: 22 },
2752                                         end: { line: 1, column: 33 }
2753                                     }
2754                                 }],
2755                                 range: [20, 34],
2756                                 loc: {
2757                                     start: { line: 1, column: 20 },
2758                                     end: { line: 1, column: 34 }
2759                                 }
2760                             },
2761                             rest: null,
2762                             generator: false,
2763                             expression: false,
2764                             range: [20, 34],
2765                             loc: {
2766                                 start: { line: 1, column: 20 },
2767                                 end: { line: 1, column: 34 }
2768                             }
2769                         },
2770                         kind: 'set',
2771                         range: [6, 34],
2772                         loc: {
2773                             start: { line: 1, column: 6 },
2774                             end: { line: 1, column: 34 }
2775                         }
2776                     }],
2777                     range: [4, 36],
2778                     loc: {
2779                         start: { line: 1, column: 4 },
2780                         end: { line: 1, column: 36 }
2781                     }
2782                 },
2783                 range: [0, 36],
2784                 loc: {
2785                     start: { line: 1, column: 0 },
2786                     end: { line: 1, column: 36 }
2787                 }
2788             },
2789             range: [0, 36],
2790             loc: {
2791                 start: { line: 1, column: 0 },
2792                 end: { line: 1, column: 36 }
2793             }
2794         },
2795
2796         'x = { set 10(w) { m_null = w } }': {
2797             type: 'ExpressionStatement',
2798             expression: {
2799                 type: 'AssignmentExpression',
2800                 operator: '=',
2801                 left: {
2802                     type: 'Identifier',
2803                     name: 'x',
2804                     range: [0, 1],
2805                     loc: {
2806                         start: { line: 1, column: 0 },
2807                         end: { line: 1, column: 1 }
2808                     }
2809                 },
2810                 right: {
2811                     type: 'ObjectExpression',
2812                     properties: [{
2813                         type: 'Property',
2814                         key: {
2815                             type: 'Literal',
2816                             value: 10,
2817                             raw: '10',
2818                             range: [10, 12],
2819                             loc: {
2820                                 start: { line: 1, column: 10 },
2821                                 end: { line: 1, column: 12 }
2822                             }
2823                         },
2824                         value: {
2825                             type: 'FunctionExpression',
2826                             id: null,
2827                             params: [{
2828                                 type: 'Identifier',
2829                                 name: 'w',
2830                                 range: [13, 14],
2831                                 loc: {
2832                                     start: { line: 1, column: 13 },
2833                                     end: { line: 1, column: 14 }
2834                                 }
2835                             }],
2836                             defaults: [],
2837                             body: {
2838                                 type: 'BlockStatement',
2839                                 body: [{
2840                                     type: 'ExpressionStatement',
2841                                     expression: {
2842                                         type: 'AssignmentExpression',
2843                                         operator: '=',
2844                                         left: {
2845                                             type: 'Identifier',
2846                                             name: 'm_null',
2847                                             range: [18, 24],
2848                                             loc: {
2849                                                 start: { line: 1, column: 18 },
2850                                                 end: { line: 1, column: 24 }
2851                                             }
2852                                         },
2853                                         right: {
2854                                             type: 'Identifier',
2855                                             name: 'w',
2856                                             range: [27, 28],
2857                                             loc: {
2858                                                 start: { line: 1, column: 27 },
2859                                                 end: { line: 1, column: 28 }
2860                                             }
2861                                         },
2862                                         range: [18, 28],
2863                                         loc: {
2864                                             start: { line: 1, column: 18 },
2865                                             end: { line: 1, column: 28 }
2866                                         }
2867                                     },
2868                                     range: [18, 29],
2869                                     loc: {
2870                                         start: { line: 1, column: 18 },
2871                                         end: { line: 1, column: 29 }
2872                                     }
2873                                 }],
2874                                 range: [16, 30],
2875                                 loc: {
2876                                     start: { line: 1, column: 16 },
2877                                     end: { line: 1, column: 30 }
2878                                 }
2879                             },
2880                             rest: null,
2881                             generator: false,
2882                             expression: false,
2883                             range: [16, 30],
2884                             loc: {
2885                                 start: { line: 1, column: 16 },
2886                                 end: { line: 1, column: 30 }
2887                             }
2888                         },
2889                         kind: 'set',
2890                         range: [6, 30],
2891                         loc: {
2892                             start: { line: 1, column: 6 },
2893                             end: { line: 1, column: 30 }
2894                         }
2895                     }],
2896                     range: [4, 32],
2897                     loc: {
2898                         start: { line: 1, column: 4 },
2899                         end: { line: 1, column: 32 }
2900                     }
2901                 },
2902                 range: [0, 32],
2903                 loc: {
2904                     start: { line: 1, column: 0 },
2905                     end: { line: 1, column: 32 }
2906                 }
2907             },
2908             range: [0, 32],
2909             loc: {
2910                 start: { line: 1, column: 0 },
2911                 end: { line: 1, column: 32 }
2912             }
2913         },
2914
2915         'x = { get: 42 }': {
2916             type: 'ExpressionStatement',
2917             expression: {
2918                 type: 'AssignmentExpression',
2919                 operator: '=',
2920                 left: {
2921                     type: 'Identifier',
2922                     name: 'x',
2923                     range: [0, 1],
2924                     loc: {
2925                         start: { line: 1, column: 0 },
2926                         end: { line: 1, column: 1 }
2927                     }
2928                 },
2929                 right: {
2930                     type: 'ObjectExpression',
2931                     properties: [{
2932                         type: 'Property',
2933                         key: {
2934                             type: 'Identifier',
2935                             name: 'get',
2936                             range: [6, 9],
2937                             loc: {
2938                                 start: { line: 1, column: 6 },
2939                                 end: { line: 1, column: 9 }
2940                             }
2941                         },
2942                         value: {
2943                             type: 'Literal',
2944                             value: 42,
2945                             raw: '42',
2946                             range: [11, 13],
2947                             loc: {
2948                                 start: { line: 1, column: 11 },
2949                                 end: { line: 1, column: 13 }
2950                             }
2951                         },
2952                         kind: 'init',
2953                         range: [6, 13],
2954                         loc: {
2955                             start: { line: 1, column: 6 },
2956                             end: { line: 1, column: 13 }
2957                         }
2958                     }],
2959                     range: [4, 15],
2960                     loc: {
2961                         start: { line: 1, column: 4 },
2962                         end: { line: 1, column: 15 }
2963                     }
2964                 },
2965                 range: [0, 15],
2966                 loc: {
2967                     start: { line: 1, column: 0 },
2968                     end: { line: 1, column: 15 }
2969                 }
2970             },
2971             range: [0, 15],
2972             loc: {
2973                 start: { line: 1, column: 0 },
2974                 end: { line: 1, column: 15 }
2975             }
2976         },
2977
2978         'x = { set: 43 }': {
2979             type: 'ExpressionStatement',
2980             expression: {
2981                 type: 'AssignmentExpression',
2982                 operator: '=',
2983                 left: {
2984                     type: 'Identifier',
2985                     name: 'x',
2986                     range: [0, 1],
2987                     loc: {
2988                         start: { line: 1, column: 0 },
2989                         end: { line: 1, column: 1 }
2990                     }
2991                 },
2992                 right: {
2993                     type: 'ObjectExpression',
2994                     properties: [{
2995                         type: 'Property',
2996                         key: {
2997                             type: 'Identifier',
2998                             name: 'set',
2999                             range: [6, 9],
3000                             loc: {
3001                                 start: { line: 1, column: 6 },
3002                                 end: { line: 1, column: 9 }
3003                             }
3004                         },
3005                         value: {
3006                             type: 'Literal',
3007                             value: 43,
3008                             raw: '43',
3009                             range: [11, 13],
3010                             loc: {
3011                                 start: { line: 1, column: 11 },
3012                                 end: { line: 1, column: 13 }
3013                             }
3014                         },
3015                         kind: 'init',
3016                         range: [6, 13],
3017                         loc: {
3018                             start: { line: 1, column: 6 },
3019                             end: { line: 1, column: 13 }
3020                         }
3021                     }],
3022                     range: [4, 15],
3023                     loc: {
3024                         start: { line: 1, column: 4 },
3025                         end: { line: 1, column: 15 }
3026                     }
3027                 },
3028                 range: [0, 15],
3029                 loc: {
3030                     start: { line: 1, column: 0 },
3031                     end: { line: 1, column: 15 }
3032                 }
3033             },
3034             range: [0, 15],
3035             loc: {
3036                 start: { line: 1, column: 0 },
3037                 end: { line: 1, column: 15 }
3038             }
3039         }
3040
3041     },
3042
3043     'Comments': {
3044
3045         '/* block comment */ 42': {
3046             type: 'ExpressionStatement',
3047             expression: {
3048                 type: 'Literal',
3049                 value: 42,
3050                 raw: '42',
3051                 range: [20, 22],
3052                 loc: {
3053                     start: { line: 1, column: 20 },
3054                     end: { line: 1, column: 22 }
3055                 }
3056             },
3057             range: [20, 22],
3058             loc: {
3059                 start: { line: 1, column: 20 },
3060                 end: { line: 1, column: 22 }
3061             }
3062         },
3063
3064         '42 /*The*/ /*Answer*/': {
3065             type: 'Program',
3066             body: [{
3067                 type: 'ExpressionStatement',
3068                 expression: {
3069                     type: 'Literal',
3070                     value: 42,
3071                     raw: '42',
3072                     range: [0, 2],
3073                     loc: {
3074                         start: { line: 1, column: 0 },
3075                         end: { line: 1, column: 2 }
3076                     }
3077                 },
3078                 range: [0, 21],
3079                 loc: {
3080                     start: { line: 1, column: 0 },
3081                     end: { line: 1, column: 21 }
3082                 }
3083             }],
3084             range: [0, 21],
3085             loc: {
3086                 start: { line: 1, column: 0 },
3087                 end: { line: 1, column: 21 }
3088             },
3089             comments: [{
3090                 type: 'Block',
3091                 value: 'The',
3092                 range: [3, 10],
3093                 loc: {
3094                     start: { line: 1, column: 3 },
3095                     end: { line: 1, column: 10 }
3096                 }
3097             }, {
3098                 type: 'Block',
3099                 value: 'Answer',
3100                 range: [11, 21],
3101                 loc: {
3102                     start: { line: 1, column: 11 },
3103                     end: { line: 1, column: 21 }
3104                 }
3105             }]
3106         },
3107
3108         '42 /*the*/ /*answer*/': {
3109             type: 'Program',
3110             body: [{
3111                 type: 'ExpressionStatement',
3112                 expression: {
3113                     type: 'Literal',
3114                     value: 42,
3115                     raw: '42',
3116                     range: [0, 2]
3117                 },
3118                 range: [0, 21]
3119             }],
3120             range: [0, 21],
3121             comments: [{
3122                 type: 'Block',
3123                 value: 'the',
3124                 range: [3, 10]
3125             }, {
3126                 type: 'Block',
3127                 value: 'answer',
3128                 range: [11, 21]
3129             }]
3130         },
3131
3132         '/* multiline\ncomment\nshould\nbe\nignored */ 42': {
3133             type: 'ExpressionStatement',
3134             expression: {
3135                 type: 'Literal',
3136                 value: 42,
3137                 raw: '42',
3138                 range: [42, 44],
3139                 loc: {
3140                     start: { line: 5, column: 11 },
3141                     end: { line: 5, column: 13 }
3142                 }
3143             },
3144             range: [42, 44],
3145             loc: {
3146                 start: { line: 5, column: 11 },
3147                 end: { line: 5, column: 13 }
3148             }
3149         },
3150
3151         '/*a\r\nb*/ 42': {
3152             type: 'Program',
3153             body: [{
3154                 type: 'ExpressionStatement',
3155                 expression: {
3156                     type: 'Literal',
3157                     value: 42,
3158                     raw: '42',
3159                     range: [9, 11],
3160                     loc: {
3161                         start: { line: 2, column: 4 },
3162                         end: { line: 2, column: 6 }
3163                     }
3164                 },
3165                 range: [9, 11],
3166                 loc: {
3167                     start: { line: 2, column: 4 },
3168                     end: { line: 2, column: 6 }
3169                 }
3170             }],
3171             range: [9, 11],
3172             loc: {
3173                 start: { line: 2, column: 4 },
3174                 end: { line: 2, column: 6 }
3175             },
3176             comments: [{
3177                 type: 'Block',
3178                 value: 'a\r\nb',
3179                 range: [0, 8],
3180                 loc: {
3181                     start: { line: 1, column: 0 },
3182                     end: { line: 2, column: 3 }
3183                 }
3184             }]
3185         },
3186
3187         '/*a\rb*/ 42': {
3188             type: 'Program',
3189             body: [{
3190                 type: 'ExpressionStatement',
3191                 expression: {
3192                     type: 'Literal',
3193                     value: 42,
3194                     raw: '42',
3195                     range: [8, 10],
3196                     loc: {
3197                         start: { line: 2, column: 4 },
3198                         end: { line: 2, column: 6 }
3199                     }
3200                 },
3201                 range: [8, 10],
3202                 loc: {
3203                     start: { line: 2, column: 4 },
3204                     end: { line: 2, column: 6 }
3205                 }
3206             }],
3207             range: [8, 10],
3208             loc: {
3209                 start: { line: 2, column: 4 },
3210                 end: { line: 2, column: 6 }
3211             },
3212             comments: [{
3213                 type: 'Block',
3214                 value: 'a\rb',
3215                 range: [0, 7],
3216                 loc: {
3217                     start: { line: 1, column: 0 },
3218                     end: { line: 2, column: 3 }
3219                 }
3220             }]
3221         },
3222
3223         '/*a\nb*/ 42': {
3224             type: 'Program',
3225             body: [{
3226                 type: 'ExpressionStatement',
3227                 expression: {
3228                     type: 'Literal',
3229                     value: 42,
3230                     raw: '42',
3231                     range: [8, 10],
3232                     loc: {
3233                         start: { line: 2, column: 4 },
3234                         end: { line: 2, column: 6 }
3235                     }
3236                 },
3237                 range: [8, 10],
3238                 loc: {
3239                     start: { line: 2, column: 4 },
3240                     end: { line: 2, column: 6 }
3241                 }
3242             }],
3243             range: [8, 10],
3244             loc: {
3245                 start: { line: 2, column: 4 },
3246                 end: { line: 2, column: 6 }
3247             },
3248             comments: [{
3249                 type: 'Block',
3250                 value: 'a\nb',
3251                 range: [0, 7],
3252                 loc: {
3253                     start: { line: 1, column: 0 },
3254                     end: { line: 2, column: 3 }
3255                 }
3256             }]
3257         },
3258
3259         '/*a\nc*/ 42': {
3260             type: 'Program',
3261             body: [{
3262                 type: 'ExpressionStatement',
3263                 expression: {
3264                     type: 'Literal',
3265                     value: 42,
3266                     raw: '42',
3267                     loc: {
3268                         start: { line: 2, column: 4 },
3269                         end: { line: 2, column: 6 }
3270                     }
3271                 },
3272                 loc: {
3273                     start: { line: 2, column: 4 },
3274                     end: { line: 2, column: 6 }
3275                 }
3276             }],
3277             loc: {
3278                 start: { line: 2, column: 4 },
3279                 end: { line: 2, column: 6 }
3280             },
3281             comments: [{
3282                 type: 'Block',
3283                 value: 'a\nc',
3284                 loc: {
3285                     start: { line: 1, column: 0 },
3286                     end: { line: 2, column: 3 }
3287                 }
3288             }]
3289         },
3290
3291         '// line comment\n42': {
3292             type: 'ExpressionStatement',
3293             expression: {
3294                 type: 'Literal',
3295                 value: 42,
3296                 raw: '42',
3297                 range: [16, 18],
3298                 loc: {
3299                     start: { line: 2, column: 0 },
3300                     end: { line: 2, column: 2 }
3301                 }
3302             },
3303             range: [16, 18],
3304             loc: {
3305                 start: { line: 2, column: 0 },
3306                 end: { line: 2, column: 2 }
3307             }
3308         },
3309
3310         '42 // line comment': {
3311             type: 'Program',
3312             body: [{
3313                 type: 'ExpressionStatement',
3314                 expression: {
3315                     type: 'Literal',
3316                     value: 42,
3317                     raw: '42',
3318                     range: [0, 2],
3319                     loc: {
3320                         start: { line: 1, column: 0 },
3321                         end: { line: 1, column: 2 }
3322                     }
3323                 },
3324                 range: [0, 18],
3325                 loc: {
3326                     start: { line: 1, column: 0 },
3327                     end: { line: 1, column: 18 }
3328                 }
3329             }],
3330             range: [0, 18],
3331             loc: {
3332                 start: { line: 1, column: 0 },
3333                 end: { line: 1, column: 18 }
3334             },
3335             comments: [{
3336                 type: 'Line',
3337                 value: ' line comment',
3338                 range: [3, 18],
3339                 loc: {
3340                     start: { line: 1, column: 3 },
3341                     end: { line: 1, column: 18 }
3342                 }
3343             }]
3344         },
3345
3346         '// Hello, world!\n42': {
3347             type: 'Program',
3348             body: [{
3349                 type: 'ExpressionStatement',
3350                 expression: {
3351                     type: 'Literal',
3352                     value: 42,
3353                     raw: '42',
3354                     range: [17, 19],
3355                     loc: {
3356                         start: { line: 2, column: 0 },
3357                         end: { line: 2, column: 2 }
3358                     }
3359                 },
3360                 range: [17, 19],
3361                 loc: {
3362                     start: { line: 2, column: 0 },
3363                     end: { line: 2, column: 2 }
3364                 }
3365             }],
3366             range: [17, 19],
3367             loc: {
3368                 start: { line: 2, column: 0 },
3369                 end: { line: 2, column: 2 }
3370             },
3371             comments: [{
3372                 type: 'Line',
3373                 value: ' Hello, world!',
3374                 range: [0, 16],
3375                 loc: {
3376                     start: { line: 1, column: 0 },
3377                     end: { line: 1, column: 16 }
3378                 }
3379             }]
3380         },
3381
3382         '// Hello, world!\n': {
3383             type: 'Program',
3384             body: [],
3385             range: [17, 17],
3386             loc: {
3387                 start: { line: 2, column: 0 },
3388                 end: { line: 2, column: 0 }
3389             },
3390             comments: [{
3391                 type: 'Line',
3392                 value: ' Hello, world!',
3393                 range: [0, 16],
3394                 loc: {
3395                     start: { line: 1, column: 0 },
3396                     end: { line: 1, column: 16 }
3397                 }
3398             }]
3399         },
3400
3401         '// Hallo, world!\n': {
3402             type: 'Program',
3403             body: [],
3404             loc: {
3405                 start: { line: 2, column: 0 },
3406                 end: { line: 2, column: 0 }
3407             },
3408             comments: [{
3409                 type: 'Line',
3410                 value: ' Hallo, world!',
3411                 loc: {
3412                     start: { line: 1, column: 0 },
3413                     end: { line: 1, column: 16 }
3414                 }
3415             }]
3416         },
3417
3418         '//\n42': {
3419             type: 'Program',
3420             body: [{
3421                 type: 'ExpressionStatement',
3422                 expression: {
3423                     type: 'Literal',
3424                     value: 42,
3425                     raw: '42',
3426                     range: [3, 5],
3427                     loc: {
3428                         start: { line: 2, column: 0 },
3429                         end: { line: 2, column: 2 }
3430                     }
3431                 },
3432                 range: [3, 5],
3433                 loc: {
3434                     start: { line: 2, column: 0 },
3435                     end: { line: 2, column: 2 }
3436                 }
3437             }],
3438             range: [3, 5],
3439             loc: {
3440                 start: { line: 2, column: 0 },
3441                 end: { line: 2, column: 2 }
3442             },
3443             comments: [{
3444                 type: 'Line',
3445                 value: '',
3446                 range: [0, 2],
3447                 loc: {
3448                     start: { line: 1, column: 0 },
3449                     end: { line: 1, column: 2 }
3450                 }
3451             }]
3452         },
3453
3454         '//': {
3455             type: 'Program',
3456             body: [],
3457             range: [2, 2],
3458             loc: {
3459                 start: { line: 1, column: 2 },
3460                 end: { line: 1, column: 2 }
3461             },
3462             comments: [{
3463                 type: 'Line',
3464                 value: '',
3465                 range: [0, 2],
3466                 loc: {
3467                     start: { line: 1, column: 0 },
3468                     end: { line: 1, column: 2 }
3469                 }
3470             }]
3471         },
3472
3473         '// ': {
3474             type: 'Program',
3475             body: [],
3476             range: [3, 3],
3477             comments: [{
3478                 type: 'Line',
3479                 value: ' ',
3480                 range: [0, 3]
3481             }]
3482         },
3483
3484         '/**/42': {
3485             type: 'Program',
3486             body: [{
3487                 type: 'ExpressionStatement',
3488                 expression: {
3489                     type: 'Literal',
3490                     value: 42,
3491                     raw: '42',
3492                     range: [4, 6],
3493                     loc: {
3494                         start: { line: 1, column: 4 },
3495                         end: { line: 1, column: 6 }
3496                     }
3497                 },
3498                 range: [4, 6],
3499                 loc: {
3500                     start: { line: 1, column: 4 },
3501                     end: { line: 1, column: 6 }
3502                 }
3503             }],
3504             range: [4, 6],
3505             loc: {
3506                 start: { line: 1, column: 4 },
3507                 end: { line: 1, column: 6 }
3508             },
3509             comments: [{
3510                 type: 'Block',
3511                 value: '',
3512                 range: [0, 4],
3513                 loc: {
3514                     start: { line: 1, column: 0 },
3515                     end: { line: 1, column: 4 }
3516                 }
3517             }]
3518         },
3519
3520         '// Hello, world!\n\n//   Another hello\n42': {
3521             type: 'Program',
3522             body: [{
3523                 type: 'ExpressionStatement',
3524                 expression: {
3525                     type: 'Literal',
3526                     value: 42,
3527                     raw: '42',
3528                     range: [37, 39],
3529                     loc: {
3530                         start: { line: 4, column: 0 },
3531                         end: { line: 4, column: 2 }
3532                     }
3533                 },
3534                 range: [37, 39],
3535                 loc: {
3536                     start: { line: 4, column: 0 },
3537                     end: { line: 4, column: 2 }
3538                 }
3539             }],
3540             range: [37, 39],
3541             loc: {
3542                 start: { line: 4, column: 0 },
3543                 end: { line: 4, column: 2 }
3544             },
3545             comments: [{
3546                 type: 'Line',
3547                 value: ' Hello, world!',
3548                 range: [0, 16],
3549                 loc: {
3550                     start: { line: 1, column: 0 },
3551                     end: { line: 1, column: 16 }
3552                 }
3553             }, {
3554                 type: 'Line',
3555                 value: '   Another hello',
3556                 range: [18, 36],
3557                 loc: {
3558                     start: { line: 3, column: 0 },
3559                     end: { line: 3, column: 18 }
3560                 }
3561             }]
3562         },
3563
3564         'if (x) { // Some comment\ndoThat(); }': {
3565             type: 'Program',
3566             body: [{
3567                 type: 'IfStatement',
3568                 test: {
3569                     type: 'Identifier',
3570                     name: 'x',
3571                     range: [4, 5],
3572                     loc: {
3573                         start: { line: 1, column: 4 },
3574                         end: { line: 1, column: 5 }
3575                     }
3576                 },
3577                 consequent: {
3578                     type: 'BlockStatement',
3579                     body: [{
3580                         type: 'ExpressionStatement',
3581                         expression: {
3582                             type: 'CallExpression',
3583                             callee: {
3584                                 type: 'Identifier',
3585                                 name: 'doThat',
3586                                 range: [25, 31],
3587                                 loc: {
3588                                     start: { line: 2, column: 0 },
3589                                     end: { line: 2, column: 6 }
3590                                 }
3591                             },
3592                             'arguments': [],
3593                             range: [25, 33],
3594                             loc: {
3595                                 start: { line: 2, column: 0 },
3596                                 end: { line: 2, column: 8 }
3597                             }
3598                         },
3599                         range: [25, 34],
3600                         loc: {
3601                             start: { line: 2, column: 0 },
3602                             end: { line: 2, column: 9 }
3603                         }
3604                     }],
3605                     range: [7, 36],
3606                     loc: {
3607                         start: { line: 1, column: 7 },
3608                         end: { line: 2, column: 11 }
3609                     }
3610                 },
3611                 alternate: null,
3612                 range: [0, 36],
3613                 loc: {
3614                     start: { line: 1, column: 0 },
3615                     end: { line: 2, column: 11 }
3616                 }
3617             }],
3618             range: [0, 36],
3619             loc: {
3620                 start: { line: 1, column: 0 },
3621                 end: { line: 2, column: 11 }
3622             },
3623             comments: [{
3624                 type: 'Line',
3625                 value: ' Some comment',
3626                 range: [9, 24],
3627                 loc: {
3628                     start: { line: 1, column: 9 },
3629                     end: { line: 1, column: 24 }
3630                 }
3631             }]
3632         },
3633
3634         'switch (answer) { case 42: /* perfect */ bingo() }': {
3635             type: 'Program',
3636             body: [{
3637                 type: 'SwitchStatement',
3638                 discriminant: {
3639                     type: 'Identifier',
3640                     name: 'answer',
3641                     range: [8, 14],
3642                     loc: {
3643                         start: { line: 1, column: 8 },
3644                         end: { line: 1, column: 14 }
3645                     }
3646                 },
3647                 cases: [{
3648                     type: 'SwitchCase',
3649                     test: {
3650                         type: 'Literal',
3651                         value: 42,
3652                         raw: '42',
3653                         range: [23, 25],
3654                         loc: {
3655                             start: { line: 1, column: 23 },
3656                             end: { line: 1, column: 25 }
3657                         }
3658                     },
3659                     consequent: [{
3660                         type: 'ExpressionStatement',
3661                         expression: {
3662                             type: 'CallExpression',
3663                             callee: {
3664                                 type: 'Identifier',
3665                                 name: 'bingo',
3666                                 range: [41, 46],
3667                                 loc: {
3668                                     start: { line: 1, column: 41 },
3669                                     end: { line: 1, column: 46 }
3670                                 }
3671                             },
3672                             'arguments': [],
3673                             range: [41, 48],
3674                             loc: {
3675                                 start: { line: 1, column: 41 },
3676                                 end: { line: 1, column: 48 }
3677                             }
3678                         },
3679                         range: [41, 49],
3680                         loc: {
3681                             start: { line: 1, column: 41 },
3682                             end: { line: 1, column: 49 }
3683                         }
3684                     }],
3685                     range: [18, 49],
3686                     loc: {
3687                         start: { line: 1, column: 18 },
3688                         end: { line: 1, column: 49 }
3689                     }
3690                 }],
3691                 range: [0, 50],
3692                 loc: {
3693                     start: { line: 1, column: 0 },
3694                     end: { line: 1, column: 50 }
3695                 }
3696             }],
3697             range: [0, 50],
3698             loc: {
3699                 start: { line: 1, column: 0 },
3700                 end: { line: 1, column: 50 }
3701             },
3702             comments: [{
3703                 type: 'Block',
3704                 value: ' perfect ',
3705                 range: [27, 40],
3706                 loc: {
3707                     start: { line: 1, column: 27 },
3708                     end: { line: 1, column: 40 }
3709                 }
3710             }]
3711         }
3712
3713     },
3714
3715     'Numeric Literals': {
3716
3717         '0': {
3718             type: 'ExpressionStatement',
3719             expression: {
3720                 type: 'Literal',
3721                 value: 0,
3722                 raw: '0',
3723                 range: [0, 1],
3724                 loc: {
3725                     start: { line: 1, column: 0 },
3726                     end: { line: 1, column: 1 }
3727                 }
3728             },
3729             range: [0, 1],
3730             loc: {
3731                 start: { line: 1, column: 0 },
3732                 end: { line: 1, column: 1 }
3733             }
3734         },
3735
3736         '42': {
3737             type: 'ExpressionStatement',
3738             expression: {
3739                 type: 'Literal',
3740                 value: 42,
3741                 raw: '42',
3742                 range: [0, 2],
3743                 loc: {
3744                     start: { line: 1, column: 0 },
3745                     end: { line: 1, column: 2 }
3746                 }
3747             },
3748             range: [0, 2],
3749             loc: {
3750                 start: { line: 1, column: 0 },
3751                 end: { line: 1, column: 2 }
3752             }
3753         },
3754
3755         '3': {
3756             type: 'Program',
3757             body: [{
3758                 type: 'ExpressionStatement',
3759                 expression: {
3760                     type: 'Literal',
3761                     value: 3,
3762                     raw: '3',
3763                     range: [0, 1]
3764                 },
3765                 range: [0, 1]
3766             }],
3767             range: [0, 1],
3768             tokens: [{
3769                 type: 'Numeric',
3770                 value: '3',
3771                 range: [0, 1]
3772             }]
3773         },
3774
3775         '5': {
3776             type: 'Program',
3777             body: [{
3778                 type: 'ExpressionStatement',
3779                 expression: {
3780                     type: 'Literal',
3781                     value: 5,
3782                     raw: '5',
3783                     loc: {
3784                         start: { line: 1, column: 0 },
3785                         end: { line: 1, column: 1 }
3786                     }
3787                 },
3788                 loc: {
3789                     start: { line: 1, column: 0 },
3790                     end: { line: 1, column: 1 }
3791                 }
3792             }],
3793             loc: {
3794                 start: { line: 1, column: 0 },
3795                 end: { line: 1, column: 1 }
3796             },
3797             tokens: [{
3798                 type: 'Numeric',
3799                 value: '5',
3800                 loc: {
3801                     start: { line: 1, column: 0 },
3802                     end: { line: 1, column: 1 }
3803                 }
3804             }]
3805         },
3806
3807         '.14': {
3808             type: 'ExpressionStatement',
3809             expression: {
3810                 type: 'Literal',
3811                 value: 0.14,
3812                 raw: '.14',
3813                 range: [0, 3],
3814                 loc: {
3815                     start: { line: 1, column: 0 },
3816                     end: { line: 1, column: 3 }
3817                 }
3818             },
3819             range: [0, 3],
3820             loc: {
3821                 start: { line: 1, column: 0 },
3822                 end: { line: 1, column: 3 }
3823             }
3824         },
3825
3826         '3.14159': {
3827             type: 'ExpressionStatement',
3828             expression: {
3829                 type: 'Literal',
3830                 value: 3.14159,
3831                 raw: '3.14159',
3832                 range: [0, 7],
3833                 loc: {
3834                     start: { line: 1, column: 0 },
3835                     end: { line: 1, column: 7 }
3836                 }
3837             },
3838             range: [0, 7],
3839             loc: {
3840                 start: { line: 1, column: 0 },
3841                 end: { line: 1, column: 7 }
3842             }
3843         },
3844
3845         '6.02214179e+23': {
3846             type: 'ExpressionStatement',
3847             expression: {
3848                 type: 'Literal',
3849                 value: 6.02214179e+23,
3850                 raw: '6.02214179e+23',
3851                 range: [0, 14],
3852                 loc: {
3853                     start: { line: 1, column: 0 },
3854                     end: { line: 1, column: 14 }
3855                 }
3856             },
3857             range: [0, 14],
3858             loc: {
3859                 start: { line: 1, column: 0 },
3860                 end: { line: 1, column: 14 }
3861             }
3862         },
3863
3864         '1.492417830e-10': {
3865             type: 'ExpressionStatement',
3866             expression: {
3867                 type: 'Literal',
3868                 value: 1.49241783e-10,
3869                 raw: '1.492417830e-10',
3870                 range: [0, 15],
3871                 loc: {
3872                     start: { line: 1, column: 0 },
3873                     end: { line: 1, column: 15 }
3874                 }
3875             },
3876             range: [0, 15],
3877             loc: {
3878                 start: { line: 1, column: 0 },
3879                 end: { line: 1, column: 15 }
3880             }
3881         },
3882
3883         '0x0': {
3884             type: 'ExpressionStatement',
3885             expression: {
3886                 type: 'Literal',
3887                 value: 0,
3888                 raw: '0x0',
3889                 range: [0, 3],
3890                 loc: {
3891                     start: { line: 1, column: 0 },
3892                     end: { line: 1, column: 3 }
3893                 }
3894             },
3895             range: [0, 3],
3896             loc: {
3897                 start: { line: 1, column: 0 },
3898                 end: { line: 1, column: 3 }
3899             }
3900         },
3901
3902         '0e+100': {
3903             type: 'ExpressionStatement',
3904             expression: {
3905                 type: 'Literal',
3906                 value: 0,
3907                 raw: '0e+100',
3908                 range: [0, 6],
3909                 loc: {
3910                     start: { line: 1, column: 0 },
3911                     end: { line: 1, column: 6 }
3912                 }
3913             },
3914             range: [0, 6],
3915             loc: {
3916                 start: { line: 1, column: 0 },
3917                 end: { line: 1, column: 6 }
3918             }
3919         },
3920
3921         '0xabc': {
3922             type: 'ExpressionStatement',
3923             expression: {
3924                 type: 'Literal',
3925                 value: 0xabc,
3926                 raw: '0xabc',
3927                 range: [0, 5],
3928                 loc: {
3929                     start: { line: 1, column: 0 },
3930                     end: { line: 1, column: 5 }
3931                 }
3932             },
3933             range: [0, 5],
3934             loc: {
3935                 start: { line: 1, column: 0 },
3936                 end: { line: 1, column: 5 }
3937             }
3938         },
3939
3940         '0xdef': {
3941             type: 'ExpressionStatement',
3942             expression: {
3943                 type: 'Literal',
3944                 value: 0xdef,
3945                 raw: '0xdef',
3946                 range: [0, 5],
3947                 loc: {
3948                     start: { line: 1, column: 0 },
3949                     end: { line: 1, column: 5 }
3950                 }
3951             },
3952             range: [0, 5],
3953             loc: {
3954                 start: { line: 1, column: 0 },
3955                 end: { line: 1, column: 5 }
3956             }
3957         },
3958
3959         '0X1A': {
3960             type: 'ExpressionStatement',
3961             expression: {
3962                 type: 'Literal',
3963                 value: 0x1A,
3964                 raw: '0X1A',
3965                 range: [0, 4],
3966                 loc: {
3967                     start: { line: 1, column: 0 },
3968                     end: { line: 1, column: 4 }
3969                 }
3970             },
3971             range: [0, 4],
3972             loc: {
3973                 start: { line: 1, column: 0 },
3974                 end: { line: 1, column: 4 }
3975             }
3976         },
3977
3978         '0x10': {
3979             type: 'ExpressionStatement',
3980             expression: {
3981                 type: 'Literal',
3982                 value: 0x10,
3983                 raw: '0x10',
3984                 range: [0, 4],
3985                 loc: {
3986                     start: { line: 1, column: 0 },
3987                     end: { line: 1, column: 4 }
3988                 }
3989             },
3990             range: [0, 4],
3991             loc: {
3992                 start: { line: 1, column: 0 },
3993                 end: { line: 1, column: 4 }
3994             }
3995         },
3996
3997         '0x100': {
3998             type: 'ExpressionStatement',
3999             expression: {
4000                 type: 'Literal',
4001                 value: 0x100,
4002                 raw: '0x100',
4003                 range: [0, 5],
4004                 loc: {
4005                     start: { line: 1, column: 0 },
4006                     end: { line: 1, column: 5 }
4007                 }
4008             },
4009             range: [0, 5],
4010             loc: {
4011                 start: { line: 1, column: 0 },
4012                 end: { line: 1, column: 5 }
4013             }
4014         },
4015
4016         '0X04': {
4017             type: 'ExpressionStatement',
4018             expression: {
4019                 type: 'Literal',
4020                 value: 0X04,
4021                 raw: '0X04',
4022                 range: [0, 4],
4023                 loc: {
4024                     start: { line: 1, column: 0 },
4025                     end: { line: 1, column: 4 }
4026                 }
4027             },
4028             range: [0, 4],
4029             loc: {
4030                 start: { line: 1, column: 0 },
4031                 end: { line: 1, column: 4 }
4032             }
4033         },
4034
4035         '02': {
4036             type: 'ExpressionStatement',
4037             expression: {
4038                 type: 'Literal',
4039                 value: 2,
4040                 raw: '02',
4041                 range: [0, 2],
4042                 loc: {
4043                     start: { line: 1, column: 0 },
4044                     end: { line: 1, column: 2 }
4045                 }
4046             },
4047             range: [0, 2],
4048             loc: {
4049                 start: { line: 1, column: 0 },
4050                 end: { line: 1, column: 2 }
4051             }
4052         },
4053
4054         '012': {
4055             type: 'ExpressionStatement',
4056             expression: {
4057                 type: 'Literal',
4058                 value: 10,
4059                 raw: '012',
4060                 range: [0, 3],
4061                 loc: {
4062                     start: { line: 1, column: 0 },
4063                     end: { line: 1, column: 3 }
4064                 }
4065             },
4066             range: [0, 3],
4067             loc: {
4068                 start: { line: 1, column: 0 },
4069                 end: { line: 1, column: 3 }
4070             }
4071         },
4072
4073         '0012': {
4074             type: 'ExpressionStatement',
4075             expression: {
4076                 type: 'Literal',
4077                 value: 10,
4078                 raw: '0012',
4079                 range: [0, 4],
4080                 loc: {
4081                     start: { line: 1, column: 0 },
4082                     end: { line: 1, column: 4 }
4083                 }
4084             },
4085             range: [0, 4],
4086             loc: {
4087                 start: { line: 1, column: 0 },
4088                 end: { line: 1, column: 4 }
4089             }
4090         }
4091
4092     },
4093
4094     'String Literals': {
4095
4096         '"Hello"': {
4097             type: 'ExpressionStatement',
4098             expression: {
4099                 type: 'Literal',
4100                 value: 'Hello',
4101                 raw: '"Hello"',
4102                 range: [0, 7],
4103                 loc: {
4104                     start: { line: 1, column: 0 },
4105                     end: { line: 1, column: 7 }
4106                 }
4107             },
4108             range: [0, 7],
4109             loc: {
4110                 start: { line: 1, column: 0 },
4111                 end: { line: 1, column: 7 }
4112             }
4113         },
4114
4115         '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': {
4116             type: 'ExpressionStatement',
4117             expression: {
4118                 type: 'Literal',
4119                 value: '\n\r\t\x0B\b\f\\\'"\x00',
4120                 raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"',
4121                 range: [0, 22],
4122                 loc: {
4123                     start: { line: 1, column: 0 },
4124                     end: { line: 1, column: 22 }
4125                 }
4126             },
4127             range: [0, 22],
4128             loc: {
4129                 start: { line: 1, column: 0 },
4130                 end: { line: 1, column: 22 }
4131             }
4132         },
4133
4134         '"\\u0061"': {
4135             type: 'ExpressionStatement',
4136             expression: {
4137                 type: 'Literal',
4138                 value: 'a',
4139                 raw: '"\\u0061"',
4140                 range: [0, 8],
4141                 loc: {
4142                     start: { line: 1, column: 0 },
4143                     end: { line: 1, column: 8 }
4144                 }
4145             },
4146             range: [0, 8],
4147             loc: {
4148                 start: { line: 1, column: 0 },
4149                 end: { line: 1, column: 8 }
4150             }
4151         },
4152
4153         '"\\x61"': {
4154             type: 'ExpressionStatement',
4155             expression: {
4156                 type: 'Literal',
4157                 value: 'a',
4158                 raw: '"\\x61"',
4159                 range: [0, 6],
4160                 loc: {
4161                     start: { line: 1, column: 0 },
4162                     end: { line: 1, column: 6 }
4163                 }
4164             },
4165             range: [0, 6],
4166             loc: {
4167                 start: { line: 1, column: 0 },
4168                 end: { line: 1, column: 6 }
4169             }
4170         },
4171
4172         '"\\u00"': {
4173             type: 'ExpressionStatement',
4174             expression: {
4175                 type: 'Literal',
4176                 value: 'u00',
4177                 raw: '"\\u00"',
4178                 range: [0, 6],
4179                 loc: {
4180                     start: { line: 1, column: 0 },
4181                     end: { line: 1, column: 6 }
4182                 }
4183             },
4184             range: [0, 6],
4185             loc: {
4186                 start: { line: 1, column: 0 },
4187                 end: { line: 1, column: 6 }
4188             }
4189         },
4190
4191         '"\\xt"': {
4192             type: 'ExpressionStatement',
4193             expression: {
4194                 type: 'Literal',
4195                 value: 'xt',
4196                 raw: '"\\xt"',
4197                 range: [0, 5],
4198                 loc: {
4199                     start: { line: 1, column: 0 },
4200                     end: { line: 1, column: 5 }
4201                 }
4202             },
4203             range: [0, 5],
4204             loc: {
4205                 start: { line: 1, column: 0 },
4206                 end: { line: 1, column: 5 }
4207             }
4208         },
4209
4210         '"Hello\\nworld"': {
4211             type: 'ExpressionStatement',
4212             expression: {
4213                 type: 'Literal',
4214                 value: 'Hello\nworld',
4215                 raw: '"Hello\\nworld"',
4216                 range: [0, 14],
4217                 loc: {
4218                     start: { line: 1, column: 0 },
4219                     end: { line: 1, column: 14 }
4220                 }
4221             },
4222             range: [0, 14],
4223             loc: {
4224                 start: { line: 1, column: 0 },
4225                 end: { line: 1, column: 14 }
4226             }
4227         },
4228
4229         '"Hello\\\nworld"': {
4230             type: 'ExpressionStatement',
4231             expression: {
4232                 type: 'Literal',
4233                 value: 'Helloworld',
4234                 raw: '"Hello\\\nworld"',
4235                 range: [0, 14],
4236                 loc: {
4237                     start: { line: 1, column: 0 },
4238                     end: { line: 2, column: 14 }
4239                 }
4240             },
4241             range: [0, 14],
4242             loc: {
4243                 start: { line: 1, column: 0 },
4244                 end: { line: 2, column: 14 }
4245             }
4246         },
4247
4248         '"Hello\\02World"': {
4249             type: 'ExpressionStatement',
4250             expression: {
4251                 type: 'Literal',
4252                 value: 'Hello\u0002World',
4253                 raw: '"Hello\\02World"',
4254                 range: [0, 15],
4255                 loc: {
4256                     start: { line: 1, column: 0 },
4257                     end: { line: 1, column: 15 }
4258                 }
4259             },
4260             range: [0, 15],
4261             loc: {
4262                 start: { line: 1, column: 0 },
4263                 end: { line: 1, column: 15 }
4264             }
4265         },
4266
4267         '"Hello\\012World"': {
4268             type: 'ExpressionStatement',
4269             expression: {
4270                 type: 'Literal',
4271                 value: 'Hello\u000AWorld',
4272                 raw: '"Hello\\012World"',
4273                 range: [0, 16],
4274                 loc: {
4275                     start: { line: 1, column: 0 },
4276                     end: { line: 1, column: 16 }
4277                 }
4278             },
4279             range: [0, 16],
4280             loc: {
4281                 start: { line: 1, column: 0 },
4282                 end: { line: 1, column: 16 }
4283             }
4284         },
4285
4286         '"Hello\\122World"': {
4287             type: 'ExpressionStatement',
4288             expression: {
4289                 type: 'Literal',
4290                 value: 'Hello\122World',
4291                 raw: '"Hello\\122World"',
4292                 range: [0, 16],
4293                 loc: {
4294                     start: { line: 1, column: 0 },
4295                     end: { line: 1, column: 16 }
4296                 }
4297             },
4298             range: [0, 16],
4299             loc: {
4300                 start: { line: 1, column: 0 },
4301                 end: { line: 1, column: 16 }
4302             }
4303         },
4304
4305         '"Hello\\0122World"': {
4306             type: 'ExpressionStatement',
4307             expression: {
4308                 type: 'Literal',
4309                 value: 'Hello\u000A2World',
4310                 raw: '"Hello\\0122World"',
4311                 range: [0, 17],
4312                 loc: {
4313                     start: { line: 1, column: 0 },
4314                     end: { line: 1, column: 17 }
4315                 }
4316             },
4317             range: [0, 17],
4318             loc: {
4319                 start: { line: 1, column: 0 },
4320                 end: { line: 1, column: 17 }
4321             }
4322         },
4323
4324         '"Hello\\312World"': {
4325             type: 'ExpressionStatement',
4326             expression: {
4327                 type: 'Literal',
4328                 value: 'Hello\u00CAWorld',
4329                 raw: '"Hello\\312World"',
4330                 range: [0, 16],
4331                 loc: {
4332                     start: { line: 1, column: 0 },
4333                     end: { line: 1, column: 16 }
4334                 }
4335             },
4336             range: [0, 16],
4337             loc: {
4338                 start: { line: 1, column: 0 },
4339                 end: { line: 1, column: 16 }
4340             }
4341         },
4342
4343         '"Hello\\412World"': {
4344             type: 'ExpressionStatement',
4345             expression: {
4346                 type: 'Literal',
4347                 value: 'Hello\412World',
4348                 raw: '"Hello\\412World"',
4349                 range: [0, 16],
4350                 loc: {
4351                     start: { line: 1, column: 0 },
4352                     end: { line: 1, column: 16 }
4353                 }
4354             },
4355             range: [0, 16],
4356             loc: {
4357                 start: { line: 1, column: 0 },
4358                 end: { line: 1, column: 16 }
4359             }
4360         },
4361
4362         '"Hello\\812World"': {
4363             type: 'ExpressionStatement',
4364             expression: {
4365                 type: 'Literal',
4366                 value: 'Hello812World',
4367                 raw: '"Hello\\812World"',
4368                 range: [0, 16],
4369                 loc: {
4370                     start: { line: 1, column: 0 },
4371                     end: { line: 1, column: 16 }
4372                 }
4373             },
4374             range: [0, 16],
4375             loc: {
4376                 start: { line: 1, column: 0 },
4377                 end: { line: 1, column: 16 }
4378             }
4379         },
4380
4381         '"Hello\\712World"': {
4382             type: 'ExpressionStatement',
4383             expression: {
4384                 type: 'Literal',
4385                 value: 'Hello\712World',
4386                 raw: '"Hello\\712World"',
4387                 range: [0, 16],
4388                 loc: {
4389                     start: { line: 1, column: 0 },
4390                     end: { line: 1, column: 16 }
4391                 }
4392             },
4393             range: [0, 16],
4394             loc: {
4395                 start: { line: 1, column: 0 },
4396                 end: { line: 1, column: 16 }
4397             }
4398         },
4399
4400         '"Hello\\0World"': {
4401             type: 'ExpressionStatement',
4402             expression: {
4403                 type: 'Literal',
4404                 value: 'Hello\u0000World',
4405                 raw: '"Hello\\0World"',
4406                 range: [0, 14],
4407                 loc: {
4408                     start: { line: 1, column: 0 },
4409                     end: { line: 1, column: 14 }
4410                 }
4411             },
4412             range: [0, 14],
4413             loc: {
4414                 start: { line: 1, column: 0 },
4415                 end: { line: 1, column: 14 }
4416             }
4417         },
4418
4419         '"Hello\\\r\nworld"': {
4420             type: 'ExpressionStatement',
4421             expression: {
4422                 type: 'Literal',
4423                 value: 'Helloworld',
4424                 raw: '"Hello\\\r\nworld"',
4425                 range: [0, 15],
4426                 loc: {
4427                     start: { line: 1, column: 0 },
4428                     end: { line: 2, column: 15 }
4429                 }
4430             },
4431             range: [0, 15],
4432             loc: {
4433                 start: { line: 1, column: 0 },
4434                 end: { line: 2, column: 15 }
4435             }
4436         },
4437
4438         '"Hello\\1World"': {
4439             type: 'ExpressionStatement',
4440             expression: {
4441                 type: 'Literal',
4442                 value: 'Hello\u0001World',
4443                 raw: '"Hello\\1World"',
4444                 range: [0, 14],
4445                 loc: {
4446                     start: { line: 1, column: 0 },
4447                     end: { line: 1, column: 14 }
4448                 }
4449             },
4450             range: [0, 14],
4451             loc: {
4452                 start: { line: 1, column: 0 },
4453                 end: { line: 1, column: 14 }
4454             }
4455         }
4456     },
4457
4458     'Regular Expression Literals': {
4459
4460         'var x = /[a-z]/i': {
4461             type: 'Program',
4462             body: [{
4463                 type: 'VariableDeclaration',
4464                 declarations: [{
4465                     type: 'VariableDeclarator',
4466                     id: {
4467                         type: 'Identifier',
4468                         name: 'x',
4469                         range: [4, 5],
4470                         loc: {
4471                             start: { line: 1, column: 4 },
4472                             end: { line: 1, column: 5 }
4473                         }
4474                     },
4475                     init: {
4476                         type: 'Literal',
4477                         value: '/[a-z]/i',
4478                         raw: '/[a-z]/i',
4479                         range: [8, 16],
4480                         loc: {
4481                             start: { line: 1, column: 8 },
4482                             end: { line: 1, column: 16 }
4483                         }
4484                     },
4485                     range: [4, 16],
4486                     loc: {
4487                         start: { line: 1, column: 4 },
4488                         end: { line: 1, column: 16 }
4489                     }
4490                 }],
4491                 kind: 'var',
4492                 range: [0, 16],
4493                 loc: {
4494                     start: { line: 1, column: 0 },
4495                     end: { line: 1, column: 16 }
4496                 }
4497             }],
4498             range: [0, 16],
4499             loc: {
4500                 start: { line: 1, column: 0 },
4501                 end: { line: 1, column: 16 }
4502             },
4503             tokens: [{
4504                 type: 'Keyword',
4505                 value: 'var',
4506                 range: [0, 3],
4507                 loc: {
4508                     start: { line: 1, column: 0 },
4509                     end: { line: 1, column: 3 }
4510                 }
4511             }, {
4512                 type: 'Identifier',
4513                 value: 'x',
4514                 range: [4, 5],
4515                 loc: {
4516                     start: { line: 1, column: 4 },
4517                     end: { line: 1, column: 5 }
4518                 }
4519             }, {
4520                 type: 'Punctuator',
4521                 value: '=',
4522                 range: [6, 7],
4523                 loc: {
4524                     start: { line: 1, column: 6 },
4525                     end: { line: 1, column: 7 }
4526                 }
4527             }, {
4528                 type: 'RegularExpression',
4529                 value: '/[a-z]/i',
4530                 range: [8, 16],
4531                 loc: {
4532                     start: { line: 1, column: 8 },
4533                     end: { line: 1, column: 16 }
4534                 }
4535             }]
4536         },
4537
4538         'var x = /[x-z]/i': {
4539             type: 'Program',
4540             body: [{
4541                 type: 'VariableDeclaration',
4542                 declarations: [{
4543                     type: 'VariableDeclarator',
4544                     id: {
4545                         type: 'Identifier',
4546                         name: 'x',
4547                         range: [4, 5]
4548                     },
4549                     init: {
4550                         type: 'Literal',
4551                         value: '/[x-z]/i',
4552                         raw: '/[x-z]/i',
4553                         range: [8, 16]
4554                     },
4555                     range: [4, 16]
4556                 }],
4557                 kind: 'var',
4558                 range: [0, 16]
4559             }],
4560             range: [0, 16],
4561             tokens: [{
4562                 type: 'Keyword',
4563                 value: 'var',
4564                 range: [0, 3]
4565             }, {
4566                 type: 'Identifier',
4567                 value: 'x',
4568                 range: [4, 5]
4569             }, {
4570                 type: 'Punctuator',
4571                 value: '=',
4572                 range: [6, 7]
4573             }, {
4574                 type: 'RegularExpression',
4575                 value: '/[x-z]/i',
4576                 range: [8, 16]
4577             }]
4578         },
4579
4580         'var x = /[a-c]/i': {
4581             type: 'Program',
4582             body: [{
4583                 type: 'VariableDeclaration',
4584                 declarations: [{
4585                     type: 'VariableDeclarator',
4586                     id: {
4587                         type: 'Identifier',
4588                         name: 'x',
4589                         loc: {
4590                             start: { line: 1, column: 4 },
4591                             end: { line: 1, column: 5 }
4592                         }
4593                     },
4594                     init: {
4595                         type: 'Literal',
4596                         value: '/[a-c]/i',
4597                         raw: '/[a-c]/i',
4598                         loc: {
4599                             start: { line: 1, column: 8 },
4600                             end: { line: 1, column: 16 }
4601                         }
4602                     },
4603                     loc: {
4604                         start: { line: 1, column: 4 },
4605                         end: { line: 1, column: 16 }
4606                     }
4607                 }],
4608                 kind: 'var',
4609                 loc: {
4610                     start: { line: 1, column: 0 },
4611                     end: { line: 1, column: 16 }
4612                 }
4613             }],
4614             loc: {
4615                 start: { line: 1, column: 0 },
4616                 end: { line: 1, column: 16 }
4617             },
4618             tokens: [{
4619                 type: 'Keyword',
4620                 value: 'var',
4621                 loc: {
4622                     start: { line: 1, column: 0 },
4623                     end: { line: 1, column: 3 }
4624                 }
4625             }, {
4626                 type: 'Identifier',
4627                 value: 'x',
4628                 loc: {
4629                     start: { line: 1, column: 4 },
4630                     end: { line: 1, column: 5 }
4631                 }
4632             }, {
4633                 type: 'Punctuator',
4634                 value: '=',
4635                 loc: {
4636                     start: { line: 1, column: 6 },
4637                     end: { line: 1, column: 7 }
4638                 }
4639             }, {
4640                 type: 'RegularExpression',
4641                 value: '/[a-c]/i',
4642                 loc: {
4643                     start: { line: 1, column: 8 },
4644                     end: { line: 1, column: 16 }
4645                 }
4646             }]
4647         },
4648
4649         'var x = /[P QR]/i': {
4650             type: 'Program',
4651             body: [{
4652                 type: 'VariableDeclaration',
4653                 declarations: [{
4654                     type: 'VariableDeclarator',
4655                     id: {
4656                         type: 'Identifier',
4657                         name: 'x',
4658                         range: [4, 5],
4659                         loc: {
4660                             start: { line: 1, column: 4 },
4661                             end: { line: 1, column: 5 }
4662                         }
4663                     },
4664                     init: {
4665                         type: 'Literal',
4666                         value: '/[P QR]/i',
4667                         raw: '/[P QR]/i',
4668                         range: [8, 17],
4669                         loc: {
4670                             start: { line: 1, column: 8 },
4671                             end: { line: 1, column: 17 }
4672                         }
4673                     },
4674                     range: [4, 17],
4675                     loc: {
4676                         start: { line: 1, column: 4 },
4677                         end: { line: 1, column: 17 }
4678                     }
4679                 }],
4680                 kind: 'var',
4681                 range: [0, 17],
4682                 loc: {
4683                     start: { line: 1, column: 0 },
4684                     end: { line: 1, column: 17 }
4685                 }
4686             }],
4687             range: [0, 17],
4688             loc: {
4689                 start: { line: 1, column: 0 },
4690                 end: { line: 1, column: 17 }
4691             },
4692             tokens: [{
4693                 type: 'Keyword',
4694                 value: 'var',
4695                 range: [0, 3],
4696                 loc: {
4697                     start: { line: 1, column: 0 },
4698                     end: { line: 1, column: 3 }
4699                 }
4700             }, {
4701                 type: 'Identifier',
4702                 value: 'x',
4703                 range: [4, 5],
4704                 loc: {
4705                     start: { line: 1, column: 4 },
4706                     end: { line: 1, column: 5 }
4707                 }
4708             }, {
4709                 type: 'Punctuator',
4710                 value: '=',
4711                 range: [6, 7],
4712                 loc: {
4713                     start: { line: 1, column: 6 },
4714                     end: { line: 1, column: 7 }
4715                 }
4716             }, {
4717                 type: 'RegularExpression',
4718                 value: '/[P QR]/i',
4719                 range: [8, 17],
4720                 loc: {
4721                     start: { line: 1, column: 8 },
4722                     end: { line: 1, column: 17 }
4723                 }
4724             }]
4725         },
4726
4727         'var x = /[\\]/]/': {
4728             type: 'Program',
4729             body: [{
4730                 type: 'VariableDeclaration',
4731                 declarations: [{
4732                     type: 'VariableDeclarator',
4733                     id: {
4734                         type: 'Identifier',
4735                         name: 'x',
4736                         range: [4, 5],
4737                         loc: {
4738                             start: { line: 1, column: 4 },
4739                             end: { line: 1, column: 5 }
4740                         }
4741                     },
4742                     init: {
4743                         type: 'Literal',
4744                         value: new RegExp('[\\]/]').toString(),
4745                         raw: '/[\\]/]/',
4746                         range: [8, 15],
4747                         loc: {
4748                             start: { line: 1, column: 8 },
4749                             end: { line: 1, column: 15 }
4750                         }
4751                     },
4752                     range: [4, 15],
4753                     loc: {
4754                         start: { line: 1, column: 4 },
4755                         end: { line: 1, column: 15 }
4756                     }
4757                 }],
4758                 kind: 'var',
4759                 range: [0, 15],
4760                 loc: {
4761                     start: { line: 1, column: 0 },
4762                     end: { line: 1, column: 15 }
4763                 }
4764             }],
4765             range: [0, 15],
4766             loc: {
4767                 start: { line: 1, column: 0 },
4768                 end: { line: 1, column: 15 }
4769             },
4770             tokens: [{
4771                 type: 'Keyword',
4772                 value: 'var',
4773                 range: [0, 3],
4774                 loc: {
4775                     start: { line: 1, column: 0 },
4776                     end: { line: 1, column: 3 }
4777                 }
4778             }, {
4779                 type: 'Identifier',
4780                 value: 'x',
4781                 range: [4, 5],
4782                 loc: {
4783                     start: { line: 1, column: 4 },
4784                     end: { line: 1, column: 5 }
4785                 }
4786             }, {
4787                 type: 'Punctuator',
4788                 value: '=',
4789                 range: [6, 7],
4790                 loc: {
4791                     start: { line: 1, column: 6 },
4792                     end: { line: 1, column: 7 }
4793                 }
4794             }, {
4795                 type: 'RegularExpression',
4796                 value: '/[\\]/]/',
4797                 range: [8, 15],
4798                 loc: {
4799                     start: { line: 1, column: 8 },
4800                     end: { line: 1, column: 15 }
4801                 }
4802             }]
4803         },
4804
4805         'var x = /foo\\/bar/': {
4806             type: 'Program',
4807             body: [{
4808                 type: 'VariableDeclaration',
4809                 declarations: [{
4810                     type: 'VariableDeclarator',
4811                     id: {
4812                         type: 'Identifier',
4813                         name: 'x',
4814                         range: [4, 5],
4815                         loc: {
4816                             start: { line: 1, column: 4 },
4817                             end: { line: 1, column: 5 }
4818                         }
4819                     },
4820                     init: {
4821                         type: 'Literal',
4822                         value: '/foo\\/bar/',
4823                         raw: '/foo\\/bar/',
4824                         range: [8, 18],
4825                         loc: {
4826                             start: { line: 1, column: 8 },
4827                             end: { line: 1, column: 18 }
4828                         }
4829                     },
4830                     range: [4, 18],
4831                     loc: {
4832                         start: { line: 1, column: 4 },
4833                         end: { line: 1, column: 18 }
4834                     }
4835                 }],
4836                 kind: 'var',
4837                 range: [0, 18],
4838                 loc: {
4839                     start: { line: 1, column: 0 },
4840                     end: { line: 1, column: 18 }
4841                 }
4842             }],
4843             range: [0, 18],
4844             loc: {
4845                 start: { line: 1, column: 0 },
4846                 end: { line: 1, column: 18 }
4847             },
4848             tokens: [{
4849                 type: 'Keyword',
4850                 value: 'var',
4851                 range: [0, 3],
4852                 loc: {
4853                     start: { line: 1, column: 0 },
4854                     end: { line: 1, column: 3 }
4855                 }
4856             }, {
4857                 type: 'Identifier',
4858                 value: 'x',
4859                 range: [4, 5],
4860                 loc: {
4861                     start: { line: 1, column: 4 },
4862                     end: { line: 1, column: 5 }
4863                 }
4864             }, {
4865                 type: 'Punctuator',
4866                 value: '=',
4867                 range: [6, 7],
4868                 loc: {
4869                     start: { line: 1, column: 6 },
4870                     end: { line: 1, column: 7 }
4871                 }
4872             }, {
4873                 type: 'RegularExpression',
4874                 value: '/foo\\/bar/',
4875                 range: [8, 18],
4876                 loc: {
4877                     start: { line: 1, column: 8 },
4878                     end: { line: 1, column: 18 }
4879                 }
4880             }]
4881         },
4882
4883         'var x = /=([^=\\s])+/g': {
4884             type: 'Program',
4885             body: [{
4886                 type: 'VariableDeclaration',
4887                 declarations: [{
4888                     type: 'VariableDeclarator',
4889                     id: {
4890                         type: 'Identifier',
4891                         name: 'x',
4892                         range: [4, 5],
4893                         loc: {
4894                             start: { line: 1, column: 4 },
4895                             end: { line: 1, column: 5 }
4896                         }
4897                     },
4898                     init: {
4899                         type: 'Literal',
4900                         value: '/=([^=\\s])+/g',
4901                         raw: '/=([^=\\s])+/g',
4902                         range: [8, 21],
4903                         loc: {
4904                             start: { line: 1, column: 8 },
4905                             end: { line: 1, column: 21 }
4906                         }
4907                     },
4908                     range: [4, 21],
4909                     loc: {
4910                         start: { line: 1, column: 4 },
4911                         end: { line: 1, column: 21 }
4912                     }
4913                 }],
4914                 kind: 'var',
4915                 range: [0, 21],
4916                 loc: {
4917                     start: { line: 1, column: 0 },
4918                     end: { line: 1, column: 21 }
4919                 }
4920             }],
4921             range: [0, 21],
4922             loc: {
4923                 start: { line: 1, column: 0 },
4924                 end: { line: 1, column: 21 }
4925             },
4926             tokens: [{
4927                 type: 'Keyword',
4928                 value: 'var',
4929                 range: [0, 3],
4930                 loc: {
4931                     start: { line: 1, column: 0 },
4932                     end: { line: 1, column: 3 }
4933                 }
4934             }, {
4935                 type: 'Identifier',
4936                 value: 'x',
4937                 range: [4, 5],
4938                 loc: {
4939                     start: { line: 1, column: 4 },
4940                     end: { line: 1, column: 5 }
4941                 }
4942             }, {
4943                 type: 'Punctuator',
4944                 value: '=',
4945                 range: [6, 7],
4946                 loc: {
4947                     start: { line: 1, column: 6 },
4948                     end: { line: 1, column: 7 }
4949                 }
4950             }, {
4951                 type: 'RegularExpression',
4952                 value: '/=([^=\\s])+/g',
4953                 range: [8, 21],
4954                 loc: {
4955                     start: { line: 1, column: 8 },
4956                     end: { line: 1, column: 21 }
4957                 }
4958             }]
4959         },
4960
4961         'var x = /[P QR]/\\u0067': {
4962             type: 'Program',
4963             body: [{
4964                 type: 'VariableDeclaration',
4965                 declarations: [{
4966                     type: 'VariableDeclarator',
4967                     id: {
4968                         type: 'Identifier',
4969                         name: 'x',
4970                         range: [4, 5],
4971                         loc: {
4972                             start: { line: 1, column: 4 },
4973                             end: { line: 1, column: 5 }
4974                         }
4975                     },
4976                     init: {
4977                         type: 'Literal',
4978                         value: '/[P QR]/g',
4979                         raw: '/[P QR]/\\u0067',
4980                         range: [8, 22],
4981                         loc: {
4982                             start: { line: 1, column: 8 },
4983                             end: { line: 1, column: 22 }
4984                         }
4985                     },
4986                     range: [4, 22],
4987                     loc: {
4988                         start: { line: 1, column: 4 },
4989                         end: { line: 1, column: 22 }
4990                     }
4991                 }],
4992                 kind: 'var',
4993                 range: [0, 22],
4994                 loc: {
4995                     start: { line: 1, column: 0 },
4996                     end: { line: 1, column: 22 }
4997                 }
4998             }],
4999             range: [0, 22],
5000             loc: {
5001                 start: { line: 1, column: 0 },
5002                 end: { line: 1, column: 22 }
5003             },
5004             tokens: [{
5005                 type: 'Keyword',
5006                 value: 'var',
5007                 range: [0, 3],
5008                 loc: {
5009                     start: { line: 1, column: 0 },
5010                     end: { line: 1, column: 3 }
5011                 }
5012             }, {
5013                 type: 'Identifier',
5014                 value: 'x',
5015                 range: [4, 5],
5016                 loc: {
5017                     start: { line: 1, column: 4 },
5018                     end: { line: 1, column: 5 }
5019                 }
5020             }, {
5021                 type: 'Punctuator',
5022                 value: '=',
5023                 range: [6, 7],
5024                 loc: {
5025                     start: { line: 1, column: 6 },
5026                     end: { line: 1, column: 7 }
5027                 }
5028             }, {
5029                 type: 'RegularExpression',
5030                 value: '/[P QR]/\\u0067',
5031                 range: [8, 22],
5032                 loc: {
5033                     start: { line: 1, column: 8 },
5034                     end: { line: 1, column: 22 }
5035                 }
5036             }]
5037         },
5038
5039         'var x = /[P QR]/\\g': {
5040             type: 'Program',
5041             body: [{
5042                 type: 'VariableDeclaration',
5043                 declarations: [{
5044                     type: 'VariableDeclarator',
5045                     id: {
5046                         type: 'Identifier',
5047                         name: 'x',
5048                         range: [4, 5],
5049                         loc: {
5050                             start: { line: 1, column: 4 },
5051                             end: { line: 1, column: 5 }
5052                         }
5053                     },
5054                     init: {
5055                         type: 'Literal',
5056                         value: '/[P QR]/g',
5057                         raw: '/[P QR]/\\g',
5058                         range: [8, 18],
5059                         loc: {
5060                             start: { line: 1, column: 8 },
5061                             end: { line: 1, column: 18 }
5062                         }
5063                     },
5064                     range: [4, 18],
5065                     loc: {
5066                         start: { line: 1, column: 4 },
5067                         end: { line: 1, column: 18 }
5068                     }
5069                 }],
5070                 kind: 'var',
5071                 range: [0, 18],
5072                 loc: {
5073                     start: { line: 1, column: 0 },
5074                     end: { line: 1, column: 18 }
5075                 }
5076             }],
5077             range: [0, 18],
5078             loc: {
5079                 start: { line: 1, column: 0 },
5080                 end: { line: 1, column: 18 }
5081             },
5082             tokens: [{
5083                 type: 'Keyword',
5084                 value: 'var',
5085                 range: [0, 3],
5086                 loc: {
5087                     start: { line: 1, column: 0 },
5088                     end: { line: 1, column: 3 }
5089                 }
5090             }, {
5091                 type: 'Identifier',
5092                 value: 'x',
5093                 range: [4, 5],
5094                 loc: {
5095                     start: { line: 1, column: 4 },
5096                     end: { line: 1, column: 5 }
5097                 }
5098             }, {
5099                 type: 'Punctuator',
5100                 value: '=',
5101                 range: [6, 7],
5102                 loc: {
5103                     start: { line: 1, column: 6 },
5104                     end: { line: 1, column: 7 }
5105                 }
5106             }, {
5107                 type: 'RegularExpression',
5108                 value: '/[P QR]/\\g',
5109                 range: [8, 18],
5110                 loc: {
5111                     start: { line: 1, column: 8 },
5112                     end: { line: 1, column: 18 }
5113                 }
5114             }]
5115         }
5116
5117     },
5118
5119     'Left-Hand-Side Expression': {
5120
5121         'new Button': {
5122             type: 'ExpressionStatement',
5123             expression: {
5124                 type: 'NewExpression',
5125                 callee: {
5126                     type: 'Identifier',
5127                     name: 'Button',
5128                     range: [4, 10],
5129                     loc: {
5130                         start: { line: 1, column: 4 },
5131                         end: { line: 1, column: 10 }
5132                     }
5133                 },
5134                 'arguments': [],
5135                 range: [0, 10],
5136                 loc: {
5137                     start: { line: 1, column: 0 },
5138                     end: { line: 1, column: 10 }
5139                 }
5140             },
5141             range: [0, 10],
5142             loc: {
5143                 start: { line: 1, column: 0 },
5144                 end: { line: 1, column: 10 }
5145             }
5146         },
5147
5148         'new Button()': {
5149             type: 'ExpressionStatement',
5150             expression: {
5151                 type: 'NewExpression',
5152                 callee: {
5153                     type: 'Identifier',
5154                     name: 'Button',
5155                     range: [4, 10],
5156                     loc: {
5157                         start: { line: 1, column: 4 },
5158                         end: { line: 1, column: 10 }
5159                     }
5160                 },
5161                 'arguments': [],
5162                 range: [0, 12],
5163                 loc: {
5164                     start: { line: 1, column: 0 },
5165                     end: { line: 1, column: 12 }
5166                 }
5167             },
5168             range: [0, 12],
5169             loc: {
5170                 start: { line: 1, column: 0 },
5171                 end: { line: 1, column: 12 }
5172             }
5173         },
5174
5175         'new new foo': {
5176             type: 'ExpressionStatement',
5177             expression: {
5178                 type: 'NewExpression',
5179                 callee: {
5180                     type: 'NewExpression',
5181                     callee: {
5182                         type: 'Identifier',
5183                         name: 'foo',
5184                         range: [8, 11],
5185                         loc: {
5186                             start: { line: 1, column: 8 },
5187                             end: { line: 1, column: 11 }
5188                         }
5189                     },
5190                     'arguments': [],
5191                     range: [4, 11],
5192                     loc: {
5193                         start: { line: 1, column: 4 },
5194                         end: { line: 1, column: 11 }
5195                     }
5196                 },
5197                 'arguments': [],
5198                 range: [0, 11],
5199                 loc: {
5200                     start: { line: 1, column: 0 },
5201                     end: { line: 1, column: 11 }
5202                 }
5203             },
5204             range: [0, 11],
5205             loc: {
5206                 start: { line: 1, column: 0 },
5207                 end: { line: 1, column: 11 }
5208             }
5209         },
5210
5211         'new new foo()': {
5212             type: 'ExpressionStatement',
5213             expression: {
5214                 type: 'NewExpression',
5215                 callee: {
5216                     type: 'NewExpression',
5217                     callee: {
5218                         type: 'Identifier',
5219                         name: 'foo',
5220                         range: [8, 11],
5221                         loc: {
5222                             start: { line: 1, column: 8 },
5223                             end: { line: 1, column: 11 }
5224                         }
5225                     },
5226                     'arguments': [],
5227                     range: [4, 13],
5228                     loc: {
5229                         start: { line: 1, column: 4 },
5230                         end: { line: 1, column: 13 }
5231                     }
5232                 },
5233                 'arguments': [],
5234                 range: [0, 13],
5235                 loc: {
5236                     start: { line: 1, column: 0 },
5237                     end: { line: 1, column: 13 }
5238                 }
5239             },
5240             range: [0, 13],
5241             loc: {
5242                 start: { line: 1, column: 0 },
5243                 end: { line: 1, column: 13 }
5244             }
5245         },
5246
5247         'new foo().bar()': {
5248             type: 'ExpressionStatement',
5249             expression: {
5250                 type: 'CallExpression',
5251                 callee: {
5252                     type: 'MemberExpression',
5253                     computed: false,
5254                     object: {
5255                         type: 'NewExpression',
5256                         callee: {
5257                             type: 'Identifier',
5258                             name: 'foo',
5259                             range: [4, 7],
5260                             loc: {
5261                                 start: { line: 1, column: 4 },
5262                                 end: { line: 1, column: 7 }
5263                             }
5264                         },
5265                         'arguments': [],
5266                         range: [0, 9],
5267                         loc: {
5268                             start: { line: 1, column: 0 },
5269                             end: { line: 1, column: 9 }
5270                         }
5271                     },
5272                     property: {
5273                         type: 'Identifier',
5274                         name: 'bar',
5275                         range: [10, 13],
5276                         loc: {
5277                             start: { line: 1, column: 10 },
5278                             end: { line: 1, column: 13 }
5279                         }
5280                     },
5281                     range: [0, 13],
5282                     loc: {
5283                         start: { line: 1, column: 0 },
5284                         end: { line: 1, column: 13 }
5285                     }
5286                 },
5287                 'arguments': [],
5288                 range: [0, 15],
5289                 loc: {
5290                     start: { line: 1, column: 0 },
5291                     end: { line: 1, column: 15 }
5292                 }
5293             },
5294             range: [0, 15],
5295             loc: {
5296                 start: { line: 1, column: 0 },
5297                 end: { line: 1, column: 15 }
5298             }
5299         },
5300
5301         'new foo[bar]': {
5302             type: 'ExpressionStatement',
5303             expression: {
5304                 type: 'NewExpression',
5305                 callee: {
5306                     type: 'MemberExpression',
5307                     computed: true,
5308                     object: {
5309                         type: 'Identifier',
5310                         name: 'foo',
5311                         range: [4, 7],
5312                         loc: {
5313                             start: { line: 1, column: 4 },
5314                             end: { line: 1, column: 7 }
5315                         }
5316                     },
5317                     property: {
5318                         type: 'Identifier',
5319                         name: 'bar',
5320                         range: [8, 11],
5321                         loc: {
5322                             start: { line: 1, column: 8 },
5323                             end: { line: 1, column: 11 }
5324                         }
5325                     },
5326                     range: [4, 12],
5327                     loc: {
5328                         start: { line: 1, column: 4 },
5329                         end: { line: 1, column: 12 }
5330                     }
5331                 },
5332                 'arguments': [],
5333                 range: [0, 12],
5334                 loc: {
5335                     start: { line: 1, column: 0 },
5336                     end: { line: 1, column: 12 }
5337                 }
5338             },
5339             range: [0, 12],
5340             loc: {
5341                 start: { line: 1, column: 0 },
5342                 end: { line: 1, column: 12 }
5343             }
5344         },
5345
5346         'new foo.bar()': {
5347             type: 'ExpressionStatement',
5348             expression: {
5349                 type: 'NewExpression',
5350                 callee: {
5351                     type: 'MemberExpression',
5352                     computed: false,
5353                     object: {
5354                         type: 'Identifier',
5355                         name: 'foo',
5356                         range: [4, 7],
5357                         loc: {
5358                             start: { line: 1, column: 4 },
5359                             end: { line: 1, column: 7 }
5360                         }
5361                     },
5362                     property: {
5363                         type: 'Identifier',
5364                         name: 'bar',
5365                         range: [8, 11],
5366                         loc: {
5367                             start: { line: 1, column: 8 },
5368                             end: { line: 1, column: 11 }
5369                         }
5370                     },
5371                     range: [4, 11],
5372                     loc: {
5373                         start: { line: 1, column: 4 },
5374                         end: { line: 1, column: 11 }
5375                     }
5376                 },
5377                 'arguments': [],
5378                 range: [0, 13],
5379                 loc: {
5380                     start: { line: 1, column: 0 },
5381                     end: { line: 1, column: 13 }
5382                 }
5383             },
5384             range: [0, 13],
5385             loc: {
5386                 start: { line: 1, column: 0 },
5387                 end: { line: 1, column: 13 }
5388             }
5389         },
5390
5391         '( new foo).bar()': {
5392             type: 'ExpressionStatement',
5393             expression: {
5394                 type: 'CallExpression',
5395                 callee: {
5396                     type: 'MemberExpression',
5397                     computed: false,
5398                     object: {
5399                         type: 'NewExpression',
5400                         callee: {
5401                             type: 'Identifier',
5402                             name: 'foo',
5403                             range: [6, 9],
5404                             loc: {
5405                                 start: { line: 1, column: 6 },
5406                                 end: { line: 1, column: 9 }
5407                             }
5408                         },
5409                         'arguments': [],
5410                         range: [2, 9],
5411                         loc: {
5412                             start: { line: 1, column: 2 },
5413                             end: { line: 1, column: 9 }
5414                         }
5415                     },
5416                     property: {
5417                         type: 'Identifier',
5418                         name: 'bar',
5419                         range: [11, 14],
5420                         loc: {
5421                             start: { line: 1, column: 11 },
5422                             end: { line: 1, column: 14 }
5423                         }
5424                     },
5425                     range: [0, 14],
5426                     loc: {
5427                         start: { line: 1, column: 0 },
5428                         end: { line: 1, column: 14 }
5429                     }
5430                 },
5431                 'arguments': [],
5432                 range: [0, 16],
5433                 loc: {
5434                     start: { line: 1, column: 0 },
5435                     end: { line: 1, column: 16 }
5436                 }
5437             },
5438             range: [0, 16],
5439             loc: {
5440                 start: { line: 1, column: 0 },
5441                 end: { line: 1, column: 16 }
5442             }
5443         },
5444
5445         'foo(bar, baz)': {
5446             type: 'ExpressionStatement',
5447             expression: {
5448                 type: 'CallExpression',
5449                 callee: {
5450                     type: 'Identifier',
5451                     name: 'foo',
5452                     range: [0, 3],
5453                     loc: {
5454                         start: { line: 1, column: 0 },
5455                         end: { line: 1, column: 3 }
5456                     }
5457                 },
5458                 'arguments': [{
5459                     type: 'Identifier',
5460                     name: 'bar',
5461                     range: [4, 7],
5462                     loc: {
5463                         start: { line: 1, column: 4 },
5464                         end: { line: 1, column: 7 }
5465                     }
5466                 }, {
5467                     type: 'Identifier',
5468                     name: 'baz',
5469                     range: [9, 12],
5470                     loc: {
5471                         start: { line: 1, column: 9 },
5472                         end: { line: 1, column: 12 }
5473                     }
5474                 }],
5475                 range: [0, 13],
5476                 loc: {
5477                     start: { line: 1, column: 0 },
5478                     end: { line: 1, column: 13 }
5479                 }
5480             },
5481             range: [0, 13],
5482             loc: {
5483                 start: { line: 1, column: 0 },
5484                 end: { line: 1, column: 13 }
5485             }
5486         },
5487
5488         '(    foo  )()': {
5489             type: 'ExpressionStatement',
5490             expression: {
5491                 type: 'CallExpression',
5492                 callee: {
5493                     type: 'Identifier',
5494                     name: 'foo',
5495                     range: [5, 8],
5496                     loc: {
5497                         start: { line: 1, column: 5 },
5498                         end: { line: 1, column: 8 }
5499                     }
5500                 },
5501                 'arguments': [],
5502                 range: [0, 13],
5503                 loc: {
5504                     start: { line: 1, column: 0 },
5505                     end: { line: 1, column: 13 }
5506                 }
5507             },
5508             range: [0, 13],
5509             loc: {
5510                 start: { line: 1, column: 0 },
5511                 end: { line: 1, column: 13 }
5512             }
5513         },
5514
5515         'universe.milkyway': {
5516             type: 'ExpressionStatement',
5517             expression: {
5518                 type: 'MemberExpression',
5519                 computed: false,
5520                 object: {
5521                     type: 'Identifier',
5522                     name: 'universe',
5523                     range: [0, 8],
5524                     loc: {
5525                         start: { line: 1, column: 0 },
5526                         end: { line: 1, column: 8 }
5527                     }
5528                 },
5529                 property: {
5530                     type: 'Identifier',
5531                     name: 'milkyway',
5532                     range: [9, 17],
5533                     loc: {
5534                         start: { line: 1, column: 9 },
5535                         end: { line: 1, column: 17 }
5536                     }
5537                 },
5538                 range: [0, 17],
5539                 loc: {
5540                     start: { line: 1, column: 0 },
5541                     end: { line: 1, column: 17 }
5542                 }
5543             },
5544             range: [0, 17],
5545             loc: {
5546                 start: { line: 1, column: 0 },
5547                 end: { line: 1, column: 17 }
5548             }
5549         },
5550
5551         'universe.milkyway.solarsystem': {
5552             type: 'ExpressionStatement',
5553             expression: {
5554                 type: 'MemberExpression',
5555                 computed: false,
5556                 object: {
5557                     type: 'MemberExpression',
5558                     computed: false,
5559                     object: {
5560                         type: 'Identifier',
5561                         name: 'universe',
5562                         range: [0, 8],
5563                         loc: {
5564                             start: { line: 1, column: 0 },
5565                             end: { line: 1, column: 8 }
5566                         }
5567                     },
5568                     property: {
5569                         type: 'Identifier',
5570                         name: 'milkyway',
5571                         range: [9, 17],
5572                         loc: {
5573                             start: { line: 1, column: 9 },
5574                             end: { line: 1, column: 17 }
5575                         }
5576                     },
5577                     range: [0, 17],
5578                     loc: {
5579                         start: { line: 1, column: 0 },
5580                         end: { line: 1, column: 17 }
5581                     }
5582                 },
5583                 property: {
5584                     type: 'Identifier',
5585                     name: 'solarsystem',
5586                     range: [18, 29],
5587                     loc: {
5588                         start: { line: 1, column: 18 },
5589                         end: { line: 1, column: 29 }
5590                     }
5591                 },
5592                 range: [0, 29],
5593                 loc: {
5594                     start: { line: 1, column: 0 },
5595                     end: { line: 1, column: 29 }
5596                 }
5597             },
5598             range: [0, 29],
5599             loc: {
5600                 start: { line: 1, column: 0 },
5601                 end: { line: 1, column: 29 }
5602             }
5603         },
5604
5605         'universe.milkyway.solarsystem.Earth': {
5606             type: 'ExpressionStatement',
5607             expression: {
5608                 type: 'MemberExpression',
5609                 computed: false,
5610                 object: {
5611                     type: 'MemberExpression',
5612                     computed: false,
5613                     object: {
5614                         type: 'MemberExpression',
5615                         computed: false,
5616                         object: {
5617                             type: 'Identifier',
5618                             name: 'universe',
5619                             range: [0, 8],
5620                             loc: {
5621                                 start: { line: 1, column: 0 },
5622                                 end: { line: 1, column: 8 }
5623                             }
5624                         },
5625                         property: {
5626                             type: 'Identifier',
5627                             name: 'milkyway',
5628                             range: [9, 17],
5629                             loc: {
5630                                 start: { line: 1, column: 9 },
5631                                 end: { line: 1, column: 17 }
5632                             }
5633                         },
5634                         range: [0, 17],
5635                         loc: {
5636                             start: { line: 1, column: 0 },
5637                             end: { line: 1, column: 17 }
5638                         }
5639                     },
5640                     property: {
5641                         type: 'Identifier',
5642                         name: 'solarsystem',
5643                         range: [18, 29],
5644                         loc: {
5645                             start: { line: 1, column: 18 },
5646                             end: { line: 1, column: 29 }
5647                         }
5648                     },
5649                     range: [0, 29],
5650                     loc: {
5651                         start: { line: 1, column: 0 },
5652                         end: { line: 1, column: 29 }
5653                     }
5654                 },
5655                 property: {
5656                     type: 'Identifier',
5657                     name: 'Earth',
5658                     range: [30, 35],
5659                     loc: {
5660                         start: { line: 1, column: 30 },
5661                         end: { line: 1, column: 35 }
5662                     }
5663                 },
5664                 range: [0, 35],
5665                 loc: {
5666                     start: { line: 1, column: 0 },
5667                     end: { line: 1, column: 35 }
5668                 }
5669             },
5670             range: [0, 35],
5671             loc: {
5672                 start: { line: 1, column: 0 },
5673                 end: { line: 1, column: 35 }
5674             }
5675         },
5676
5677         'universe[galaxyName, otherUselessName]': {
5678             type: 'ExpressionStatement',
5679             expression: {
5680                 type: 'MemberExpression',
5681                 computed: true,
5682                 object: {
5683                     type: 'Identifier',
5684                     name: 'universe',
5685                     range: [0, 8],
5686                     loc: {
5687                         start: { line: 1, column: 0 },
5688                         end: { line: 1, column: 8 }
5689                     }
5690                 },
5691                 property: {
5692                     type: 'SequenceExpression',
5693                     expressions: [{
5694                         type: 'Identifier',
5695                         name: 'galaxyName',
5696                         range: [9, 19],
5697                         loc: {
5698                             start: { line: 1, column: 9 },
5699                             end: { line: 1, column: 19 }
5700                         }
5701                     }, {
5702                         type: 'Identifier',
5703                         name: 'otherUselessName',
5704                         range: [21, 37],
5705                         loc: {
5706                             start: { line: 1, column: 21 },
5707                             end: { line: 1, column: 37 }
5708                         }
5709                     }],
5710                     range: [9, 37],
5711                     loc: {
5712                         start: { line: 1, column: 9 },
5713                         end: { line: 1, column: 37 }
5714                     }
5715                 },
5716                 range: [0, 38],
5717                 loc: {
5718                     start: { line: 1, column: 0 },
5719                     end: { line: 1, column: 38 }
5720                 }
5721             },
5722             range: [0, 38],
5723             loc: {
5724                 start: { line: 1, column: 0 },
5725                 end: { line: 1, column: 38 }
5726             }
5727         },
5728
5729         'universe[galaxyName]': {
5730             type: 'ExpressionStatement',
5731             expression: {
5732                 type: 'MemberExpression',
5733                 computed: true,
5734                 object: {
5735                     type: 'Identifier',
5736                     name: 'universe',
5737                     range: [0, 8],
5738                     loc: {
5739                         start: { line: 1, column: 0 },
5740                         end: { line: 1, column: 8 }
5741                     }
5742                 },
5743                 property: {
5744                     type: 'Identifier',
5745                     name: 'galaxyName',
5746                     range: [9, 19],
5747                     loc: {
5748                         start: { line: 1, column: 9 },
5749                         end: { line: 1, column: 19 }
5750                     }
5751                 },
5752                 range: [0, 20],
5753                 loc: {
5754                     start: { line: 1, column: 0 },
5755                     end: { line: 1, column: 20 }
5756                 }
5757             },
5758             range: [0, 20],
5759             loc: {
5760                 start: { line: 1, column: 0 },
5761                 end: { line: 1, column: 20 }
5762             }
5763         },
5764
5765         'universe[42].galaxies': {
5766             type: 'ExpressionStatement',
5767             expression: {
5768                 type: 'MemberExpression',
5769                 computed: false,
5770                 object: {
5771                     type: 'MemberExpression',
5772                     computed: true,
5773                     object: {
5774                         type: 'Identifier',
5775                         name: 'universe',
5776                         range: [0, 8],
5777                         loc: {
5778                             start: { line: 1, column: 0 },
5779                             end: { line: 1, column: 8 }
5780                         }
5781                     },
5782                     property: {
5783                         type: 'Literal',
5784                         value: 42,
5785                         raw: '42',
5786                         range: [9, 11],
5787                         loc: {
5788                             start: { line: 1, column: 9 },
5789                             end: { line: 1, column: 11 }
5790                         }
5791                     },
5792                     range: [0, 12],
5793                     loc: {
5794                         start: { line: 1, column: 0 },
5795                         end: { line: 1, column: 12 }
5796                     }
5797                 },
5798                 property: {
5799                     type: 'Identifier',
5800                     name: 'galaxies',
5801                     range: [13, 21],
5802                     loc: {
5803                         start: { line: 1, column: 13 },
5804                         end: { line: 1, column: 21 }
5805                     }
5806                 },
5807                 range: [0, 21],
5808                 loc: {
5809                     start: { line: 1, column: 0 },
5810                     end: { line: 1, column: 21 }
5811                 }
5812             },
5813             range: [0, 21],
5814             loc: {
5815                 start: { line: 1, column: 0 },
5816                 end: { line: 1, column: 21 }
5817             }
5818         },
5819
5820         'universe(42).galaxies': {
5821             type: 'ExpressionStatement',
5822             expression: {
5823                 type: 'MemberExpression',
5824                 computed: false,
5825                 object: {
5826                     type: 'CallExpression',
5827                     callee: {
5828                         type: 'Identifier',
5829                         name: 'universe',
5830                         range: [0, 8],
5831                         loc: {
5832                             start: { line: 1, column: 0 },
5833                             end: { line: 1, column: 8 }
5834                         }
5835                     },
5836                     'arguments': [{
5837                         type: 'Literal',
5838                         value: 42,
5839                         raw: '42',
5840                         range: [9, 11],
5841                         loc: {
5842                             start: { line: 1, column: 9 },
5843                             end: { line: 1, column: 11 }
5844                         }
5845                     }],
5846                     range: [0, 12],
5847                     loc: {
5848                         start: { line: 1, column: 0 },
5849                         end: { line: 1, column: 12 }
5850                     }
5851                 },
5852                 property: {
5853                     type: 'Identifier',
5854                     name: 'galaxies',
5855                     range: [13, 21],
5856                     loc: {
5857                         start: { line: 1, column: 13 },
5858                         end: { line: 1, column: 21 }
5859                     }
5860                 },
5861                 range: [0, 21],
5862                 loc: {
5863                     start: { line: 1, column: 0 },
5864                     end: { line: 1, column: 21 }
5865                 }
5866             },
5867             range: [0, 21],
5868             loc: {
5869                 start: { line: 1, column: 0 },
5870                 end: { line: 1, column: 21 }
5871             }
5872         },
5873
5874         'universe(42).galaxies(14, 3, 77).milkyway': {
5875             type: 'ExpressionStatement',
5876             expression: {
5877                 type: 'MemberExpression',
5878                 computed: false,
5879                 object: {
5880                     type: 'CallExpression',
5881                     callee: {
5882                         type: 'MemberExpression',
5883                         computed: false,
5884                         object: {
5885                             type: 'CallExpression',
5886                             callee: {
5887                                 type: 'Identifier',
5888                                 name: 'universe',
5889                                 range: [0, 8],
5890                                 loc: {
5891                                     start: { line: 1, column: 0 },
5892                                     end: { line: 1, column: 8 }
5893                                 }
5894                             },
5895                             'arguments': [{
5896                                 type: 'Literal',
5897                                 value: 42,
5898                                 raw: '42',
5899                                 range: [9, 11],
5900                                 loc: {
5901                                     start: { line: 1, column: 9 },
5902                                     end: { line: 1, column: 11 }
5903                                 }
5904                             }],
5905                             range: [0, 12],
5906                             loc: {
5907                                 start: { line: 1, column: 0 },
5908                                 end: { line: 1, column: 12 }
5909                             }
5910                         },
5911                         property: {
5912                             type: 'Identifier',
5913                             name: 'galaxies',
5914                             range: [13, 21],
5915                             loc: {
5916                                 start: { line: 1, column: 13 },
5917                                 end: { line: 1, column: 21 }
5918                             }
5919                         },
5920                         range: [0, 21],
5921                         loc: {
5922                             start: { line: 1, column: 0 },
5923                             end: { line: 1, column: 21 }
5924                         }
5925                     },
5926                     'arguments': [{
5927                         type: 'Literal',
5928                         value: 14,
5929                         raw: '14',
5930                         range: [22, 24],
5931                         loc: {
5932                             start: { line: 1, column: 22 },
5933                             end: { line: 1, column: 24 }
5934                         }
5935                     }, {
5936                         type: 'Literal',
5937                         value: 3,
5938                         raw: '3',
5939                         range: [26, 27],
5940                         loc: {
5941                             start: { line: 1, column: 26 },
5942                             end: { line: 1, column: 27 }
5943                         }
5944                     }, {
5945                         type: 'Literal',
5946                         value: 77,
5947                         raw: '77',
5948                         range: [29, 31],
5949                         loc: {
5950                             start: { line: 1, column: 29 },
5951                             end: { line: 1, column: 31 }
5952                         }
5953                     }],
5954                     range: [0, 32],
5955                     loc: {
5956                         start: { line: 1, column: 0 },
5957                         end: { line: 1, column: 32 }
5958                     }
5959                 },
5960                 property: {
5961                     type: 'Identifier',
5962                     name: 'milkyway',
5963                     range: [33, 41],
5964                     loc: {
5965                         start: { line: 1, column: 33 },
5966                         end: { line: 1, column: 41 }
5967                     }
5968                 },
5969                 range: [0, 41],
5970                 loc: {
5971                     start: { line: 1, column: 0 },
5972                     end: { line: 1, column: 41 }
5973                 }
5974             },
5975             range: [0, 41],
5976             loc: {
5977                 start: { line: 1, column: 0 },
5978                 end: { line: 1, column: 41 }
5979             }
5980         },
5981
5982         'earth.asia.Indonesia.prepareForElection(2014)': {
5983             type: 'ExpressionStatement',
5984             expression: {
5985                 type: 'CallExpression',
5986                 callee: {
5987                     type: 'MemberExpression',
5988                     computed: false,
5989                     object: {
5990                         type: 'MemberExpression',
5991                         computed: false,
5992                         object: {
5993                             type: 'MemberExpression',
5994                             computed: false,
5995                             object: {
5996                                 type: 'Identifier',
5997                                 name: 'earth',
5998                                 range: [0, 5],
5999                                 loc: {
6000                                     start: { line: 1, column: 0 },
6001                                     end: { line: 1, column: 5 }
6002                                 }
6003                             },
6004                             property: {
6005                                 type: 'Identifier',
6006                                 name: 'asia',
6007                                 range: [6, 10],
6008                                 loc: {
6009                                     start: { line: 1, column: 6 },
6010                                     end: { line: 1, column: 10 }
6011                                 }
6012                             },
6013                             range: [0, 10],
6014                             loc: {
6015                                 start: { line: 1, column: 0 },
6016                                 end: { line: 1, column: 10 }
6017                             }
6018                         },
6019                         property: {
6020                             type: 'Identifier',
6021                             name: 'Indonesia',
6022                             range: [11, 20],
6023                             loc: {
6024                                 start: { line: 1, column: 11 },
6025                                 end: { line: 1, column: 20 }
6026                             }
6027                         },
6028                         range: [0, 20],
6029                         loc: {
6030                             start: { line: 1, column: 0 },
6031                             end: { line: 1, column: 20 }
6032                         }
6033                     },
6034                     property: {
6035                         type: 'Identifier',
6036                         name: 'prepareForElection',
6037                         range: [21, 39],
6038                         loc: {
6039                             start: { line: 1, column: 21 },
6040                             end: { line: 1, column: 39 }
6041                         }
6042                     },
6043                     range: [0, 39],
6044                     loc: {
6045                         start: { line: 1, column: 0 },
6046                         end: { line: 1, column: 39 }
6047                     }
6048                 },
6049                 'arguments': [{
6050                     type: 'Literal',
6051                     value: 2014,
6052                     raw: '2014',
6053                     range: [40, 44],
6054                     loc: {
6055                         start: { line: 1, column: 40 },
6056                         end: { line: 1, column: 44 }
6057                     }
6058                 }],
6059                 range: [0, 45],
6060                 loc: {
6061                     start: { line: 1, column: 0 },
6062                     end: { line: 1, column: 45 }
6063                 }
6064             },
6065             range: [0, 45],
6066             loc: {
6067                 start: { line: 1, column: 0 },
6068                 end: { line: 1, column: 45 }
6069             }
6070         },
6071
6072         'universe.if': {
6073             type: 'ExpressionStatement',
6074             expression: {
6075                 type: 'MemberExpression',
6076                 computed: false,
6077                 object: {
6078                     type: 'Identifier',
6079                     name: 'universe',
6080                     range: [0, 8],
6081                     loc: {
6082                         start: { line: 1, column: 0 },
6083                         end: { line: 1, column: 8 }
6084                     }
6085                 },
6086                 property: {
6087                     type: 'Identifier',
6088                     name: 'if',
6089                     range: [9, 11],
6090                     loc: {
6091                         start: { line: 1, column: 9 },
6092                         end: { line: 1, column: 11 }
6093                     }
6094                 },
6095                 range: [0, 11],
6096                 loc: {
6097                     start: { line: 1, column: 0 },
6098                     end: { line: 1, column: 11 }
6099                 }
6100             },
6101             range: [0, 11],
6102             loc: {
6103                 start: { line: 1, column: 0 },
6104                 end: { line: 1, column: 11 }
6105             }
6106         },
6107
6108         'universe.true': {
6109             type: 'ExpressionStatement',
6110             expression: {
6111                 type: 'MemberExpression',
6112                 computed: false,
6113                 object: {
6114                     type: 'Identifier',
6115                     name: 'universe',
6116                     range: [0, 8],
6117                     loc: {
6118                         start: { line: 1, column: 0 },
6119                         end: { line: 1, column: 8 }
6120                     }
6121                 },
6122                 property: {
6123                     type: 'Identifier',
6124                     name: 'true',
6125                     range: [9, 13],
6126                     loc: {
6127                         start: { line: 1, column: 9 },
6128                         end: { line: 1, column: 13 }
6129                     }
6130                 },
6131                 range: [0, 13],
6132                 loc: {
6133                     start: { line: 1, column: 0 },
6134                     end: { line: 1, column: 13 }
6135                 }
6136             },
6137             range: [0, 13],
6138             loc: {
6139                 start: { line: 1, column: 0 },
6140                 end: { line: 1, column: 13 }
6141             }
6142         },
6143
6144         'universe.false': {
6145             type: 'ExpressionStatement',
6146             expression: {
6147                 type: 'MemberExpression',
6148                 computed: false,
6149                 object: {
6150                     type: 'Identifier',
6151                     name: 'universe',
6152                     range: [0, 8],
6153                     loc: {
6154                         start: { line: 1, column: 0 },
6155                         end: { line: 1, column: 8 }
6156                     }
6157                 },
6158                 property: {
6159                     type: 'Identifier',
6160                     name: 'false',
6161                     range: [9, 14],
6162                     loc: {
6163                         start: { line: 1, column: 9 },
6164                         end: { line: 1, column: 14 }
6165                     }
6166                 },
6167                 range: [0, 14],
6168                 loc: {
6169                     start: { line: 1, column: 0 },
6170                     end: { line: 1, column: 14 }
6171                 }
6172             },
6173             range: [0, 14],
6174             loc: {
6175                 start: { line: 1, column: 0 },
6176                 end: { line: 1, column: 14 }
6177             }
6178         },
6179
6180         'universe.null': {
6181             type: 'ExpressionStatement',
6182             expression: {
6183                 type: 'MemberExpression',
6184                 computed: false,
6185                 object: {
6186                     type: 'Identifier',
6187                     name: 'universe',
6188                     range: [0, 8],
6189                     loc: {
6190                         start: { line: 1, column: 0 },
6191                         end: { line: 1, column: 8 }
6192                     }
6193                 },
6194                 property: {
6195                     type: 'Identifier',
6196                     name: 'null',
6197                     range: [9, 13],
6198                     loc: {
6199                         start: { line: 1, column: 9 },
6200                         end: { line: 1, column: 13 }
6201                     }
6202                 },
6203                 range: [0, 13],
6204                 loc: {
6205                     start: { line: 1, column: 0 },
6206                     end: { line: 1, column: 13 }
6207                 }
6208             },
6209             range: [0, 13],
6210             loc: {
6211                 start: { line: 1, column: 0 },
6212                 end: { line: 1, column: 13 }
6213             }
6214         }
6215
6216     },
6217
6218     'Postfix Expressions': {
6219
6220         'x++': {
6221             type: 'ExpressionStatement',
6222             expression: {
6223                 type: 'UpdateExpression',
6224                 operator: '++',
6225                 argument: {
6226                     type: 'Identifier',
6227                     name: 'x',
6228                     range: [0, 1],
6229                     loc: {
6230                         start: { line: 1, column: 0 },
6231                         end: { line: 1, column: 1 }
6232                     }
6233                 },
6234                 prefix: false,
6235                 range: [0, 3],
6236                 loc: {
6237                     start: { line: 1, column: 0 },
6238                     end: { line: 1, column: 3 }
6239                 }
6240             },
6241             range: [0, 3],
6242             loc: {
6243                 start: { line: 1, column: 0 },
6244                 end: { line: 1, column: 3 }
6245             }
6246         },
6247
6248         'x--': {
6249             type: 'ExpressionStatement',
6250             expression: {
6251                 type: 'UpdateExpression',
6252                 operator: '--',
6253                 argument: {
6254                     type: 'Identifier',
6255                     name: 'x',
6256                     range: [0, 1],
6257                     loc: {
6258                         start: { line: 1, column: 0 },
6259                         end: { line: 1, column: 1 }
6260                     }
6261                 },
6262                 prefix: false,
6263                 range: [0, 3],
6264                 loc: {
6265                     start: { line: 1, column: 0 },
6266                     end: { line: 1, column: 3 }
6267                 }
6268             },
6269             range: [0, 3],
6270             loc: {
6271                 start: { line: 1, column: 0 },
6272                 end: { line: 1, column: 3 }
6273             }
6274         },
6275
6276         'eval++': {
6277             type: 'ExpressionStatement',
6278             expression: {
6279                 type: 'UpdateExpression',
6280                 operator: '++',
6281                 argument: {
6282                     type: 'Identifier',
6283                     name: 'eval',
6284                     range: [0, 4],
6285                     loc: {
6286                         start: { line: 1, column: 0 },
6287                         end: { line: 1, column: 4 }
6288                     }
6289                 },
6290                 prefix: false,
6291                 range: [0, 6],
6292                 loc: {
6293                     start: { line: 1, column: 0 },
6294                     end: { line: 1, column: 6 }
6295                 }
6296             },
6297             range: [0, 6],
6298             loc: {
6299                 start: { line: 1, column: 0 },
6300                 end: { line: 1, column: 6 }
6301             }
6302         },
6303
6304         'eval--': {
6305             type: 'ExpressionStatement',
6306             expression: {
6307                 type: 'UpdateExpression',
6308                 operator: '--',
6309                 argument: {
6310                     type: 'Identifier',
6311                     name: 'eval',
6312                     range: [0, 4],
6313                     loc: {
6314                         start: { line: 1, column: 0 },
6315                         end: { line: 1, column: 4 }
6316                     }
6317                 },
6318                 prefix: false,
6319                 range: [0, 6],
6320                 loc: {
6321                     start: { line: 1, column: 0 },
6322                     end: { line: 1, column: 6 }
6323                 }
6324             },
6325             range: [0, 6],
6326             loc: {
6327                 start: { line: 1, column: 0 },
6328                 end: { line: 1, column: 6 }
6329             }
6330         },
6331
6332         'arguments++': {
6333             type: 'ExpressionStatement',
6334             expression: {
6335                 type: 'UpdateExpression',
6336                 operator: '++',
6337                 argument: {
6338                     type: 'Identifier',
6339                     name: 'arguments',
6340                     range: [0, 9],
6341                     loc: {
6342                         start: { line: 1, column: 0 },
6343                         end: { line: 1, column: 9 }
6344                     }
6345                 },
6346                 prefix: false,
6347                 range: [0, 11],
6348                 loc: {
6349                     start: { line: 1, column: 0 },
6350                     end: { line: 1, column: 11 }
6351                 }
6352             },
6353             range: [0, 11],
6354             loc: {
6355                 start: { line: 1, column: 0 },
6356                 end: { line: 1, column: 11 }
6357             }
6358         },
6359
6360         'arguments--': {
6361             type: 'ExpressionStatement',
6362             expression: {
6363                 type: 'UpdateExpression',
6364                 operator: '--',
6365                 argument: {
6366                     type: 'Identifier',
6367                     name: 'arguments',
6368                     range: [0, 9],
6369                     loc: {
6370                         start: { line: 1, column: 0 },
6371                         end: { line: 1, column: 9 }
6372                     }
6373                 },
6374                 prefix: false,
6375                 range: [0, 11],
6376                 loc: {
6377                     start: { line: 1, column: 0 },
6378                     end: { line: 1, column: 11 }
6379                 }
6380             },
6381             range: [0, 11],
6382             loc: {
6383                 start: { line: 1, column: 0 },
6384                 end: { line: 1, column: 11 }
6385             }
6386         }
6387
6388     },
6389
6390     'Unary Operators': {
6391
6392         '++x': {
6393             type: 'ExpressionStatement',
6394             expression: {
6395                 type: 'UpdateExpression',
6396                 operator: '++',
6397                 argument: {
6398                     type: 'Identifier',
6399                     name: 'x',
6400                     range: [2, 3],
6401                     loc: {
6402                         start: { line: 1, column: 2 },
6403                         end: { line: 1, column: 3 }
6404                     }
6405                 },
6406                 prefix: true,
6407                 range: [0, 3],
6408                 loc: {
6409                     start: { line: 1, column: 0 },
6410                     end: { line: 1, column: 3 }
6411                 }
6412             },
6413             range: [0, 3],
6414             loc: {
6415                 start: { line: 1, column: 0 },
6416                 end: { line: 1, column: 3 }
6417             }
6418         },
6419
6420         '--x': {
6421             type: 'ExpressionStatement',
6422             expression: {
6423                 type: 'UpdateExpression',
6424                 operator: '--',
6425                 argument: {
6426                     type: 'Identifier',
6427                     name: 'x',
6428                     range: [2, 3],
6429                     loc: {
6430                         start: { line: 1, column: 2 },
6431                         end: { line: 1, column: 3 }
6432                     }
6433                 },
6434                 prefix: true,
6435                 range: [0, 3],
6436                 loc: {
6437                     start: { line: 1, column: 0 },
6438                     end: { line: 1, column: 3 }
6439                 }
6440             },
6441             range: [0, 3],
6442             loc: {
6443                 start: { line: 1, column: 0 },
6444                 end: { line: 1, column: 3 }
6445             }
6446         },
6447
6448         '++eval': {
6449             type: 'ExpressionStatement',
6450             expression: {
6451                 type: 'UpdateExpression',
6452                 operator: '++',
6453                 argument: {
6454                     type: 'Identifier',
6455                     name: 'eval',
6456                     range: [2, 6],
6457                     loc: {
6458                         start: { line: 1, column: 2 },
6459                         end: { line: 1, column: 6 }
6460                     }
6461                 },
6462                 prefix: true,
6463                 range: [0, 6],
6464                 loc: {
6465                     start: { line: 1, column: 0 },
6466                     end: { line: 1, column: 6 }
6467                 }
6468             },
6469             range: [0, 6],
6470             loc: {
6471                 start: { line: 1, column: 0 },
6472                 end: { line: 1, column: 6 }
6473             }
6474         },
6475
6476         '--eval': {
6477             type: 'ExpressionStatement',
6478             expression: {
6479                 type: 'UpdateExpression',
6480                 operator: '--',
6481                 argument: {
6482                     type: 'Identifier',
6483                     name: 'eval',
6484                     range: [2, 6],
6485                     loc: {
6486                         start: { line: 1, column: 2 },
6487                         end: { line: 1, column: 6 }
6488                     }
6489                 },
6490                 prefix: true,
6491                 range: [0, 6],
6492                 loc: {
6493                     start: { line: 1, column: 0 },
6494                     end: { line: 1, column: 6 }
6495                 }
6496             },
6497             range: [0, 6],
6498             loc: {
6499                 start: { line: 1, column: 0 },
6500                 end: { line: 1, column: 6 }
6501             }
6502         },
6503
6504         '++arguments': {
6505             type: 'ExpressionStatement',
6506             expression: {
6507                 type: 'UpdateExpression',
6508                 operator: '++',
6509                 argument: {
6510                     type: 'Identifier',
6511                     name: 'arguments',
6512                     range: [2, 11],
6513                     loc: {
6514                         start: { line: 1, column: 2 },
6515                         end: { line: 1, column: 11 }
6516                     }
6517                 },
6518                 prefix: true,
6519                 range: [0, 11],
6520                 loc: {
6521                     start: { line: 1, column: 0 },
6522                     end: { line: 1, column: 11 }
6523                 }
6524             },
6525             range: [0, 11],
6526             loc: {
6527                 start: { line: 1, column: 0 },
6528                 end: { line: 1, column: 11 }
6529             }
6530         },
6531
6532         '--arguments': {
6533             type: 'ExpressionStatement',
6534             expression: {
6535                 type: 'UpdateExpression',
6536                 operator: '--',
6537                 argument: {
6538                     type: 'Identifier',
6539                     name: 'arguments',
6540                     range: [2, 11],
6541                     loc: {
6542                         start: { line: 1, column: 2 },
6543                         end: { line: 1, column: 11 }
6544                     }
6545                 },
6546                 prefix: true,
6547                 range: [0, 11],
6548                 loc: {
6549                     start: { line: 1, column: 0 },
6550                     end: { line: 1, column: 11 }
6551                 }
6552             },
6553             range: [0, 11],
6554             loc: {
6555                 start: { line: 1, column: 0 },
6556                 end: { line: 1, column: 11 }
6557             }
6558         },
6559
6560         '+x': {
6561             type: 'ExpressionStatement',
6562             expression: {
6563                 type: 'UnaryExpression',
6564                 operator: '+',
6565                 argument: {
6566                     type: 'Identifier',
6567                     name: 'x',
6568                     range: [1, 2],
6569                     loc: {
6570                         start: { line: 1, column: 1 },
6571                         end: { line: 1, column: 2 }
6572                     }
6573                 },
6574                 prefix: true,
6575                 range: [0, 2],
6576                 loc: {
6577                     start: { line: 1, column: 0 },
6578                     end: { line: 1, column: 2 }
6579                 }
6580             },
6581             range: [0, 2],
6582             loc: {
6583                 start: { line: 1, column: 0 },
6584                 end: { line: 1, column: 2 }
6585             }
6586         },
6587
6588         '-x': {
6589             type: 'ExpressionStatement',
6590             expression: {
6591                 type: 'UnaryExpression',
6592                 operator: '-',
6593                 argument: {
6594                     type: 'Identifier',
6595                     name: 'x',
6596                     range: [1, 2],
6597                     loc: {
6598                         start: { line: 1, column: 1 },
6599                         end: { line: 1, column: 2 }
6600                     }
6601                 },
6602                 prefix: true,
6603                 range: [0, 2],
6604                 loc: {
6605                     start: { line: 1, column: 0 },
6606                     end: { line: 1, column: 2 }
6607                 }
6608             },
6609             range: [0, 2],
6610             loc: {
6611                 start: { line: 1, column: 0 },
6612                 end: { line: 1, column: 2 }
6613             }
6614         },
6615
6616         '~x': {
6617             type: 'ExpressionStatement',
6618             expression: {
6619                 type: 'UnaryExpression',
6620                 operator: '~',
6621                 argument: {
6622                     type: 'Identifier',
6623                     name: 'x',
6624                     range: [1, 2],
6625                     loc: {
6626                         start: { line: 1, column: 1 },
6627                         end: { line: 1, column: 2 }
6628                     }
6629                 },
6630                 prefix: true,
6631                 range: [0, 2],
6632                 loc: {
6633                     start: { line: 1, column: 0 },
6634                     end: { line: 1, column: 2 }
6635                 }
6636             },
6637             range: [0, 2],
6638             loc: {
6639                 start: { line: 1, column: 0 },
6640                 end: { line: 1, column: 2 }
6641             }
6642         },
6643
6644         '!x': {
6645             type: 'ExpressionStatement',
6646             expression: {
6647                 type: 'UnaryExpression',
6648                 operator: '!',
6649                 argument: {
6650                     type: 'Identifier',
6651                     name: 'x',
6652                     range: [1, 2],
6653                     loc: {
6654                         start: { line: 1, column: 1 },
6655                         end: { line: 1, column: 2 }
6656                     }
6657                 },
6658                 prefix: true,
6659                 range: [0, 2],
6660                 loc: {
6661                     start: { line: 1, column: 0 },
6662                     end: { line: 1, column: 2 }
6663                 }
6664             },
6665             range: [0, 2],
6666             loc: {
6667                 start: { line: 1, column: 0 },
6668                 end: { line: 1, column: 2 }
6669             }
6670         },
6671
6672         'void x': {
6673             type: 'ExpressionStatement',
6674             expression: {
6675                 type: 'UnaryExpression',
6676                 operator: 'void',
6677                 argument: {
6678                     type: 'Identifier',
6679                     name: 'x',
6680                     range: [5, 6],
6681                     loc: {
6682                         start: { line: 1, column: 5 },
6683                         end: { line: 1, column: 6 }
6684                     }
6685                 },
6686                 prefix: true,
6687                 range: [0, 6],
6688                 loc: {
6689                     start: { line: 1, column: 0 },
6690                     end: { line: 1, column: 6 }
6691                 }
6692             },
6693             range: [0, 6],
6694             loc: {
6695                 start: { line: 1, column: 0 },
6696                 end: { line: 1, column: 6 }
6697             }
6698         },
6699
6700         'delete x': {
6701             type: 'ExpressionStatement',
6702             expression: {
6703                 type: 'UnaryExpression',
6704                 operator: 'delete',
6705                 argument: {
6706                     type: 'Identifier',
6707                     name: 'x',
6708                     range: [7, 8],
6709                     loc: {
6710                         start: { line: 1, column: 7 },
6711                         end: { line: 1, column: 8 }
6712                     }
6713                 },
6714                 prefix: true,
6715                 range: [0, 8],
6716                 loc: {
6717                     start: { line: 1, column: 0 },
6718                     end: { line: 1, column: 8 }
6719                 }
6720             },
6721             range: [0, 8],
6722             loc: {
6723                 start: { line: 1, column: 0 },
6724                 end: { line: 1, column: 8 }
6725             }
6726         },
6727
6728         'typeof x': {
6729             type: 'ExpressionStatement',
6730             expression: {
6731                 type: 'UnaryExpression',
6732                 operator: 'typeof',
6733                 argument: {
6734                     type: 'Identifier',
6735                     name: 'x',
6736                     range: [7, 8],
6737                     loc: {
6738                         start: { line: 1, column: 7 },
6739                         end: { line: 1, column: 8 }
6740                     }
6741                 },
6742                 prefix: true,
6743                 range: [0, 8],
6744                 loc: {
6745                     start: { line: 1, column: 0 },
6746                     end: { line: 1, column: 8 }
6747                 }
6748             },
6749             range: [0, 8],
6750             loc: {
6751                 start: { line: 1, column: 0 },
6752                 end: { line: 1, column: 8 }
6753             }
6754         }
6755
6756     },
6757
6758     'Multiplicative Operators': {
6759
6760         'x * y': {
6761             type: 'ExpressionStatement',
6762             expression: {
6763                 type: 'BinaryExpression',
6764                 operator: '*',
6765                 left: {
6766                     type: 'Identifier',
6767                     name: 'x',
6768                     range: [0, 1],
6769                     loc: {
6770                         start: { line: 1, column: 0 },
6771                         end: { line: 1, column: 1 }
6772                     }
6773                 },
6774                 right: {
6775                     type: 'Identifier',
6776                     name: 'y',
6777                     range: [4, 5],
6778                     loc: {
6779                         start: { line: 1, column: 4 },
6780                         end: { line: 1, column: 5 }
6781                     }
6782                 },
6783                 range: [0, 5],
6784                 loc: {
6785                     start: { line: 1, column: 0 },
6786                     end: { line: 1, column: 5 }
6787                 }
6788             },
6789             range: [0, 5],
6790             loc: {
6791                 start: { line: 1, column: 0 },
6792                 end: { line: 1, column: 5 }
6793             }
6794         },
6795
6796         'x / y': {
6797             type: 'ExpressionStatement',
6798             expression: {
6799                 type: 'BinaryExpression',
6800                 operator: '/',
6801                 left: {
6802                     type: 'Identifier',
6803                     name: 'x',
6804                     range: [0, 1],
6805                     loc: {
6806                         start: { line: 1, column: 0 },
6807                         end: { line: 1, column: 1 }
6808                     }
6809                 },
6810                 right: {
6811                     type: 'Identifier',
6812                     name: 'y',
6813                     range: [4, 5],
6814                     loc: {
6815                         start: { line: 1, column: 4 },
6816                         end: { line: 1, column: 5 }
6817                     }
6818                 },
6819                 range: [0, 5],
6820                 loc: {
6821                     start: { line: 1, column: 0 },
6822                     end: { line: 1, column: 5 }
6823                 }
6824             },
6825             range: [0, 5],
6826             loc: {
6827                 start: { line: 1, column: 0 },
6828                 end: { line: 1, column: 5 }
6829             }
6830         },
6831
6832         'x % y': {
6833             type: 'ExpressionStatement',
6834             expression: {
6835                 type: 'BinaryExpression',
6836                 operator: '%',
6837                 left: {
6838                     type: 'Identifier',
6839                     name: 'x',
6840                     range: [0, 1],
6841                     loc: {
6842                         start: { line: 1, column: 0 },
6843                         end: { line: 1, column: 1 }
6844                     }
6845                 },
6846                 right: {
6847                     type: 'Identifier',
6848                     name: 'y',
6849                     range: [4, 5],
6850                     loc: {
6851                         start: { line: 1, column: 4 },
6852                         end: { line: 1, column: 5 }
6853                     }
6854                 },
6855                 range: [0, 5],
6856                 loc: {
6857                     start: { line: 1, column: 0 },
6858                     end: { line: 1, column: 5 }
6859                 }
6860             },
6861             range: [0, 5],
6862             loc: {
6863                 start: { line: 1, column: 0 },
6864                 end: { line: 1, column: 5 }
6865             }
6866         }
6867
6868     },
6869
6870     'Additive Operators': {
6871
6872         'x + y': {
6873             type: 'ExpressionStatement',
6874             expression: {
6875                 type: 'BinaryExpression',
6876                 operator: '+',
6877                 left: {
6878                     type: 'Identifier',
6879                     name: 'x',
6880                     range: [0, 1],
6881                     loc: {
6882                         start: { line: 1, column: 0 },
6883                         end: { line: 1, column: 1 }
6884                     }
6885                 },
6886                 right: {
6887                     type: 'Identifier',
6888                     name: 'y',
6889                     range: [4, 5],
6890                     loc: {
6891                         start: { line: 1, column: 4 },
6892                         end: { line: 1, column: 5 }
6893                     }
6894                 },
6895                 range: [0, 5],
6896                 loc: {
6897                     start: { line: 1, column: 0 },
6898                     end: { line: 1, column: 5 }
6899                 }
6900             },
6901             range: [0, 5],
6902             loc: {
6903                 start: { line: 1, column: 0 },
6904                 end: { line: 1, column: 5 }
6905             }
6906         },
6907
6908         'x - y': {
6909             type: 'ExpressionStatement',
6910             expression: {
6911                 type: 'BinaryExpression',
6912                 operator: '-',
6913                 left: {
6914                     type: 'Identifier',
6915                     name: 'x',
6916                     range: [0, 1],
6917                     loc: {
6918                         start: { line: 1, column: 0 },
6919                         end: { line: 1, column: 1 }
6920                     }
6921                 },
6922                 right: {
6923                     type: 'Identifier',
6924                     name: 'y',
6925                     range: [4, 5],
6926                     loc: {
6927                         start: { line: 1, column: 4 },
6928                         end: { line: 1, column: 5 }
6929                     }
6930                 },
6931                 range: [0, 5],
6932                 loc: {
6933                     start: { line: 1, column: 0 },
6934                     end: { line: 1, column: 5 }
6935                 }
6936             },
6937             range: [0, 5],
6938             loc: {
6939                 start: { line: 1, column: 0 },
6940                 end: { line: 1, column: 5 }
6941             }
6942         }
6943
6944     },
6945
6946     'Bitwise Shift Operator': {
6947
6948         'x << y': {
6949             type: 'ExpressionStatement',
6950             expression: {
6951                 type: 'BinaryExpression',
6952                 operator: '<<',
6953                 left: {
6954                     type: 'Identifier',
6955                     name: 'x',
6956                     range: [0, 1],
6957                     loc: {
6958                         start: { line: 1, column: 0 },
6959                         end: { line: 1, column: 1 }
6960                     }
6961                 },
6962                 right: {
6963                     type: 'Identifier',
6964                     name: 'y',
6965                     range: [5, 6],
6966                     loc: {
6967                         start: { line: 1, column: 5 },
6968                         end: { line: 1, column: 6 }
6969                     }
6970                 },
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         'x >> y': {
6985             type: 'ExpressionStatement',
6986             expression: {
6987                 type: 'BinaryExpression',
6988                 operator: '>>',
6989                 left: {
6990                     type: 'Identifier',
6991                     name: 'x',
6992                     range: [0, 1],
6993                     loc: {
6994                         start: { line: 1, column: 0 },
6995                         end: { line: 1, column: 1 }
6996                     }
6997                 },
6998                 right: {
6999                     type: 'Identifier',
7000                     name: 'y',
7001                     range: [5, 6],
7002                     loc: {
7003                         start: { line: 1, column: 5 },
7004                         end: { line: 1, column: 6 }
7005                     }
7006                 },
7007                 range: [0, 6],
7008                 loc: {
7009                     start: { line: 1, column: 0 },
7010                     end: { line: 1, column: 6 }
7011                 }
7012             },
7013             range: [0, 6],
7014             loc: {
7015                 start: { line: 1, column: 0 },
7016                 end: { line: 1, column: 6 }
7017             }
7018         },
7019
7020         'x >>> y': {
7021             type: 'ExpressionStatement',
7022             expression: {
7023                 type: 'BinaryExpression',
7024                 operator: '>>>',
7025                 left: {
7026                     type: 'Identifier',
7027                     name: 'x',
7028                     range: [0, 1],
7029                     loc: {
7030                         start: { line: 1, column: 0 },
7031                         end: { line: 1, column: 1 }
7032                     }
7033                 },
7034                 right: {
7035                     type: 'Identifier',
7036                     name: 'y',
7037                     range: [6, 7],
7038                     loc: {
7039                         start: { line: 1, column: 6 },
7040                         end: { line: 1, column: 7 }
7041                     }
7042                 },
7043                 range: [0, 7],
7044                 loc: {
7045                     start: { line: 1, column: 0 },
7046                     end: { line: 1, column: 7 }
7047                 }
7048             },
7049             range: [0, 7],
7050             loc: {
7051                 start: { line: 1, column: 0 },
7052                 end: { line: 1, column: 7 }
7053             }
7054         }
7055
7056     },
7057
7058     'Relational Operators': {
7059
7060         'x < y': {
7061             type: 'ExpressionStatement',
7062             expression: {
7063                 type: 'BinaryExpression',
7064                 operator: '<',
7065                 left: {
7066                     type: 'Identifier',
7067                     name: 'x',
7068                     range: [0, 1],
7069                     loc: {
7070                         start: { line: 1, column: 0 },
7071                         end: { line: 1, column: 1 }
7072                     }
7073                 },
7074                 right: {
7075                     type: 'Identifier',
7076                     name: 'y',
7077                     range: [4, 5],
7078                     loc: {
7079                         start: { line: 1, column: 4 },
7080                         end: { line: 1, column: 5 }
7081                     }
7082                 },
7083                 range: [0, 5],
7084                 loc: {
7085                     start: { line: 1, column: 0 },
7086                     end: { line: 1, column: 5 }
7087                 }
7088             },
7089             range: [0, 5],
7090             loc: {
7091                 start: { line: 1, column: 0 },
7092                 end: { line: 1, column: 5 }
7093             }
7094         },
7095
7096         'x > y': {
7097             type: 'ExpressionStatement',
7098             expression: {
7099                 type: 'BinaryExpression',
7100                 operator: '>',
7101                 left: {
7102                     type: 'Identifier',
7103                     name: 'x',
7104                     range: [0, 1],
7105                     loc: {
7106                         start: { line: 1, column: 0 },
7107                         end: { line: 1, column: 1 }
7108                     }
7109                 },
7110                 right: {
7111                     type: 'Identifier',
7112                     name: 'y',
7113                     range: [4, 5],
7114                     loc: {
7115                         start: { line: 1, column: 4 },
7116                         end: { line: 1, column: 5 }
7117                     }
7118                 },
7119                 range: [0, 5],
7120                 loc: {
7121                     start: { line: 1, column: 0 },
7122                     end: { line: 1, column: 5 }
7123                 }
7124             },
7125             range: [0, 5],
7126             loc: {
7127                 start: { line: 1, column: 0 },
7128                 end: { line: 1, column: 5 }
7129             }
7130         },
7131
7132         'x <= y': {
7133             type: 'ExpressionStatement',
7134             expression: {
7135                 type: 'BinaryExpression',
7136                 operator: '<=',
7137                 left: {
7138                     type: 'Identifier',
7139                     name: 'x',
7140                     range: [0, 1],
7141                     loc: {
7142                         start: { line: 1, column: 0 },
7143                         end: { line: 1, column: 1 }
7144                     }
7145                 },
7146                 right: {
7147                     type: 'Identifier',
7148                     name: 'y',
7149                     range: [5, 6],
7150                     loc: {
7151                         start: { line: 1, column: 5 },
7152                         end: { line: 1, column: 6 }
7153                     }
7154                 },
7155                 range: [0, 6],
7156                 loc: {
7157                     start: { line: 1, column: 0 },
7158                     end: { line: 1, column: 6 }
7159                 }
7160             },
7161             range: [0, 6],
7162             loc: {
7163                 start: { line: 1, column: 0 },
7164                 end: { line: 1, column: 6 }
7165             }
7166         },
7167
7168         'x >= y': {
7169             type: 'ExpressionStatement',
7170             expression: {
7171                 type: 'BinaryExpression',
7172                 operator: '>=',
7173                 left: {
7174                     type: 'Identifier',
7175                     name: 'x',
7176                     range: [0, 1],
7177                     loc: {
7178                         start: { line: 1, column: 0 },
7179                         end: { line: 1, column: 1 }
7180                     }
7181                 },
7182                 right: {
7183                     type: 'Identifier',
7184                     name: 'y',
7185                     range: [5, 6],
7186                     loc: {
7187                         start: { line: 1, column: 5 },
7188                         end: { line: 1, column: 6 }
7189                     }
7190                 },
7191                 range: [0, 6],
7192                 loc: {
7193                     start: { line: 1, column: 0 },
7194                     end: { line: 1, column: 6 }
7195                 }
7196             },
7197             range: [0, 6],
7198             loc: {
7199                 start: { line: 1, column: 0 },
7200                 end: { line: 1, column: 6 }
7201             }
7202         },
7203
7204         'x in y': {
7205             type: 'ExpressionStatement',
7206             expression: {
7207                 type: 'BinaryExpression',
7208                 operator: 'in',
7209                 left: {
7210                     type: 'Identifier',
7211                     name: 'x',
7212                     range: [0, 1],
7213                     loc: {
7214                         start: { line: 1, column: 0 },
7215                         end: { line: 1, column: 1 }
7216                     }
7217                 },
7218                 right: {
7219                     type: 'Identifier',
7220                     name: 'y',
7221                     range: [5, 6],
7222                     loc: {
7223                         start: { line: 1, column: 5 },
7224                         end: { line: 1, column: 6 }
7225                     }
7226                 },
7227                 range: [0, 6],
7228                 loc: {
7229                     start: { line: 1, column: 0 },
7230                     end: { line: 1, column: 6 }
7231                 }
7232             },
7233             range: [0, 6],
7234             loc: {
7235                 start: { line: 1, column: 0 },
7236                 end: { line: 1, column: 6 }
7237             }
7238         },
7239
7240         'x instanceof y': {
7241             type: 'ExpressionStatement',
7242             expression: {
7243                 type: 'BinaryExpression',
7244                 operator: 'instanceof',
7245                 left: {
7246                     type: 'Identifier',
7247                     name: 'x',
7248                     range: [0, 1],
7249                     loc: {
7250                         start: { line: 1, column: 0 },
7251                         end: { line: 1, column: 1 }
7252                     }
7253                 },
7254                 right: {
7255                     type: 'Identifier',
7256                     name: 'y',
7257                     range: [13, 14],
7258                     loc: {
7259                         start: { line: 1, column: 13 },
7260                         end: { line: 1, column: 14 }
7261                     }
7262                 },
7263                 range: [0, 14],
7264                 loc: {
7265                     start: { line: 1, column: 0 },
7266                     end: { line: 1, column: 14 }
7267                 }
7268             },
7269             range: [0, 14],
7270             loc: {
7271                 start: { line: 1, column: 0 },
7272                 end: { line: 1, column: 14 }
7273             }
7274         },
7275
7276         'x < y < z': {
7277             type: 'ExpressionStatement',
7278             expression: {
7279                 type: 'BinaryExpression',
7280                 operator: '<',
7281                 left: {
7282                     type: 'BinaryExpression',
7283                     operator: '<',
7284                     left: {
7285                         type: 'Identifier',
7286                         name: 'x',
7287                         range: [0, 1],
7288                         loc: {
7289                             start: { line: 1, column: 0 },
7290                             end: { line: 1, column: 1 }
7291                         }
7292                     },
7293                     right: {
7294                         type: 'Identifier',
7295                         name: 'y',
7296                         range: [4, 5],
7297                         loc: {
7298                             start: { line: 1, column: 4 },
7299                             end: { line: 1, column: 5 }
7300                         }
7301                     },
7302                     range: [0, 5],
7303                     loc: {
7304                         start: { line: 1, column: 0 },
7305                         end: { line: 1, column: 5 }
7306                     }
7307                 },
7308                 right: {
7309                     type: 'Identifier',
7310                     name: 'z',
7311                     range: [8, 9],
7312                     loc: {
7313                         start: { line: 1, column: 8 },
7314                         end: { line: 1, column: 9 }
7315                     }
7316                 },
7317                 range: [0, 9],
7318                 loc: {
7319                     start: { line: 1, column: 0 },
7320                     end: { line: 1, column: 9 }
7321                 }
7322             },
7323             range: [0, 9],
7324             loc: {
7325                 start: { line: 1, column: 0 },
7326                 end: { line: 1, column: 9 }
7327             }
7328         }
7329
7330     },
7331
7332     'Equality Operators': {
7333
7334         'x == y': {
7335             type: 'ExpressionStatement',
7336             expression: {
7337                 type: 'BinaryExpression',
7338                 operator: '==',
7339                 left: {
7340                     type: 'Identifier',
7341                     name: 'x',
7342                     range: [0, 1],
7343                     loc: {
7344                         start: { line: 1, column: 0 },
7345                         end: { line: 1, column: 1 }
7346                     }
7347                 },
7348                 right: {
7349                     type: 'Identifier',
7350                     name: 'y',
7351                     range: [5, 6],
7352                     loc: {
7353                         start: { line: 1, column: 5 },
7354                         end: { line: 1, column: 6 }
7355                     }
7356                 },
7357                 range: [0, 6],
7358                 loc: {
7359                     start: { line: 1, column: 0 },
7360                     end: { line: 1, column: 6 }
7361                 }
7362             },
7363             range: [0, 6],
7364             loc: {
7365                 start: { line: 1, column: 0 },
7366                 end: { line: 1, column: 6 }
7367             }
7368         },
7369
7370         'x != y': {
7371             type: 'ExpressionStatement',
7372             expression: {
7373                 type: 'BinaryExpression',
7374                 operator: '!=',
7375                 left: {
7376                     type: 'Identifier',
7377                     name: 'x',
7378                     range: [0, 1],
7379                     loc: {
7380                         start: { line: 1, column: 0 },
7381                         end: { line: 1, column: 1 }
7382                     }
7383                 },
7384                 right: {
7385                     type: 'Identifier',
7386                     name: 'y',
7387                     range: [5, 6],
7388                     loc: {
7389                         start: { line: 1, column: 5 },
7390                         end: { line: 1, column: 6 }
7391                     }
7392                 },
7393                 range: [0, 6],
7394                 loc: {
7395                     start: { line: 1, column: 0 },
7396                     end: { line: 1, column: 6 }
7397                 }
7398             },
7399             range: [0, 6],
7400             loc: {
7401                 start: { line: 1, column: 0 },
7402                 end: { line: 1, column: 6 }
7403             }
7404         },
7405
7406         'x === y': {
7407             type: 'ExpressionStatement',
7408             expression: {
7409                 type: 'BinaryExpression',
7410                 operator: '===',
7411                 left: {
7412                     type: 'Identifier',
7413                     name: 'x',
7414                     range: [0, 1],
7415                     loc: {
7416                         start: { line: 1, column: 0 },
7417                         end: { line: 1, column: 1 }
7418                     }
7419                 },
7420                 right: {
7421                     type: 'Identifier',
7422                     name: 'y',
7423                     range: [6, 7],
7424                     loc: {
7425                         start: { line: 1, column: 6 },
7426                         end: { line: 1, column: 7 }
7427                     }
7428                 },
7429                 range: [0, 7],
7430                 loc: {
7431                     start: { line: 1, column: 0 },
7432                     end: { line: 1, column: 7 }
7433                 }
7434             },
7435             range: [0, 7],
7436             loc: {
7437                 start: { line: 1, column: 0 },
7438                 end: { line: 1, column: 7 }
7439             }
7440         },
7441
7442         'x !== y': {
7443             type: 'ExpressionStatement',
7444             expression: {
7445                 type: 'BinaryExpression',
7446                 operator: '!==',
7447                 left: {
7448                     type: 'Identifier',
7449                     name: 'x',
7450                     range: [0, 1],
7451                     loc: {
7452                         start: { line: 1, column: 0 },
7453                         end: { line: 1, column: 1 }
7454                     }
7455                 },
7456                 right: {
7457                     type: 'Identifier',
7458                     name: 'y',
7459                     range: [6, 7],
7460                     loc: {
7461                         start: { line: 1, column: 6 },
7462                         end: { line: 1, column: 7 }
7463                     }
7464                 },
7465                 range: [0, 7],
7466                 loc: {
7467                     start: { line: 1, column: 0 },
7468                     end: { line: 1, column: 7 }
7469                 }
7470             },
7471             range: [0, 7],
7472             loc: {
7473                 start: { line: 1, column: 0 },
7474                 end: { line: 1, column: 7 }
7475             }
7476         }
7477
7478     },
7479
7480     'Binary Bitwise Operators': {
7481
7482         'x & y': {
7483             type: 'ExpressionStatement',
7484             expression: {
7485                 type: 'BinaryExpression',
7486                 operator: '&',
7487                 left: {
7488                     type: 'Identifier',
7489                     name: 'x',
7490                     range: [0, 1],
7491                     loc: {
7492                         start: { line: 1, column: 0 },
7493                         end: { line: 1, column: 1 }
7494                     }
7495                 },
7496                 right: {
7497                     type: 'Identifier',
7498                     name: 'y',
7499                     range: [4, 5],
7500                     loc: {
7501                         start: { line: 1, column: 4 },
7502                         end: { line: 1, column: 5 }
7503                     }
7504                 },
7505                 range: [0, 5],
7506                 loc: {
7507                     start: { line: 1, column: 0 },
7508                     end: { line: 1, column: 5 }
7509                 }
7510             },
7511             range: [0, 5],
7512             loc: {
7513                 start: { line: 1, column: 0 },
7514                 end: { line: 1, column: 5 }
7515             }
7516         },
7517
7518         'x ^ y': {
7519             type: 'ExpressionStatement',
7520             expression: {
7521                 type: 'BinaryExpression',
7522                 operator: '^',
7523                 left: {
7524                     type: 'Identifier',
7525                     name: 'x',
7526                     range: [0, 1],
7527                     loc: {
7528                         start: { line: 1, column: 0 },
7529                         end: { line: 1, column: 1 }
7530                     }
7531                 },
7532                 right: {
7533                     type: 'Identifier',
7534                     name: 'y',
7535                     range: [4, 5],
7536                     loc: {
7537                         start: { line: 1, column: 4 },
7538                         end: { line: 1, column: 5 }
7539                     }
7540                 },
7541                 range: [0, 5],
7542                 loc: {
7543                     start: { line: 1, column: 0 },
7544                     end: { line: 1, column: 5 }
7545                 }
7546             },
7547             range: [0, 5],
7548             loc: {
7549                 start: { line: 1, column: 0 },
7550                 end: { line: 1, column: 5 }
7551             }
7552         },
7553
7554         'x | y': {
7555             type: 'ExpressionStatement',
7556             expression: {
7557                 type: 'BinaryExpression',
7558                 operator: '|',
7559                 left: {
7560                     type: 'Identifier',
7561                     name: 'x',
7562                     range: [0, 1],
7563                     loc: {
7564                         start: { line: 1, column: 0 },
7565                         end: { line: 1, column: 1 }
7566                     }
7567                 },
7568                 right: {
7569                     type: 'Identifier',
7570                     name: 'y',
7571                     range: [4, 5],
7572                     loc: {
7573                         start: { line: 1, column: 4 },
7574                         end: { line: 1, column: 5 }
7575                     }
7576                 },
7577                 range: [0, 5],
7578                 loc: {
7579                     start: { line: 1, column: 0 },
7580                     end: { line: 1, column: 5 }
7581                 }
7582             },
7583             range: [0, 5],
7584             loc: {
7585                 start: { line: 1, column: 0 },
7586                 end: { line: 1, column: 5 }
7587             }
7588         }
7589
7590     },
7591
7592     'Binary Expressions': {
7593
7594         'x + y + z': {
7595             type: 'ExpressionStatement',
7596             expression: {
7597                 type: 'BinaryExpression',
7598                 operator: '+',
7599                 left: {
7600                     type: 'BinaryExpression',
7601                     operator: '+',
7602                     left: {
7603                         type: 'Identifier',
7604                         name: 'x',
7605                         range: [0, 1],
7606                         loc: {
7607                             start: { line: 1, column: 0 },
7608                             end: { line: 1, column: 1 }
7609                         }
7610                     },
7611                     right: {
7612                         type: 'Identifier',
7613                         name: 'y',
7614                         range: [4, 5],
7615                         loc: {
7616                             start: { line: 1, column: 4 },
7617                             end: { line: 1, column: 5 }
7618                         }
7619                     },
7620                     range: [0, 5],
7621                     loc: {
7622                         start: { line: 1, column: 0 },
7623                         end: { line: 1, column: 5 }
7624                     }
7625                 },
7626                 right: {
7627                     type: 'Identifier',
7628                     name: 'z',
7629                     range: [8, 9],
7630                     loc: {
7631                         start: { line: 1, column: 8 },
7632                         end: { line: 1, column: 9 }
7633                     }
7634                 },
7635                 range: [0, 9],
7636                 loc: {
7637                     start: { line: 1, column: 0 },
7638                     end: { line: 1, column: 9 }
7639                 }
7640             },
7641             range: [0, 9],
7642             loc: {
7643                 start: { line: 1, column: 0 },
7644                 end: { line: 1, column: 9 }
7645             }
7646         },
7647
7648         'x - y + z': {
7649             type: 'ExpressionStatement',
7650             expression: {
7651                 type: 'BinaryExpression',
7652                 operator: '+',
7653                 left: {
7654                     type: 'BinaryExpression',
7655                     operator: '-',
7656                     left: {
7657                         type: 'Identifier',
7658                         name: 'x',
7659                         range: [0, 1],
7660                         loc: {
7661                             start: { line: 1, column: 0 },
7662                             end: { line: 1, column: 1 }
7663                         }
7664                     },
7665                     right: {
7666                         type: 'Identifier',
7667                         name: 'y',
7668                         range: [4, 5],
7669                         loc: {
7670                             start: { line: 1, column: 4 },
7671                             end: { line: 1, column: 5 }
7672                         }
7673                     },
7674                     range: [0, 5],
7675                     loc: {
7676                         start: { line: 1, column: 0 },
7677                         end: { line: 1, column: 5 }
7678                     }
7679                 },
7680                 right: {
7681                     type: 'Identifier',
7682                     name: 'z',
7683                     range: [8, 9],
7684                     loc: {
7685                         start: { line: 1, column: 8 },
7686                         end: { line: 1, column: 9 }
7687                     }
7688                 },
7689                 range: [0, 9],
7690                 loc: {
7691                     start: { line: 1, column: 0 },
7692                     end: { line: 1, column: 9 }
7693                 }
7694             },
7695             range: [0, 9],
7696             loc: {
7697                 start: { line: 1, column: 0 },
7698                 end: { line: 1, column: 9 }
7699             }
7700         },
7701
7702         'x + y - z': {
7703             type: 'ExpressionStatement',
7704             expression: {
7705                 type: 'BinaryExpression',
7706                 operator: '-',
7707                 left: {
7708                     type: 'BinaryExpression',
7709                     operator: '+',
7710                     left: {
7711                         type: 'Identifier',
7712                         name: 'x',
7713                         range: [0, 1],
7714                         loc: {
7715                             start: { line: 1, column: 0 },
7716                             end: { line: 1, column: 1 }
7717                         }
7718                     },
7719                     right: {
7720                         type: 'Identifier',
7721                         name: 'y',
7722                         range: [4, 5],
7723                         loc: {
7724                             start: { line: 1, column: 4 },
7725                             end: { line: 1, column: 5 }
7726                         }
7727                     },
7728                     range: [0, 5],
7729                     loc: {
7730                         start: { line: 1, column: 0 },
7731                         end: { line: 1, column: 5 }
7732                     }
7733                 },
7734                 right: {
7735                     type: 'Identifier',
7736                     name: 'z',
7737                     range: [8, 9],
7738                     loc: {
7739                         start: { line: 1, column: 8 },
7740                         end: { line: 1, column: 9 }
7741                     }
7742                 },
7743                 range: [0, 9],
7744                 loc: {
7745                     start: { line: 1, column: 0 },
7746                     end: { line: 1, column: 9 }
7747                 }
7748             },
7749             range: [0, 9],
7750             loc: {
7751                 start: { line: 1, column: 0 },
7752                 end: { line: 1, column: 9 }
7753             }
7754         },
7755
7756         'x - y - z': {
7757             type: 'ExpressionStatement',
7758             expression: {
7759                 type: 'BinaryExpression',
7760                 operator: '-',
7761                 left: {
7762                     type: 'BinaryExpression',
7763                     operator: '-',
7764                     left: {
7765                         type: 'Identifier',
7766                         name: 'x',
7767                         range: [0, 1],
7768                         loc: {
7769                             start: { line: 1, column: 0 },
7770                             end: { line: 1, column: 1 }
7771                         }
7772                     },
7773                     right: {
7774                         type: 'Identifier',
7775                         name: 'y',
7776                         range: [4, 5],
7777                         loc: {
7778                             start: { line: 1, column: 4 },
7779                             end: { line: 1, column: 5 }
7780                         }
7781                     },
7782                     range: [0, 5],
7783                     loc: {
7784                         start: { line: 1, column: 0 },
7785                         end: { line: 1, column: 5 }
7786                     }
7787                 },
7788                 right: {
7789                     type: 'Identifier',
7790                     name: 'z',
7791                     range: [8, 9],
7792                     loc: {
7793                         start: { line: 1, column: 8 },
7794                         end: { line: 1, column: 9 }
7795                     }
7796                 },
7797                 range: [0, 9],
7798                 loc: {
7799                     start: { line: 1, column: 0 },
7800                     end: { line: 1, column: 9 }
7801                 }
7802             },
7803             range: [0, 9],
7804             loc: {
7805                 start: { line: 1, column: 0 },
7806                 end: { line: 1, column: 9 }
7807             }
7808         },
7809
7810         'x + y * z': {
7811             type: 'ExpressionStatement',
7812             expression: {
7813                 type: 'BinaryExpression',
7814                 operator: '+',
7815                 left: {
7816                     type: 'Identifier',
7817                     name: 'x',
7818                     range: [0, 1],
7819                     loc: {
7820                         start: { line: 1, column: 0 },
7821                         end: { line: 1, column: 1 }
7822                     }
7823                 },
7824                 right: {
7825                     type: 'BinaryExpression',
7826                     operator: '*',
7827                     left: {
7828                         type: 'Identifier',
7829                         name: 'y',
7830                         range: [4, 5],
7831                         loc: {
7832                             start: { line: 1, column: 4 },
7833                             end: { line: 1, column: 5 }
7834                         }
7835                     },
7836                     right: {
7837                         type: 'Identifier',
7838                         name: 'z',
7839                         range: [8, 9],
7840                         loc: {
7841                             start: { line: 1, column: 8 },
7842                             end: { line: 1, column: 9 }
7843                         }
7844                     },
7845                     range: [4, 9],
7846                     loc: {
7847                         start: { line: 1, column: 4 },
7848                         end: { line: 1, column: 9 }
7849                     }
7850                 },
7851                 range: [0, 9],
7852                 loc: {
7853                     start: { line: 1, column: 0 },
7854                     end: { line: 1, column: 9 }
7855                 }
7856             },
7857             range: [0, 9],
7858             loc: {
7859                 start: { line: 1, column: 0 },
7860                 end: { line: 1, column: 9 }
7861             }
7862         },
7863
7864         'x + y / z': {
7865             type: 'ExpressionStatement',
7866             expression: {
7867                 type: 'BinaryExpression',
7868                 operator: '+',
7869                 left: {
7870                     type: 'Identifier',
7871                     name: 'x',
7872                     range: [0, 1],
7873                     loc: {
7874                         start: { line: 1, column: 0 },
7875                         end: { line: 1, column: 1 }
7876                     }
7877                 },
7878                 right: {
7879                     type: 'BinaryExpression',
7880                     operator: '/',
7881                     left: {
7882                         type: 'Identifier',
7883                         name: 'y',
7884                         range: [4, 5],
7885                         loc: {
7886                             start: { line: 1, column: 4 },
7887                             end: { line: 1, column: 5 }
7888                         }
7889                     },
7890                     right: {
7891                         type: 'Identifier',
7892                         name: 'z',
7893                         range: [8, 9],
7894                         loc: {
7895                             start: { line: 1, column: 8 },
7896                             end: { line: 1, column: 9 }
7897                         }
7898                     },
7899                     range: [4, 9],
7900                     loc: {
7901                         start: { line: 1, column: 4 },
7902                         end: { line: 1, column: 9 }
7903                     }
7904                 },
7905                 range: [0, 9],
7906                 loc: {
7907                     start: { line: 1, column: 0 },
7908                     end: { line: 1, column: 9 }
7909                 }
7910             },
7911             range: [0, 9],
7912             loc: {
7913                 start: { line: 1, column: 0 },
7914                 end: { line: 1, column: 9 }
7915             }
7916         },
7917
7918         'x - y % z': {
7919             type: 'ExpressionStatement',
7920             expression: {
7921                 type: 'BinaryExpression',
7922                 operator: '-',
7923                 left: {
7924                     type: 'Identifier',
7925                     name: 'x',
7926                     range: [0, 1],
7927                     loc: {
7928                         start: { line: 1, column: 0 },
7929                         end: { line: 1, column: 1 }
7930                     }
7931                 },
7932                 right: {
7933                     type: 'BinaryExpression',
7934                     operator: '%',
7935                     left: {
7936                         type: 'Identifier',
7937                         name: 'y',
7938                         range: [4, 5],
7939                         loc: {
7940                             start: { line: 1, column: 4 },
7941                             end: { line: 1, column: 5 }
7942                         }
7943                     },
7944                     right: {
7945                         type: 'Identifier',
7946                         name: 'z',
7947                         range: [8, 9],
7948                         loc: {
7949                             start: { line: 1, column: 8 },
7950                             end: { line: 1, column: 9 }
7951                         }
7952                     },
7953                     range: [4, 9],
7954                     loc: {
7955                         start: { line: 1, column: 4 },
7956                         end: { line: 1, column: 9 }
7957                     }
7958                 },
7959                 range: [0, 9],
7960                 loc: {
7961                     start: { line: 1, column: 0 },
7962                     end: { line: 1, column: 9 }
7963                 }
7964             },
7965             range: [0, 9],
7966             loc: {
7967                 start: { line: 1, column: 0 },
7968                 end: { line: 1, column: 9 }
7969             }
7970         },
7971
7972         'x * y * z': {
7973             type: 'ExpressionStatement',
7974             expression: {
7975                 type: 'BinaryExpression',
7976                 operator: '*',
7977                 left: {
7978                     type: 'BinaryExpression',
7979                     operator: '*',
7980                     left: {
7981                         type: 'Identifier',
7982                         name: 'x',
7983                         range: [0, 1],
7984                         loc: {
7985                             start: { line: 1, column: 0 },
7986                             end: { line: 1, column: 1 }
7987                         }
7988                     },
7989                     right: {
7990                         type: 'Identifier',
7991                         name: 'y',
7992                         range: [4, 5],
7993                         loc: {
7994                             start: { line: 1, column: 4 },
7995                             end: { line: 1, column: 5 }
7996                         }
7997                     },
7998                     range: [0, 5],
7999                     loc: {
8000                         start: { line: 1, column: 0 },
8001                         end: { line: 1, column: 5 }
8002                     }
8003                 },
8004                 right: {
8005                     type: 'Identifier',
8006                     name: 'z',
8007                     range: [8, 9],
8008                     loc: {
8009                         start: { line: 1, column: 8 },
8010                         end: { line: 1, column: 9 }
8011                     }
8012                 },
8013                 range: [0, 9],
8014                 loc: {
8015                     start: { line: 1, column: 0 },
8016                     end: { line: 1, column: 9 }
8017                 }
8018             },
8019             range: [0, 9],
8020             loc: {
8021                 start: { line: 1, column: 0 },
8022                 end: { line: 1, column: 9 }
8023             }
8024         },
8025
8026         'x * y / z': {
8027             type: 'ExpressionStatement',
8028             expression: {
8029                 type: 'BinaryExpression',
8030                 operator: '/',
8031                 left: {
8032                     type: 'BinaryExpression',
8033                     operator: '*',
8034                     left: {
8035                         type: 'Identifier',
8036                         name: 'x',
8037                         range: [0, 1],
8038                         loc: {
8039                             start: { line: 1, column: 0 },
8040                             end: { line: 1, column: 1 }
8041                         }
8042                     },
8043                     right: {
8044                         type: 'Identifier',
8045                         name: 'y',
8046                         range: [4, 5],
8047                         loc: {
8048                             start: { line: 1, column: 4 },
8049                             end: { line: 1, column: 5 }
8050                         }
8051                     },
8052                     range: [0, 5],
8053                     loc: {
8054                         start: { line: 1, column: 0 },
8055                         end: { line: 1, column: 5 }
8056                     }
8057                 },
8058                 right: {
8059                     type: 'Identifier',
8060                     name: 'z',
8061                     range: [8, 9],
8062                     loc: {
8063                         start: { line: 1, column: 8 },
8064                         end: { line: 1, column: 9 }
8065                     }
8066                 },
8067                 range: [0, 9],
8068                 loc: {
8069                     start: { line: 1, column: 0 },
8070                     end: { line: 1, column: 9 }
8071                 }
8072             },
8073             range: [0, 9],
8074             loc: {
8075                 start: { line: 1, column: 0 },
8076                 end: { line: 1, column: 9 }
8077             }
8078         },
8079
8080         'x * y % z': {
8081             type: 'ExpressionStatement',
8082             expression: {
8083                 type: 'BinaryExpression',
8084                 operator: '%',
8085                 left: {
8086                     type: 'BinaryExpression',
8087                     operator: '*',
8088                     left: {
8089                         type: 'Identifier',
8090                         name: 'x',
8091                         range: [0, 1],
8092                         loc: {
8093                             start: { line: 1, column: 0 },
8094                             end: { line: 1, column: 1 }
8095                         }
8096                     },
8097                     right: {
8098                         type: 'Identifier',
8099                         name: 'y',
8100                         range: [4, 5],
8101                         loc: {
8102                             start: { line: 1, column: 4 },
8103                             end: { line: 1, column: 5 }
8104                         }
8105                     },
8106                     range: [0, 5],
8107                     loc: {
8108                         start: { line: 1, column: 0 },
8109                         end: { line: 1, column: 5 }
8110                     }
8111                 },
8112                 right: {
8113                     type: 'Identifier',
8114                     name: 'z',
8115                     range: [8, 9],
8116                     loc: {
8117                         start: { line: 1, column: 8 },
8118                         end: { line: 1, column: 9 }
8119                     }
8120                 },
8121                 range: [0, 9],
8122                 loc: {
8123                     start: { line: 1, column: 0 },
8124                     end: { line: 1, column: 9 }
8125                 }
8126             },
8127             range: [0, 9],
8128             loc: {
8129                 start: { line: 1, column: 0 },
8130                 end: { line: 1, column: 9 }
8131             }
8132         },
8133
8134         'x % y * z': {
8135             type: 'ExpressionStatement',
8136             expression: {
8137                 type: 'BinaryExpression',
8138                 operator: '*',
8139                 left: {
8140                     type: 'BinaryExpression',
8141                     operator: '%',
8142                     left: {
8143                         type: 'Identifier',
8144                         name: 'x',
8145                         range: [0, 1],
8146                         loc: {
8147                             start: { line: 1, column: 0 },
8148                             end: { line: 1, column: 1 }
8149                         }
8150                     },
8151                     right: {
8152                         type: 'Identifier',
8153                         name: 'y',
8154                         range: [4, 5],
8155                         loc: {
8156                             start: { line: 1, column: 4 },
8157                             end: { line: 1, column: 5 }
8158                         }
8159                     },
8160                     range: [0, 5],
8161                     loc: {
8162                         start: { line: 1, column: 0 },
8163                         end: { line: 1, column: 5 }
8164                     }
8165                 },
8166                 right: {
8167                     type: 'Identifier',
8168                     name: 'z',
8169                     range: [8, 9],
8170                     loc: {
8171                         start: { line: 1, column: 8 },
8172                         end: { line: 1, column: 9 }
8173                     }
8174                 },
8175                 range: [0, 9],
8176                 loc: {
8177                     start: { line: 1, column: 0 },
8178                     end: { line: 1, column: 9 }
8179                 }
8180             },
8181             range: [0, 9],
8182             loc: {
8183                 start: { line: 1, column: 0 },
8184                 end: { line: 1, column: 9 }
8185             }
8186         },
8187
8188         'x << y << z': {
8189             type: 'ExpressionStatement',
8190             expression: {
8191                 type: 'BinaryExpression',
8192                 operator: '<<',
8193                 left: {
8194                     type: 'BinaryExpression',
8195                     operator: '<<',
8196                     left: {
8197                         type: 'Identifier',
8198                         name: 'x',
8199                         range: [0, 1],
8200                         loc: {
8201                             start: { line: 1, column: 0 },
8202                             end: { line: 1, column: 1 }
8203                         }
8204                     },
8205                     right: {
8206                         type: 'Identifier',
8207                         name: 'y',
8208                         range: [5, 6],
8209                         loc: {
8210                             start: { line: 1, column: 5 },
8211                             end: { line: 1, column: 6 }
8212                         }
8213                     },
8214                     range: [0, 6],
8215                     loc: {
8216                         start: { line: 1, column: 0 },
8217                         end: { line: 1, column: 6 }
8218                     }
8219                 },
8220                 right: {
8221                     type: 'Identifier',
8222                     name: 'z',
8223                     range: [10, 11],
8224                     loc: {
8225                         start: { line: 1, column: 10 },
8226                         end: { line: 1, column: 11 }
8227                     }
8228                 },
8229                 range: [0, 11],
8230                 loc: {
8231                     start: { line: 1, column: 0 },
8232                     end: { line: 1, column: 11 }
8233                 }
8234             },
8235             range: [0, 11],
8236             loc: {
8237                 start: { line: 1, column: 0 },
8238                 end: { line: 1, column: 11 }
8239             }
8240         },
8241
8242         'x | y | z': {
8243             type: 'ExpressionStatement',
8244             expression: {
8245                 type: 'BinaryExpression',
8246                 operator: '|',
8247                 left: {
8248                     type: 'BinaryExpression',
8249                     operator: '|',
8250                     left: {
8251                         type: 'Identifier',
8252                         name: 'x',
8253                         range: [0, 1],
8254                         loc: {
8255                             start: { line: 1, column: 0 },
8256                             end: { line: 1, column: 1 }
8257                         }
8258                     },
8259                     right: {
8260                         type: 'Identifier',
8261                         name: 'y',
8262                         range: [4, 5],
8263                         loc: {
8264                             start: { line: 1, column: 4 },
8265                             end: { line: 1, column: 5 }
8266                         }
8267                     },
8268                     range: [0, 5],
8269                     loc: {
8270                         start: { line: 1, column: 0 },
8271                         end: { line: 1, column: 5 }
8272                     }
8273                 },
8274                 right: {
8275                     type: 'Identifier',
8276                     name: 'z',
8277                     range: [8, 9],
8278                     loc: {
8279                         start: { line: 1, column: 8 },
8280                         end: { line: 1, column: 9 }
8281                     }
8282                 },
8283                 range: [0, 9],
8284                 loc: {
8285                     start: { line: 1, column: 0 },
8286                     end: { line: 1, column: 9 }
8287                 }
8288             },
8289             range: [0, 9],
8290             loc: {
8291                 start: { line: 1, column: 0 },
8292                 end: { line: 1, column: 9 }
8293             }
8294         },
8295
8296         'x & y & z': {
8297             type: 'ExpressionStatement',
8298             expression: {
8299                 type: 'BinaryExpression',
8300                 operator: '&',
8301                 left: {
8302                     type: 'BinaryExpression',
8303                     operator: '&',
8304                     left: {
8305                         type: 'Identifier',
8306                         name: 'x',
8307                         range: [0, 1],
8308                         loc: {
8309                             start: { line: 1, column: 0 },
8310                             end: { line: 1, column: 1 }
8311                         }
8312                     },
8313                     right: {
8314                         type: 'Identifier',
8315                         name: 'y',
8316                         range: [4, 5],
8317                         loc: {
8318                             start: { line: 1, column: 4 },
8319                             end: { line: 1, column: 5 }
8320                         }
8321                     },
8322                     range: [0, 5],
8323                     loc: {
8324                         start: { line: 1, column: 0 },
8325                         end: { line: 1, column: 5 }
8326                     }
8327                 },
8328                 right: {
8329                     type: 'Identifier',
8330                     name: 'z',
8331                     range: [8, 9],
8332                     loc: {
8333                         start: { line: 1, column: 8 },
8334                         end: { line: 1, column: 9 }
8335                     }
8336                 },
8337                 range: [0, 9],
8338                 loc: {
8339                     start: { line: 1, column: 0 },
8340                     end: { line: 1, column: 9 }
8341                 }
8342             },
8343             range: [0, 9],
8344             loc: {
8345                 start: { line: 1, column: 0 },
8346                 end: { line: 1, column: 9 }
8347             }
8348         },
8349
8350         'x ^ y ^ z': {
8351             type: 'ExpressionStatement',
8352             expression: {
8353                 type: 'BinaryExpression',
8354                 operator: '^',
8355                 left: {
8356                     type: 'BinaryExpression',
8357                     operator: '^',
8358                     left: {
8359                         type: 'Identifier',
8360                         name: 'x',
8361                         range: [0, 1],
8362                         loc: {
8363                             start: { line: 1, column: 0 },
8364                             end: { line: 1, column: 1 }
8365                         }
8366                     },
8367                     right: {
8368                         type: 'Identifier',
8369                         name: 'y',
8370                         range: [4, 5],
8371                         loc: {
8372                             start: { line: 1, column: 4 },
8373                             end: { line: 1, column: 5 }
8374                         }
8375                     },
8376                     range: [0, 5],
8377                     loc: {
8378                         start: { line: 1, column: 0 },
8379                         end: { line: 1, column: 5 }
8380                     }
8381                 },
8382                 right: {
8383                     type: 'Identifier',
8384                     name: 'z',
8385                     range: [8, 9],
8386                     loc: {
8387                         start: { line: 1, column: 8 },
8388                         end: { line: 1, column: 9 }
8389                     }
8390                 },
8391                 range: [0, 9],
8392                 loc: {
8393                     start: { line: 1, column: 0 },
8394                     end: { line: 1, column: 9 }
8395                 }
8396             },
8397             range: [0, 9],
8398             loc: {
8399                 start: { line: 1, column: 0 },
8400                 end: { line: 1, column: 9 }
8401             }
8402         },
8403
8404         'x & y | z': {
8405             type: 'ExpressionStatement',
8406             expression: {
8407                 type: 'BinaryExpression',
8408                 operator: '|',
8409                 left: {
8410                     type: 'BinaryExpression',
8411                     operator: '&',
8412                     left: {
8413                         type: 'Identifier',
8414                         name: 'x',
8415                         range: [0, 1],
8416                         loc: {
8417                             start: { line: 1, column: 0 },
8418                             end: { line: 1, column: 1 }
8419                         }
8420                     },
8421                     right: {
8422                         type: 'Identifier',
8423                         name: 'y',
8424                         range: [4, 5],
8425                         loc: {
8426                             start: { line: 1, column: 4 },
8427                             end: { line: 1, column: 5 }
8428                         }
8429                     },
8430                     range: [0, 5],
8431                     loc: {
8432                         start: { line: 1, column: 0 },
8433                         end: { line: 1, column: 5 }
8434                     }
8435                 },
8436                 right: {
8437                     type: 'Identifier',
8438                     name: 'z',
8439                     range: [8, 9],
8440                     loc: {
8441                         start: { line: 1, column: 8 },
8442                         end: { line: 1, column: 9 }
8443                     }
8444                 },
8445                 range: [0, 9],
8446                 loc: {
8447                     start: { line: 1, column: 0 },
8448                     end: { line: 1, column: 9 }
8449                 }
8450             },
8451             range: [0, 9],
8452             loc: {
8453                 start: { line: 1, column: 0 },
8454                 end: { line: 1, column: 9 }
8455             }
8456         },
8457
8458         'x | y ^ z': {
8459             type: 'ExpressionStatement',
8460             expression: {
8461                 type: 'BinaryExpression',
8462                 operator: '|',
8463                 left: {
8464                     type: 'Identifier',
8465                     name: 'x',
8466                     range: [0, 1],
8467                     loc: {
8468                         start: { line: 1, column: 0 },
8469                         end: { line: 1, column: 1 }
8470                     }
8471                 },
8472                 right: {
8473                     type: 'BinaryExpression',
8474                     operator: '^',
8475                     left: {
8476                         type: 'Identifier',
8477                         name: 'y',
8478                         range: [4, 5],
8479                         loc: {
8480                             start: { line: 1, column: 4 },
8481                             end: { line: 1, column: 5 }
8482                         }
8483                     },
8484                     right: {
8485                         type: 'Identifier',
8486                         name: 'z',
8487                         range: [8, 9],
8488                         loc: {
8489                             start: { line: 1, column: 8 },
8490                             end: { line: 1, column: 9 }
8491                         }
8492                     },
8493                     range: [4, 9],
8494                     loc: {
8495                         start: { line: 1, column: 4 },
8496                         end: { line: 1, column: 9 }
8497                     }
8498                 },
8499                 range: [0, 9],
8500                 loc: {
8501                     start: { line: 1, column: 0 },
8502                     end: { line: 1, column: 9 }
8503                 }
8504             },
8505             range: [0, 9],
8506             loc: {
8507                 start: { line: 1, column: 0 },
8508                 end: { line: 1, column: 9 }
8509             }
8510         },
8511
8512         'x | y & z': {
8513             type: 'ExpressionStatement',
8514             expression: {
8515                 type: 'BinaryExpression',
8516                 operator: '|',
8517                 left: {
8518                     type: 'Identifier',
8519                     name: 'x',
8520                     range: [0, 1],
8521                     loc: {
8522                         start: { line: 1, column: 0 },
8523                         end: { line: 1, column: 1 }
8524                     }
8525                 },
8526                 right: {
8527                     type: 'BinaryExpression',
8528                     operator: '&',
8529                     left: {
8530                         type: 'Identifier',
8531                         name: 'y',
8532                         range: [4, 5],
8533                         loc: {
8534                             start: { line: 1, column: 4 },
8535                             end: { line: 1, column: 5 }
8536                         }
8537                     },
8538                     right: {
8539                         type: 'Identifier',
8540                         name: 'z',
8541                         range: [8, 9],
8542                         loc: {
8543                             start: { line: 1, column: 8 },
8544                             end: { line: 1, column: 9 }
8545                         }
8546                     },
8547                     range: [4, 9],
8548                     loc: {
8549                         start: { line: 1, column: 4 },
8550                         end: { line: 1, column: 9 }
8551                     }
8552                 },
8553                 range: [0, 9],
8554                 loc: {
8555                     start: { line: 1, column: 0 },
8556                     end: { line: 1, column: 9 }
8557                 }
8558             },
8559             range: [0, 9],
8560             loc: {
8561                 start: { line: 1, column: 0 },
8562                 end: { line: 1, column: 9 }
8563             }
8564         }
8565
8566     },
8567
8568     'Binary Logical Operators': {
8569
8570         'x || y': {
8571             type: 'ExpressionStatement',
8572             expression: {
8573                 type: 'LogicalExpression',
8574                 operator: '||',
8575                 left: {
8576                     type: 'Identifier',
8577                     name: 'x',
8578                     range: [0, 1],
8579                     loc: {
8580                         start: { line: 1, column: 0 },
8581                         end: { line: 1, column: 1 }
8582                     }
8583                 },
8584                 right: {
8585                     type: 'Identifier',
8586                     name: 'y',
8587                     range: [5, 6],
8588                     loc: {
8589                         start: { line: 1, column: 5 },
8590                         end: { line: 1, column: 6 }
8591                     }
8592                 },
8593                 range: [0, 6],
8594                 loc: {
8595                     start: { line: 1, column: 0 },
8596                     end: { line: 1, column: 6 }
8597                 }
8598             },
8599             range: [0, 6],
8600             loc: {
8601                 start: { line: 1, column: 0 },
8602                 end: { line: 1, column: 6 }
8603             }
8604         },
8605
8606         'x && y': {
8607             type: 'ExpressionStatement',
8608             expression: {
8609                 type: 'LogicalExpression',
8610                 operator: '&&',
8611                 left: {
8612                     type: 'Identifier',
8613                     name: 'x',
8614                     range: [0, 1],
8615                     loc: {
8616                         start: { line: 1, column: 0 },
8617                         end: { line: 1, column: 1 }
8618                     }
8619                 },
8620                 right: {
8621                     type: 'Identifier',
8622                     name: 'y',
8623                     range: [5, 6],
8624                     loc: {
8625                         start: { line: 1, column: 5 },
8626                         end: { line: 1, column: 6 }
8627                     }
8628                 },
8629                 range: [0, 6],
8630                 loc: {
8631                     start: { line: 1, column: 0 },
8632                     end: { line: 1, column: 6 }
8633                 }
8634             },
8635             range: [0, 6],
8636             loc: {
8637                 start: { line: 1, column: 0 },
8638                 end: { line: 1, column: 6 }
8639             }
8640         },
8641
8642         'x || y || z': {
8643             type: 'ExpressionStatement',
8644             expression: {
8645                 type: 'LogicalExpression',
8646                 operator: '||',
8647                 left: {
8648                     type: 'LogicalExpression',
8649                     operator: '||',
8650                     left: {
8651                         type: 'Identifier',
8652                         name: 'x',
8653                         range: [0, 1],
8654                         loc: {
8655                             start: { line: 1, column: 0 },
8656                             end: { line: 1, column: 1 }
8657                         }
8658                     },
8659                     right: {
8660                         type: 'Identifier',
8661                         name: 'y',
8662                         range: [5, 6],
8663                         loc: {
8664                             start: { line: 1, column: 5 },
8665                             end: { line: 1, column: 6 }
8666                         }
8667                     },
8668                     range: [0, 6],
8669                     loc: {
8670                         start: { line: 1, column: 0 },
8671                         end: { line: 1, column: 6 }
8672                     }
8673                 },
8674                 right: {
8675                     type: 'Identifier',
8676                     name: 'z',
8677                     range: [10, 11],
8678                     loc: {
8679                         start: { line: 1, column: 10 },
8680                         end: { line: 1, column: 11 }
8681                     }
8682                 },
8683                 range: [0, 11],
8684                 loc: {
8685                     start: { line: 1, column: 0 },
8686                     end: { line: 1, column: 11 }
8687                 }
8688             },
8689             range: [0, 11],
8690             loc: {
8691                 start: { line: 1, column: 0 },
8692                 end: { line: 1, column: 11 }
8693             }
8694         },
8695
8696         'x && y && z': {
8697             type: 'ExpressionStatement',
8698             expression: {
8699                 type: 'LogicalExpression',
8700                 operator: '&&',
8701                 left: {
8702                     type: 'LogicalExpression',
8703                     operator: '&&',
8704                     left: {
8705                         type: 'Identifier',
8706                         name: 'x',
8707                         range: [0, 1],
8708                         loc: {
8709                             start: { line: 1, column: 0 },
8710                             end: { line: 1, column: 1 }
8711                         }
8712                     },
8713                     right: {
8714                         type: 'Identifier',
8715                         name: 'y',
8716                         range: [5, 6],
8717                         loc: {
8718                             start: { line: 1, column: 5 },
8719                             end: { line: 1, column: 6 }
8720                         }
8721                     },
8722                     range: [0, 6],
8723                     loc: {
8724                         start: { line: 1, column: 0 },
8725                         end: { line: 1, column: 6 }
8726                     }
8727                 },
8728                 right: {
8729                     type: 'Identifier',
8730                     name: 'z',
8731                     range: [10, 11],
8732                     loc: {
8733                         start: { line: 1, column: 10 },
8734                         end: { line: 1, column: 11 }
8735                     }
8736                 },
8737                 range: [0, 11],
8738                 loc: {
8739                     start: { line: 1, column: 0 },
8740                     end: { line: 1, column: 11 }
8741                 }
8742             },
8743             range: [0, 11],
8744             loc: {
8745                 start: { line: 1, column: 0 },
8746                 end: { line: 1, column: 11 }
8747             }
8748         },
8749
8750         'x || y && z': {
8751             type: 'ExpressionStatement',
8752             expression: {
8753                 type: 'LogicalExpression',
8754                 operator: '||',
8755                 left: {
8756                     type: 'Identifier',
8757                     name: 'x',
8758                     range: [0, 1],
8759                     loc: {
8760                         start: { line: 1, column: 0 },
8761                         end: { line: 1, column: 1 }
8762                     }
8763                 },
8764                 right: {
8765                     type: 'LogicalExpression',
8766                     operator: '&&',
8767                     left: {
8768                         type: 'Identifier',
8769                         name: 'y',
8770                         range: [5, 6],
8771                         loc: {
8772                             start: { line: 1, column: 5 },
8773                             end: { line: 1, column: 6 }
8774                         }
8775                     },
8776                     right: {
8777                         type: 'Identifier',
8778                         name: 'z',
8779                         range: [10, 11],
8780                         loc: {
8781                             start: { line: 1, column: 10 },
8782                             end: { line: 1, column: 11 }
8783                         }
8784                     },
8785                     range: [5, 11],
8786                     loc: {
8787                         start: { line: 1, column: 5 },
8788                         end: { line: 1, column: 11 }
8789                     }
8790                 },
8791                 range: [0, 11],
8792                 loc: {
8793                     start: { line: 1, column: 0 },
8794                     end: { line: 1, column: 11 }
8795                 }
8796             },
8797             range: [0, 11],
8798             loc: {
8799                 start: { line: 1, column: 0 },
8800                 end: { line: 1, column: 11 }
8801             }
8802         },
8803
8804         'x || y ^ z': {
8805             type: 'ExpressionStatement',
8806             expression: {
8807                 type: 'LogicalExpression',
8808                 operator: '||',
8809                 left: {
8810                     type: 'Identifier',
8811                     name: 'x',
8812                     range: [0, 1],
8813                     loc: {
8814                         start: { line: 1, column: 0 },
8815                         end: { line: 1, column: 1 }
8816                     }
8817                 },
8818                 right: {
8819                     type: 'BinaryExpression',
8820                     operator: '^',
8821                     left: {
8822                         type: 'Identifier',
8823                         name: 'y',
8824                         range: [5, 6],
8825                         loc: {
8826                             start: { line: 1, column: 5 },
8827                             end: { line: 1, column: 6 }
8828                         }
8829                     },
8830                     right: {
8831                         type: 'Identifier',
8832                         name: 'z',
8833                         range: [9, 10],
8834                         loc: {
8835                             start: { line: 1, column: 9 },
8836                             end: { line: 1, column: 10 }
8837                         }
8838                     },
8839                     range: [5, 10],
8840                     loc: {
8841                         start: { line: 1, column: 5 },
8842                         end: { line: 1, column: 10 }
8843                     }
8844                 },
8845                 range: [0, 10],
8846                 loc: {
8847                     start: { line: 1, column: 0 },
8848                     end: { line: 1, column: 10 }
8849                 }
8850             },
8851             range: [0, 10],
8852             loc: {
8853                 start: { line: 1, column: 0 },
8854                 end: { line: 1, column: 10 }
8855             }
8856         }
8857
8858     },
8859
8860     'Conditional Operator': {
8861
8862         'y ? 1 : 2': {
8863             type: 'ExpressionStatement',
8864             expression: {
8865                 type: 'ConditionalExpression',
8866                 test: {
8867                     type: 'Identifier',
8868                     name: 'y',
8869                     range: [0, 1],
8870                     loc: {
8871                         start: { line: 1, column: 0 },
8872                         end: { line: 1, column: 1 }
8873                     }
8874                 },
8875                 consequent: {
8876                     type: 'Literal',
8877                     value: 1,
8878                     raw: '1',
8879                     range: [4, 5],
8880                     loc: {
8881                         start: { line: 1, column: 4 },
8882                         end: { line: 1, column: 5 }
8883                     }
8884                 },
8885                 alternate: {
8886                     type: 'Literal',
8887                     value: 2,
8888                     raw: '2',
8889                     range: [8, 9],
8890                     loc: {
8891                         start: { line: 1, column: 8 },
8892                         end: { line: 1, column: 9 }
8893                     }
8894                 },
8895                 range: [0, 9],
8896                 loc: {
8897                     start: { line: 1, column: 0 },
8898                     end: { line: 1, column: 9 }
8899                 }
8900             },
8901             range: [0, 9],
8902             loc: {
8903                 start: { line: 1, column: 0 },
8904                 end: { line: 1, column: 9 }
8905             }
8906         },
8907
8908         'x && y ? 1 : 2': {
8909             type: 'ExpressionStatement',
8910             expression: {
8911                 type: 'ConditionalExpression',
8912                 test: {
8913                     type: 'LogicalExpression',
8914                     operator: '&&',
8915                     left: {
8916                         type: 'Identifier',
8917                         name: 'x',
8918                         range: [0, 1],
8919                         loc: {
8920                             start: { line: 1, column: 0 },
8921                             end: { line: 1, column: 1 }
8922                         }
8923                     },
8924                     right: {
8925                         type: 'Identifier',
8926                         name: 'y',
8927                         range: [5, 6],
8928                         loc: {
8929                             start: { line: 1, column: 5 },
8930                             end: { line: 1, column: 6 }
8931                         }
8932                     },
8933                     range: [0, 6],
8934                     loc: {
8935                         start: { line: 1, column: 0 },
8936                         end: { line: 1, column: 6 }
8937                     }
8938                 },
8939                 consequent: {
8940                     type: 'Literal',
8941                     value: 1,
8942                     raw: '1',
8943                     range: [9, 10],
8944                     loc: {
8945                         start: { line: 1, column: 9 },
8946                         end: { line: 1, column: 10 }
8947                     }
8948                 },
8949                 alternate: {
8950                     type: 'Literal',
8951                     value: 2,
8952                     raw: '2',
8953                     range: [13, 14],
8954                     loc: {
8955                         start: { line: 1, column: 13 },
8956                         end: { line: 1, column: 14 }
8957                     }
8958                 },
8959                 range: [0, 14],
8960                 loc: {
8961                     start: { line: 1, column: 0 },
8962                     end: { line: 1, column: 14 }
8963                 }
8964             },
8965             range: [0, 14],
8966             loc: {
8967                 start: { line: 1, column: 0 },
8968                 end: { line: 1, column: 14 }
8969             }
8970         }
8971
8972     },
8973
8974     'Assignment Operators': {
8975
8976         'x = 42': {
8977             type: 'ExpressionStatement',
8978             expression: {
8979                 type: 'AssignmentExpression',
8980                 operator: '=',
8981                 left: {
8982                     type: 'Identifier',
8983                     name: 'x',
8984                     range: [0, 1],
8985                     loc: {
8986                         start: { line: 1, column: 0 },
8987                         end: { line: 1, column: 1 }
8988                     }
8989                 },
8990                 right: {
8991                     type: 'Literal',
8992                     value: 42,
8993                     raw: '42',
8994                     range: [4, 6],
8995                     loc: {
8996                         start: { line: 1, column: 4 },
8997                         end: { line: 1, column: 6 }
8998                     }
8999                 },
9000                 range: [0, 6],
9001                 loc: {
9002                     start: { line: 1, column: 0 },
9003                     end: { line: 1, column: 6 }
9004                 }
9005             },
9006             range: [0, 6],
9007             loc: {
9008                 start: { line: 1, column: 0 },
9009                 end: { line: 1, column: 6 }
9010             }
9011         },
9012
9013         'eval = 42': {
9014             type: 'ExpressionStatement',
9015             expression: {
9016                 type: 'AssignmentExpression',
9017                 operator: '=',
9018                 left: {
9019                     type: 'Identifier',
9020                     name: 'eval',
9021                     range: [0, 4],
9022                     loc: {
9023                         start: { line: 1, column: 0 },
9024                         end: { line: 1, column: 4 }
9025                     }
9026                 },
9027                 right: {
9028                     type: 'Literal',
9029                     value: 42,
9030                     raw: '42',
9031                     range: [7, 9],
9032                     loc: {
9033                         start: { line: 1, column: 7 },
9034                         end: { line: 1, column: 9 }
9035                     }
9036                 },
9037                 range: [0, 9],
9038                 loc: {
9039                     start: { line: 1, column: 0 },
9040                     end: { line: 1, column: 9 }
9041                 }
9042             },
9043             range: [0, 9],
9044             loc: {
9045                 start: { line: 1, column: 0 },
9046                 end: { line: 1, column: 9 }
9047             }
9048         },
9049
9050         'arguments = 42': {
9051             type: 'ExpressionStatement',
9052             expression: {
9053                 type: 'AssignmentExpression',
9054                 operator: '=',
9055                 left: {
9056                     type: 'Identifier',
9057                     name: 'arguments',
9058                     range: [0, 9],
9059                     loc: {
9060                         start: { line: 1, column: 0 },
9061                         end: { line: 1, column: 9 }
9062                     }
9063                 },
9064                 right: {
9065                     type: 'Literal',
9066                     value: 42,
9067                     raw: '42',
9068                     range: [12, 14],
9069                     loc: {
9070                         start: { line: 1, column: 12 },
9071                         end: { line: 1, column: 14 }
9072                     }
9073                 },
9074                 range: [0, 14],
9075                 loc: {
9076                     start: { line: 1, column: 0 },
9077                     end: { line: 1, column: 14 }
9078                 }
9079             },
9080             range: [0, 14],
9081             loc: {
9082                 start: { line: 1, column: 0 },
9083                 end: { line: 1, column: 14 }
9084             }
9085         },
9086
9087         'x *= 42': {
9088             type: 'ExpressionStatement',
9089             expression: {
9090                 type: 'AssignmentExpression',
9091                 operator: '*=',
9092                 left: {
9093                     type: 'Identifier',
9094                     name: 'x',
9095                     range: [0, 1],
9096                     loc: {
9097                         start: { line: 1, column: 0 },
9098                         end: { line: 1, column: 1 }
9099                     }
9100                 },
9101                 right: {
9102                     type: 'Literal',
9103                     value: 42,
9104                     raw: '42',
9105                     range: [5, 7],
9106                     loc: {
9107                         start: { line: 1, column: 5 },
9108                         end: { line: 1, column: 7 }
9109                     }
9110                 },
9111                 range: [0, 7],
9112                 loc: {
9113                     start: { line: 1, column: 0 },
9114                     end: { line: 1, column: 7 }
9115                 }
9116             },
9117             range: [0, 7],
9118             loc: {
9119                 start: { line: 1, column: 0 },
9120                 end: { line: 1, column: 7 }
9121             }
9122         },
9123
9124         'x /= 42': {
9125             type: 'ExpressionStatement',
9126             expression: {
9127                 type: 'AssignmentExpression',
9128                 operator: '/=',
9129                 left: {
9130                     type: 'Identifier',
9131                     name: 'x',
9132                     range: [0, 1],
9133                     loc: {
9134                         start: { line: 1, column: 0 },
9135                         end: { line: 1, column: 1 }
9136                     }
9137                 },
9138                 right: {
9139                     type: 'Literal',
9140                     value: 42,
9141                     raw: '42',
9142                     range: [5, 7],
9143                     loc: {
9144                         start: { line: 1, column: 5 },
9145                         end: { line: 1, column: 7 }
9146                     }
9147                 },
9148                 range: [0, 7],
9149                 loc: {
9150                     start: { line: 1, column: 0 },
9151                     end: { line: 1, column: 7 }
9152                 }
9153             },
9154             range: [0, 7],
9155             loc: {
9156                 start: { line: 1, column: 0 },
9157                 end: { line: 1, column: 7 }
9158             }
9159         },
9160
9161         'x %= 42': {
9162             type: 'ExpressionStatement',
9163             expression: {
9164                 type: 'AssignmentExpression',
9165                 operator: '%=',
9166                 left: {
9167                     type: 'Identifier',
9168                     name: 'x',
9169                     range: [0, 1],
9170                     loc: {
9171                         start: { line: 1, column: 0 },
9172                         end: { line: 1, column: 1 }
9173                     }
9174                 },
9175                 right: {
9176                     type: 'Literal',
9177                     value: 42,
9178                     raw: '42',
9179                     range: [5, 7],
9180                     loc: {
9181                         start: { line: 1, column: 5 },
9182                         end: { line: 1, column: 7 }
9183                     }
9184                 },
9185                 range: [0, 7],
9186                 loc: {
9187                     start: { line: 1, column: 0 },
9188                     end: { line: 1, column: 7 }
9189                 }
9190             },
9191             range: [0, 7],
9192             loc: {
9193                 start: { line: 1, column: 0 },
9194                 end: { line: 1, column: 7 }
9195             }
9196         },
9197
9198         'x += 42': {
9199             type: 'ExpressionStatement',
9200             expression: {
9201                 type: 'AssignmentExpression',
9202                 operator: '+=',
9203                 left: {
9204                     type: 'Identifier',
9205                     name: 'x',
9206                     range: [0, 1],
9207                     loc: {
9208                         start: { line: 1, column: 0 },
9209                         end: { line: 1, column: 1 }
9210                     }
9211                 },
9212                 right: {
9213                     type: 'Literal',
9214                     value: 42,
9215                     raw: '42',
9216                     range: [5, 7],
9217                     loc: {
9218                         start: { line: 1, column: 5 },
9219                         end: { line: 1, column: 7 }
9220                     }
9221                 },
9222                 range: [0, 7],
9223                 loc: {
9224                     start: { line: 1, column: 0 },
9225                     end: { line: 1, column: 7 }
9226                 }
9227             },
9228             range: [0, 7],
9229             loc: {
9230                 start: { line: 1, column: 0 },
9231                 end: { line: 1, column: 7 }
9232             }
9233         },
9234
9235         'x -= 42': {
9236             type: 'ExpressionStatement',
9237             expression: {
9238                 type: 'AssignmentExpression',
9239                 operator: '-=',
9240                 left: {
9241                     type: 'Identifier',
9242                     name: 'x',
9243                     range: [0, 1],
9244                     loc: {
9245                         start: { line: 1, column: 0 },
9246                         end: { line: 1, column: 1 }
9247                     }
9248                 },
9249                 right: {
9250                     type: 'Literal',
9251                     value: 42,
9252                     raw: '42',
9253                     range: [5, 7],
9254                     loc: {
9255                         start: { line: 1, column: 5 },
9256                         end: { line: 1, column: 7 }
9257                     }
9258                 },
9259                 range: [0, 7],
9260                 loc: {
9261                     start: { line: 1, column: 0 },
9262                     end: { line: 1, column: 7 }
9263                 }
9264             },
9265             range: [0, 7],
9266             loc: {
9267                 start: { line: 1, column: 0 },
9268                 end: { line: 1, column: 7 }
9269             }
9270         },
9271
9272         'x <<= 42': {
9273             type: 'ExpressionStatement',
9274             expression: {
9275                 type: 'AssignmentExpression',
9276                 operator: '<<=',
9277                 left: {
9278                     type: 'Identifier',
9279                     name: 'x',
9280                     range: [0, 1],
9281                     loc: {
9282                         start: { line: 1, column: 0 },
9283                         end: { line: 1, column: 1 }
9284                     }
9285                 },
9286                 right: {
9287                     type: 'Literal',
9288                     value: 42,
9289                     raw: '42',
9290                     range: [6, 8],
9291                     loc: {
9292                         start: { line: 1, column: 6 },
9293                         end: { line: 1, column: 8 }
9294                     }
9295                 },
9296                 range: [0, 8],
9297                 loc: {
9298                     start: { line: 1, column: 0 },
9299                     end: { line: 1, column: 8 }
9300                 }
9301             },
9302             range: [0, 8],
9303             loc: {
9304                 start: { line: 1, column: 0 },
9305                 end: { line: 1, column: 8 }
9306             }
9307         },
9308
9309         'x >>= 42': {
9310             type: 'ExpressionStatement',
9311             expression: {
9312                 type: 'AssignmentExpression',
9313                 operator: '>>=',
9314                 left: {
9315                     type: 'Identifier',
9316                     name: 'x',
9317                     range: [0, 1],
9318                     loc: {
9319                         start: { line: 1, column: 0 },
9320                         end: { line: 1, column: 1 }
9321                     }
9322                 },
9323                 right: {
9324                     type: 'Literal',
9325                     value: 42,
9326                     raw: '42',
9327                     range: [6, 8],
9328                     loc: {
9329                         start: { line: 1, column: 6 },
9330                         end: { line: 1, column: 8 }
9331                     }
9332                 },
9333                 range: [0, 8],
9334                 loc: {
9335                     start: { line: 1, column: 0 },
9336                     end: { line: 1, column: 8 }
9337                 }
9338             },
9339             range: [0, 8],
9340             loc: {
9341                 start: { line: 1, column: 0 },
9342                 end: { line: 1, column: 8 }
9343             }
9344         },
9345
9346         'x >>>= 42': {
9347             type: 'ExpressionStatement',
9348             expression: {
9349                 type: 'AssignmentExpression',
9350                 operator: '>>>=',
9351                 left: {
9352                     type: 'Identifier',
9353                     name: 'x',
9354                     range: [0, 1],
9355                     loc: {
9356                         start: { line: 1, column: 0 },
9357                         end: { line: 1, column: 1 }
9358                     }
9359                 },
9360                 right: {
9361                     type: 'Literal',
9362                     value: 42,
9363                     raw: '42',
9364                     range: [7, 9],
9365                     loc: {
9366                         start: { line: 1, column: 7 },
9367                         end: { line: 1, column: 9 }
9368                     }
9369                 },
9370                 range: [0, 9],
9371                 loc: {
9372                     start: { line: 1, column: 0 },
9373                     end: { line: 1, column: 9 }
9374                 }
9375             },
9376             range: [0, 9],
9377             loc: {
9378                 start: { line: 1, column: 0 },
9379                 end: { line: 1, column: 9 }
9380             }
9381         },
9382
9383         'x &= 42': {
9384             type: 'ExpressionStatement',
9385             expression: {
9386                 type: 'AssignmentExpression',
9387                 operator: '&=',
9388                 left: {
9389                     type: 'Identifier',
9390                     name: 'x',
9391                     range: [0, 1],
9392                     loc: {
9393                         start: { line: 1, column: 0 },
9394                         end: { line: 1, column: 1 }
9395                     }
9396                 },
9397                 right: {
9398                     type: 'Literal',
9399                     value: 42,
9400                     raw: '42',
9401                     range: [5, 7],
9402                     loc: {
9403                         start: { line: 1, column: 5 },
9404                         end: { line: 1, column: 7 }
9405                     }
9406                 },
9407                 range: [0, 7],
9408                 loc: {
9409                     start: { line: 1, column: 0 },
9410                     end: { line: 1, column: 7 }
9411                 }
9412             },
9413             range: [0, 7],
9414             loc: {
9415                 start: { line: 1, column: 0 },
9416                 end: { line: 1, column: 7 }
9417             }
9418         },
9419
9420         'x ^= 42': {
9421             type: 'ExpressionStatement',
9422             expression: {
9423                 type: 'AssignmentExpression',
9424                 operator: '^=',
9425                 left: {
9426                     type: 'Identifier',
9427                     name: 'x',
9428                     range: [0, 1],
9429                     loc: {
9430                         start: { line: 1, column: 0 },
9431                         end: { line: 1, column: 1 }
9432                     }
9433                 },
9434                 right: {
9435                     type: 'Literal',
9436                     value: 42,
9437                     raw: '42',
9438                     range: [5, 7],
9439                     loc: {
9440                         start: { line: 1, column: 5 },
9441                         end: { line: 1, column: 7 }
9442                     }
9443                 },
9444                 range: [0, 7],
9445                 loc: {
9446                     start: { line: 1, column: 0 },
9447                     end: { line: 1, column: 7 }
9448                 }
9449             },
9450             range: [0, 7],
9451             loc: {
9452                 start: { line: 1, column: 0 },
9453                 end: { line: 1, column: 7 }
9454             }
9455         },
9456
9457         'x |= 42': {
9458             type: 'ExpressionStatement',
9459             expression: {
9460                 type: 'AssignmentExpression',
9461                 operator: '|=',
9462                 left: {
9463                     type: 'Identifier',
9464                     name: 'x',
9465                     range: [0, 1],
9466                     loc: {
9467                         start: { line: 1, column: 0 },
9468                         end: { line: 1, column: 1 }
9469                     }
9470                 },
9471                 right: {
9472                     type: 'Literal',
9473                     value: 42,
9474                     raw: '42',
9475                     range: [5, 7],
9476                     loc: {
9477                         start: { line: 1, column: 5 },
9478                         end: { line: 1, column: 7 }
9479                     }
9480                 },
9481                 range: [0, 7],
9482                 loc: {
9483                     start: { line: 1, column: 0 },
9484                     end: { line: 1, column: 7 }
9485                 }
9486             },
9487             range: [0, 7],
9488             loc: {
9489                 start: { line: 1, column: 0 },
9490                 end: { line: 1, column: 7 }
9491             }
9492         }
9493
9494     },
9495
9496     'Block': {
9497
9498         '{ foo }': {
9499             type: 'BlockStatement',
9500             body: [{
9501                 type: 'ExpressionStatement',
9502                 expression: {
9503                     type: 'Identifier',
9504                     name: 'foo',
9505                     range: [2, 5],
9506                     loc: {
9507                         start: { line: 1, column: 2 },
9508                         end: { line: 1, column: 5 }
9509                     }
9510                 },
9511                 range: [2, 6],
9512                 loc: {
9513                     start: { line: 1, column: 2 },
9514                     end: { line: 1, column: 6 }
9515                 }
9516             }],
9517             range: [0, 7],
9518             loc: {
9519                 start: { line: 1, column: 0 },
9520                 end: { line: 1, column: 7 }
9521             }
9522         },
9523
9524         '{ doThis(); doThat(); }': {
9525             type: 'BlockStatement',
9526             body: [{
9527                 type: 'ExpressionStatement',
9528                 expression: {
9529                     type: 'CallExpression',
9530                     callee: {
9531                         type: 'Identifier',
9532                         name: 'doThis',
9533                         range: [2, 8],
9534                         loc: {
9535                             start: { line: 1, column: 2 },
9536                             end: { line: 1, column: 8 }
9537                         }
9538                     },
9539                     'arguments': [],
9540                     range: [2, 10],
9541                     loc: {
9542                         start: { line: 1, column: 2 },
9543                         end: { line: 1, column: 10 }
9544                     }
9545                 },
9546                 range: [2, 11],
9547                 loc: {
9548                     start: { line: 1, column: 2 },
9549                     end: { line: 1, column: 11 }
9550                 }
9551             }, {
9552                 type: 'ExpressionStatement',
9553                 expression: {
9554                     type: 'CallExpression',
9555                     callee: {
9556                         type: 'Identifier',
9557                         name: 'doThat',
9558                         range: [12, 18],
9559                         loc: {
9560                             start: { line: 1, column: 12 },
9561                             end: { line: 1, column: 18 }
9562                         }
9563                     },
9564                     'arguments': [],
9565                     range: [12, 20],
9566                     loc: {
9567                         start: { line: 1, column: 12 },
9568                         end: { line: 1, column: 20 }
9569                     }
9570                 },
9571                 range: [12, 21],
9572                 loc: {
9573                     start: { line: 1, column: 12 },
9574                     end: { line: 1, column: 21 }
9575                 }
9576             }],
9577             range: [0, 23],
9578             loc: {
9579                 start: { line: 1, column: 0 },
9580                 end: { line: 1, column: 23 }
9581             }
9582         },
9583
9584         '{}': {
9585             type: 'BlockStatement',
9586             body: [],
9587             range: [0, 2],
9588             loc: {
9589                 start: { line: 1, column: 0 },
9590                 end: { line: 1, column: 2 }
9591             }
9592         }
9593
9594     },
9595
9596     'Variable Statement': {
9597
9598         'var x': {
9599             type: 'VariableDeclaration',
9600             declarations: [{
9601                 type: 'VariableDeclarator',
9602                 id: {
9603                     type: 'Identifier',
9604                     name: 'x',
9605                     range: [4, 5],
9606                     loc: {
9607                         start: { line: 1, column: 4 },
9608                         end: { line: 1, column: 5 }
9609                     }
9610                 },
9611                 init: null,
9612                 range: [4, 5],
9613                 loc: {
9614                     start: { line: 1, column: 4 },
9615                     end: { line: 1, column: 5 }
9616                 }
9617             }],
9618             kind: 'var',
9619             range: [0, 5],
9620             loc: {
9621                 start: { line: 1, column: 0 },
9622                 end: { line: 1, column: 5 }
9623             }
9624         },
9625
9626         'var x, y;': {
9627             type: 'VariableDeclaration',
9628             declarations: [{
9629                 type: 'VariableDeclarator',
9630                 id: {
9631                     type: 'Identifier',
9632                     name: 'x',
9633                     range: [4, 5],
9634                     loc: {
9635                         start: { line: 1, column: 4 },
9636                         end: { line: 1, column: 5 }
9637                     }
9638                 },
9639                 init: null,
9640                 range: [4, 5],
9641                 loc: {
9642                     start: { line: 1, column: 4 },
9643                     end: { line: 1, column: 5 }
9644                 }
9645             }, {
9646                 type: 'VariableDeclarator',
9647                 id: {
9648                     type: 'Identifier',
9649                     name: 'y',
9650                     range: [7, 8],
9651                     loc: {
9652                         start: { line: 1, column: 7 },
9653                         end: { line: 1, column: 8 }
9654                     }
9655                 },
9656                 init: null,
9657                 range: [7, 8],
9658                 loc: {
9659                     start: { line: 1, column: 7 },
9660                     end: { line: 1, column: 8 }
9661                 }
9662             }],
9663             kind: 'var',
9664             range: [0, 9],
9665             loc: {
9666                 start: { line: 1, column: 0 },
9667                 end: { line: 1, column: 9 }
9668             }
9669         },
9670
9671         'var x = 42': {
9672             type: 'VariableDeclaration',
9673             declarations: [{
9674                 type: 'VariableDeclarator',
9675                 id: {
9676                     type: 'Identifier',
9677                     name: 'x',
9678                     range: [4, 5],
9679                     loc: {
9680                         start: { line: 1, column: 4 },
9681                         end: { line: 1, column: 5 }
9682                     }
9683                 },
9684                 init: {
9685                     type: 'Literal',
9686                     value: 42,
9687                     raw: '42',
9688                     range: [8, 10],
9689                     loc: {
9690                         start: { line: 1, column: 8 },
9691                         end: { line: 1, column: 10 }
9692                     }
9693                 },
9694                 range: [4, 10],
9695                 loc: {
9696                     start: { line: 1, column: 4 },
9697                     end: { line: 1, column: 10 }
9698                 }
9699             }],
9700             kind: 'var',
9701             range: [0, 10],
9702             loc: {
9703                 start: { line: 1, column: 0 },
9704                 end: { line: 1, column: 10 }
9705             }
9706         },
9707
9708         'var eval = 42, arguments = 42': {
9709             type: 'VariableDeclaration',
9710             declarations: [{
9711                 type: 'VariableDeclarator',
9712                 id: {
9713                     type: 'Identifier',
9714                     name: 'eval',
9715                     range: [4, 8],
9716                     loc: {
9717                         start: { line: 1, column: 4 },
9718                         end: { line: 1, column: 8 }
9719                     }
9720                 },
9721                 init: {
9722                     type: 'Literal',
9723                     value: 42,
9724                     raw: '42',
9725                     range: [11, 13],
9726                     loc: {
9727                         start: { line: 1, column: 11 },
9728                         end: { line: 1, column: 13 }
9729                     }
9730                 },
9731                 range: [4, 13],
9732                 loc: {
9733                     start: { line: 1, column: 4 },
9734                     end: { line: 1, column: 13 }
9735                 }
9736             }, {
9737                 type: 'VariableDeclarator',
9738                 id: {
9739                     type: 'Identifier',
9740                     name: 'arguments',
9741                     range: [15, 24],
9742                     loc: {
9743                         start: { line: 1, column: 15 },
9744                         end: { line: 1, column: 24 }
9745                     }
9746                 },
9747                 init: {
9748                     type: 'Literal',
9749                     value: 42,
9750                     raw: '42',
9751                     range: [27, 29],
9752                     loc: {
9753                         start: { line: 1, column: 27 },
9754                         end: { line: 1, column: 29 }
9755                     }
9756                 },
9757                 range: [15, 29],
9758                 loc: {
9759                     start: { line: 1, column: 15 },
9760                     end: { line: 1, column: 29 }
9761                 }
9762             }],
9763             kind: 'var',
9764             range: [0, 29],
9765             loc: {
9766                 start: { line: 1, column: 0 },
9767                 end: { line: 1, column: 29 }
9768             }
9769         },
9770
9771         'var x = 14, y = 3, z = 1977': {
9772             type: 'VariableDeclaration',
9773             declarations: [{
9774                 type: 'VariableDeclarator',
9775                 id: {
9776                     type: 'Identifier',
9777                     name: 'x',
9778                     range: [4, 5],
9779                     loc: {
9780                         start: { line: 1, column: 4 },
9781                         end: { line: 1, column: 5 }
9782                     }
9783                 },
9784                 init: {
9785                     type: 'Literal',
9786                     value: 14,
9787                     raw: '14',
9788                     range: [8, 10],
9789                     loc: {
9790                         start: { line: 1, column: 8 },
9791                         end: { line: 1, column: 10 }
9792                     }
9793                 },
9794                 range: [4, 10],
9795                 loc: {
9796                     start: { line: 1, column: 4 },
9797                     end: { line: 1, column: 10 }
9798                 }
9799             }, {
9800                 type: 'VariableDeclarator',
9801                 id: {
9802                     type: 'Identifier',
9803                     name: 'y',
9804                     range: [12, 13],
9805                     loc: {
9806                         start: { line: 1, column: 12 },
9807                         end: { line: 1, column: 13 }
9808                     }
9809                 },
9810                 init: {
9811                     type: 'Literal',
9812                     value: 3,
9813                     raw: '3',
9814                     range: [16, 17],
9815                     loc: {
9816                         start: { line: 1, column: 16 },
9817                         end: { line: 1, column: 17 }
9818                     }
9819                 },
9820                 range: [12, 17],
9821                 loc: {
9822                     start: { line: 1, column: 12 },
9823                     end: { line: 1, column: 17 }
9824                 }
9825             }, {
9826                 type: 'VariableDeclarator',
9827                 id: {
9828                     type: 'Identifier',
9829                     name: 'z',
9830                     range: [19, 20],
9831                     loc: {
9832                         start: { line: 1, column: 19 },
9833                         end: { line: 1, column: 20 }
9834                     }
9835                 },
9836                 init: {
9837                     type: 'Literal',
9838                     value: 1977,
9839                     raw: '1977',
9840                     range: [23, 27],
9841                     loc: {
9842                         start: { line: 1, column: 23 },
9843                         end: { line: 1, column: 27 }
9844                     }
9845                 },
9846                 range: [19, 27],
9847                 loc: {
9848                     start: { line: 1, column: 19 },
9849                     end: { line: 1, column: 27 }
9850                 }
9851             }],
9852             kind: 'var',
9853             range: [0, 27],
9854             loc: {
9855                 start: { line: 1, column: 0 },
9856                 end: { line: 1, column: 27 }
9857             }
9858         },
9859
9860         'var implements, interface, package': {
9861             type: 'VariableDeclaration',
9862             declarations: [{
9863                 type: 'VariableDeclarator',
9864                 id: {
9865                     type: 'Identifier',
9866                     name: 'implements',
9867                     range: [4, 14],
9868                     loc: {
9869                         start: { line: 1, column: 4 },
9870                         end: { line: 1, column: 14 }
9871                     }
9872                 },
9873                 init: null,
9874                 range: [4, 14],
9875                 loc: {
9876                     start: { line: 1, column: 4 },
9877                     end: { line: 1, column: 14 }
9878                 }
9879             }, {
9880                 type: 'VariableDeclarator',
9881                 id: {
9882                     type: 'Identifier',
9883                     name: 'interface',
9884                     range: [16, 25],
9885                     loc: {
9886                         start: { line: 1, column: 16 },
9887                         end: { line: 1, column: 25 }
9888                     }
9889                 },
9890                 init: null,
9891                 range: [16, 25],
9892                 loc: {
9893                     start: { line: 1, column: 16 },
9894                     end: { line: 1, column: 25 }
9895                 }
9896             }, {
9897                 type: 'VariableDeclarator',
9898                 id: {
9899                     type: 'Identifier',
9900                     name: 'package',
9901                     range: [27, 34],
9902                     loc: {
9903                         start: { line: 1, column: 27 },
9904                         end: { line: 1, column: 34 }
9905                     }
9906                 },
9907                 init: null,
9908                 range: [27, 34],
9909                 loc: {
9910                     start: { line: 1, column: 27 },
9911                     end: { line: 1, column: 34 }
9912                 }
9913             }],
9914             kind: 'var',
9915             range: [0, 34],
9916             loc: {
9917                 start: { line: 1, column: 0 },
9918                 end: { line: 1, column: 34 }
9919             }
9920         },
9921
9922         'var private, protected, public, static': {
9923             type: 'VariableDeclaration',
9924             declarations: [{
9925                 type: 'VariableDeclarator',
9926                 id: {
9927                     type: 'Identifier',
9928                     name: 'private',
9929                     range: [4, 11],
9930                     loc: {
9931                         start: { line: 1, column: 4 },
9932                         end: { line: 1, column: 11 }
9933                     }
9934                 },
9935                 init: null,
9936                 range: [4, 11],
9937                 loc: {
9938                     start: { line: 1, column: 4 },
9939                     end: { line: 1, column: 11 }
9940                 }
9941             }, {
9942                 type: 'VariableDeclarator',
9943                 id: {
9944                     type: 'Identifier',
9945                     name: 'protected',
9946                     range: [13, 22],
9947                     loc: {
9948                         start: { line: 1, column: 13 },
9949                         end: { line: 1, column: 22 }
9950                     }
9951                 },
9952                 init: null,
9953                 range: [13, 22],
9954                 loc: {
9955                     start: { line: 1, column: 13 },
9956                     end: { line: 1, column: 22 }
9957                 }
9958             }, {
9959                 type: 'VariableDeclarator',
9960                 id: {
9961                     type: 'Identifier',
9962                     name: 'public',
9963                     range: [24, 30],
9964                     loc: {
9965                         start: { line: 1, column: 24 },
9966                         end: { line: 1, column: 30 }
9967                     }
9968                 },
9969                 init: null,
9970                 range: [24, 30],
9971                 loc: {
9972                     start: { line: 1, column: 24 },
9973                     end: { line: 1, column: 30 }
9974                 }
9975             }, {
9976                 type: 'VariableDeclarator',
9977                 id: {
9978                     type: 'Identifier',
9979                     name: 'static',
9980                     range: [32, 38],
9981                     loc: {
9982                         start: { line: 1, column: 32 },
9983                         end: { line: 1, column: 38 }
9984                     }
9985                 },
9986                 init: null,
9987                 range: [32, 38],
9988                 loc: {
9989                     start: { line: 1, column: 32 },
9990                     end: { line: 1, column: 38 }
9991                 }
9992             }],
9993             kind: 'var',
9994             range: [0, 38],
9995             loc: {
9996                 start: { line: 1, column: 0 },
9997                 end: { line: 1, column: 38 }
9998             }
9999         }
10000
10001     },
10002
10003     'Let Statement': {
10004
10005         'let x': {
10006             type: 'VariableDeclaration',
10007             declarations: [{
10008                 type: 'VariableDeclarator',
10009                 id: {
10010                     type: 'Identifier',
10011                     name: 'x',
10012                     range: [4, 5],
10013                     loc: {
10014                         start: { line: 1, column: 4 },
10015                         end: { line: 1, column: 5 }
10016                     }
10017                 },
10018                 init: null,
10019                 range: [4, 5],
10020                 loc: {
10021                     start: { line: 1, column: 4 },
10022                     end: { line: 1, column: 5 }
10023                 }
10024             }],
10025             kind: 'let',
10026             range: [0, 5],
10027             loc: {
10028                 start: { line: 1, column: 0 },
10029                 end: { line: 1, column: 5 }
10030             }
10031         },
10032
10033         '{ let x }': {
10034             type: 'BlockStatement',
10035             body: [{
10036                 type: 'VariableDeclaration',
10037                 declarations: [{
10038                     type: 'VariableDeclarator',
10039                     id: {
10040                         type: 'Identifier',
10041                         name: 'x',
10042                         range: [6, 7],
10043                         loc: {
10044                             start: { line: 1, column: 6 },
10045                             end: { line: 1, column: 7 }
10046                         }
10047                     },
10048                     init: null,
10049                     range: [6, 7],
10050                     loc: {
10051                         start: { line: 1, column: 6 },
10052                         end: { line: 1, column: 7 }
10053                     }
10054                 }],
10055                 kind: 'let',
10056                 range: [2, 8],
10057                 loc: {
10058                     start: { line: 1, column: 2 },
10059                     end: { line: 1, column: 8 }
10060                 }
10061             }],
10062             range: [0, 9],
10063             loc: {
10064                 start: { line: 1, column: 0 },
10065                 end: { line: 1, column: 9 }
10066             }
10067         },
10068
10069         '{ let x = 42 }': {
10070             type: 'BlockStatement',
10071             body: [{
10072                 type: 'VariableDeclaration',
10073                 declarations: [{
10074                     type: 'VariableDeclarator',
10075                     id: {
10076                         type: 'Identifier',
10077                         name: 'x',
10078                         range: [6, 7],
10079                         loc: {
10080                             start: { line: 1, column: 6 },
10081                             end: { line: 1, column: 7 }
10082                         }
10083                     },
10084                     init: {
10085                         type: 'Literal',
10086                         value: 42,
10087                         raw: '42',
10088                         range: [10, 12],
10089                         loc: {
10090                             start: { line: 1, column: 10 },
10091                             end: { line: 1, column: 12 }
10092                         }
10093                     },
10094                     range: [6, 12],
10095                     loc: {
10096                         start: { line: 1, column: 6 },
10097                         end: { line: 1, column: 12 }
10098                     }
10099                 }],
10100                 kind: 'let',
10101                 range: [2, 13],
10102                 loc: {
10103                     start: { line: 1, column: 2 },
10104                     end: { line: 1, column: 13 }
10105                 }
10106             }],
10107             range: [0, 14],
10108             loc: {
10109                 start: { line: 1, column: 0 },
10110                 end: { line: 1, column: 14 }
10111             }
10112         },
10113
10114         '{ let x = 14, y = 3, z = 1977 }': {
10115             type: 'BlockStatement',
10116             body: [{
10117                 type: 'VariableDeclaration',
10118                 declarations: [{
10119                     type: 'VariableDeclarator',
10120                     id: {
10121                         type: 'Identifier',
10122                         name: 'x',
10123                         range: [6, 7],
10124                         loc: {
10125                             start: { line: 1, column: 6 },
10126                             end: { line: 1, column: 7 }
10127                         }
10128                     },
10129                     init: {
10130                         type: 'Literal',
10131                         value: 14,
10132                         raw: '14',
10133                         range: [10, 12],
10134                         loc: {
10135                             start: { line: 1, column: 10 },
10136                             end: { line: 1, column: 12 }
10137                         }
10138                     },
10139                     range: [6, 12],
10140                     loc: {
10141                         start: { line: 1, column: 6 },
10142                         end: { line: 1, column: 12 }
10143                     }
10144                 }, {
10145                     type: 'VariableDeclarator',
10146                     id: {
10147                         type: 'Identifier',
10148                         name: 'y',
10149                         range: [14, 15],
10150                         loc: {
10151                             start: { line: 1, column: 14 },
10152                             end: { line: 1, column: 15 }
10153                         }
10154                     },
10155                     init: {
10156                         type: 'Literal',
10157                         value: 3,
10158                         raw: '3',
10159                         range: [18, 19],
10160                         loc: {
10161                             start: { line: 1, column: 18 },
10162                             end: { line: 1, column: 19 }
10163                         }
10164                     },
10165                     range: [14, 19],
10166                     loc: {
10167                         start: { line: 1, column: 14 },
10168                         end: { line: 1, column: 19 }
10169                     }
10170                 }, {
10171                     type: 'VariableDeclarator',
10172                     id: {
10173                         type: 'Identifier',
10174                         name: 'z',
10175                         range: [21, 22],
10176                         loc: {
10177                             start: { line: 1, column: 21 },
10178                             end: { line: 1, column: 22 }
10179                         }
10180                     },
10181                     init: {
10182                         type: 'Literal',
10183                         value: 1977,
10184                         raw: '1977',
10185                         range: [25, 29],
10186                         loc: {
10187                             start: { line: 1, column: 25 },
10188                             end: { line: 1, column: 29 }
10189                         }
10190                     },
10191                     range: [21, 29],
10192                     loc: {
10193                         start: { line: 1, column: 21 },
10194                         end: { line: 1, column: 29 }
10195                     }
10196                 }],
10197                 kind: 'let',
10198                 range: [2, 30],
10199                 loc: {
10200                     start: { line: 1, column: 2 },
10201                     end: { line: 1, column: 30 }
10202                 }
10203             }],
10204             range: [0, 31],
10205             loc: {
10206                 start: { line: 1, column: 0 },
10207                 end: { line: 1, column: 31 }
10208             }
10209         }
10210
10211     },
10212
10213     'Const Statement': {
10214
10215         'const x = 42': {
10216             type: 'VariableDeclaration',
10217             declarations: [{
10218                 type: 'VariableDeclarator',
10219                 id: {
10220                     type: 'Identifier',
10221                     name: 'x',
10222                     range: [6, 7],
10223                     loc: {
10224                         start: { line: 1, column: 6 },
10225                         end: { line: 1, column: 7 }
10226                     }
10227                 },
10228                 init: {
10229                     type: 'Literal',
10230                     value: 42,
10231                     raw: '42',
10232                     range: [10, 12],
10233                     loc: {
10234                         start: { line: 1, column: 10 },
10235                         end: { line: 1, column: 12 }
10236                     }
10237                 },
10238                 range: [6, 12],
10239                 loc: {
10240                     start: { line: 1, column: 6 },
10241                     end: { line: 1, column: 12 }
10242                 }
10243             }],
10244             kind: 'const',
10245             range: [0, 12],
10246             loc: {
10247                 start: { line: 1, column: 0 },
10248                 end: { line: 1, column: 12 }
10249             }
10250         },
10251
10252         '{ const x = 42 }': {
10253             type: 'BlockStatement',
10254             body: [{
10255                 type: 'VariableDeclaration',
10256                 declarations: [{
10257                     type: 'VariableDeclarator',
10258                     id: {
10259                         type: 'Identifier',
10260                         name: 'x',
10261                         range: [8, 9],
10262                         loc: {
10263                             start: { line: 1, column: 8 },
10264                             end: { line: 1, column: 9 }
10265                         }
10266                     },
10267                     init: {
10268                         type: 'Literal',
10269                         value: 42,
10270                         raw: '42',
10271                         range: [12, 14],
10272                         loc: {
10273                             start: { line: 1, column: 12 },
10274                             end: { line: 1, column: 14 }
10275                         }
10276                     },
10277                     range: [8, 14],
10278                     loc: {
10279                         start: { line: 1, column: 8 },
10280                         end: { line: 1, column: 14 }
10281                     }
10282                 }],
10283                 kind: 'const',
10284                 range: [2, 15],
10285                 loc: {
10286                     start: { line: 1, column: 2 },
10287                     end: { line: 1, column: 15 }
10288                 }
10289             }],
10290             range: [0, 16],
10291             loc: {
10292                 start: { line: 1, column: 0 },
10293                 end: { line: 1, column: 16 }
10294             }
10295         },
10296
10297         '{ const x = 14, y = 3, z = 1977 }': {
10298             type: 'BlockStatement',
10299             body: [{
10300                 type: 'VariableDeclaration',
10301                 declarations: [{
10302                     type: 'VariableDeclarator',
10303                     id: {
10304                         type: 'Identifier',
10305                         name: 'x',
10306                         range: [8, 9],
10307                         loc: {
10308                             start: { line: 1, column: 8 },
10309                             end: { line: 1, column: 9 }
10310                         }
10311                     },
10312                     init: {
10313                         type: 'Literal',
10314                         value: 14,
10315                         raw: '14',
10316                         range: [12, 14],
10317                         loc: {
10318                             start: { line: 1, column: 12 },
10319                             end: { line: 1, column: 14 }
10320                         }
10321                     },
10322                     range: [8, 14],
10323                     loc: {
10324                         start: { line: 1, column: 8 },
10325                         end: { line: 1, column: 14 }
10326                     }
10327                 }, {
10328                     type: 'VariableDeclarator',
10329                     id: {
10330                         type: 'Identifier',
10331                         name: 'y',
10332                         range: [16, 17],
10333                         loc: {
10334                             start: { line: 1, column: 16 },
10335                             end: { line: 1, column: 17 }
10336                         }
10337                     },
10338                     init: {
10339                         type: 'Literal',
10340                         value: 3,
10341                         raw: '3',
10342                         range: [20, 21],
10343                         loc: {
10344                             start: { line: 1, column: 20 },
10345                             end: { line: 1, column: 21 }
10346                         }
10347                     },
10348                     range: [16, 21],
10349                     loc: {
10350                         start: { line: 1, column: 16 },
10351                         end: { line: 1, column: 21 }
10352                     }
10353                 }, {
10354                     type: 'VariableDeclarator',
10355                     id: {
10356                         type: 'Identifier',
10357                         name: 'z',
10358                         range: [23, 24],
10359                         loc: {
10360                             start: { line: 1, column: 23 },
10361                             end: { line: 1, column: 24 }
10362                         }
10363                     },
10364                     init: {
10365                         type: 'Literal',
10366                         value: 1977,
10367                         raw: '1977',
10368                         range: [27, 31],
10369                         loc: {
10370                             start: { line: 1, column: 27 },
10371                             end: { line: 1, column: 31 }
10372                         }
10373                     },
10374                     range: [23, 31],
10375                     loc: {
10376                         start: { line: 1, column: 23 },
10377                         end: { line: 1, column: 31 }
10378                     }
10379                 }],
10380                 kind: 'const',
10381                 range: [2, 32],
10382                 loc: {
10383                     start: { line: 1, column: 2 },
10384                     end: { line: 1, column: 32 }
10385                 }
10386             }],
10387             range: [0, 33],
10388             loc: {
10389                 start: { line: 1, column: 0 },
10390                 end: { line: 1, column: 33 }
10391             }
10392         }
10393
10394     },
10395
10396     'Empty Statement': {
10397
10398         ';': {
10399             type: 'EmptyStatement',
10400             range: [0, 1],
10401             loc: {
10402                 start: { line: 1, column: 0 },
10403                 end: { line: 1, column: 1 }
10404             }
10405         }
10406
10407     },
10408
10409     'Expression Statement': {
10410
10411         'x': {
10412             type: 'ExpressionStatement',
10413             expression: {
10414                 type: 'Identifier',
10415                 name: 'x',
10416                 range: [0, 1],
10417                 loc: {
10418                     start: { line: 1, column: 0 },
10419                     end: { line: 1, column: 1 }
10420                 }
10421             },
10422             range: [0, 1],
10423             loc: {
10424                 start: { line: 1, column: 0 },
10425                 end: { line: 1, column: 1 }
10426             }
10427         },
10428
10429         'x, y': {
10430             type: 'ExpressionStatement',
10431             expression: {
10432                 type: 'SequenceExpression',
10433                 expressions: [{
10434                     type: 'Identifier',
10435                     name: 'x',
10436                     range: [0, 1],
10437                     loc: {
10438                         start: { line: 1, column: 0 },
10439                         end: { line: 1, column: 1 }
10440                     }
10441                 }, {
10442                     type: 'Identifier',
10443                     name: 'y',
10444                     range: [3, 4],
10445                     loc: {
10446                         start: { line: 1, column: 3 },
10447                         end: { line: 1, column: 4 }
10448                     }
10449                 }],
10450                 range: [0, 4],
10451                 loc: {
10452                     start: { line: 1, column: 0 },
10453                     end: { line: 1, column: 4 }
10454                 }
10455             },
10456             range: [0, 4],
10457             loc: {
10458                 start: { line: 1, column: 0 },
10459                 end: { line: 1, column: 4 }
10460             }
10461         },
10462
10463         '\\u0061': {
10464             type: 'ExpressionStatement',
10465             expression: {
10466                 type: 'Identifier',
10467                 name: 'a',
10468                 range: [0, 6],
10469                 loc: {
10470                     start: { line: 1, column: 0 },
10471                     end: { line: 1, column: 6 }
10472                 }
10473             },
10474             range: [0, 6],
10475             loc: {
10476                 start: { line: 1, column: 0 },
10477                 end: { line: 1, column: 6 }
10478             }
10479         },
10480
10481         'a\\u0061': {
10482             type: 'ExpressionStatement',
10483             expression: {
10484                 type: 'Identifier',
10485                 name: 'aa',
10486                 range: [0, 7],
10487                 loc: {
10488                     start: { line: 1, column: 0 },
10489                     end: { line: 1, column: 7 }
10490                 }
10491             },
10492             range: [0, 7],
10493             loc: {
10494                 start: { line: 1, column: 0 },
10495                 end: { line: 1, column: 7 }
10496             }
10497         },
10498
10499         '\\ua': {
10500             type: 'ExpressionStatement',
10501             expression: {
10502                 type: 'Identifier',
10503                 name: 'ua',
10504                 range: [0, 3],
10505                 loc: {
10506                     start: { line: 1, column: 0 },
10507                     end: { line: 1, column: 3 }
10508                 }
10509             },
10510             range: [0, 3],
10511             loc: {
10512                 start: { line: 1, column: 0 },
10513                 end: { line: 1, column: 3 }
10514             }
10515         },
10516
10517         'a\\u': {
10518             type: 'ExpressionStatement',
10519             expression: {
10520                 type: 'Identifier',
10521                 name: 'au',
10522                 range: [0, 3],
10523                 loc: {
10524                     start: { line: 1, column: 0 },
10525                     end: { line: 1, column: 3 }
10526                 }
10527             },
10528             range: [0, 3],
10529             loc: {
10530                 start: { line: 1, column: 0 },
10531                 end: { line: 1, column: 3 }
10532             }
10533         }
10534
10535     },
10536
10537     'If Statement': {
10538
10539         'if (morning) goodMorning()': {
10540             type: 'IfStatement',
10541             test: {
10542                 type: 'Identifier',
10543                 name: 'morning',
10544                 range: [4, 11],
10545                 loc: {
10546                     start: { line: 1, column: 4 },
10547                     end: { line: 1, column: 11 }
10548                 }
10549             },
10550             consequent: {
10551                 type: 'ExpressionStatement',
10552                 expression: {
10553                     type: 'CallExpression',
10554                     callee: {
10555                         type: 'Identifier',
10556                         name: 'goodMorning',
10557                         range: [13, 24],
10558                         loc: {
10559                             start: { line: 1, column: 13 },
10560                             end: { line: 1, column: 24 }
10561                         }
10562                     },
10563                     'arguments': [],
10564                     range: [13, 26],
10565                     loc: {
10566                         start: { line: 1, column: 13 },
10567                         end: { line: 1, column: 26 }
10568                     }
10569                 },
10570                 range: [13, 26],
10571                 loc: {
10572                     start: { line: 1, column: 13 },
10573                     end: { line: 1, column: 26 }
10574                 }
10575             },
10576             alternate: null,
10577             range: [0, 26],
10578             loc: {
10579                 start: { line: 1, column: 0 },
10580                 end: { line: 1, column: 26 }
10581             }
10582         },
10583
10584         'if (morning) (function(){})': {
10585             type: 'IfStatement',
10586             test: {
10587                 type: 'Identifier',
10588                 name: 'morning',
10589                 range: [4, 11],
10590                 loc: {
10591                     start: { line: 1, column: 4 },
10592                     end: { line: 1, column: 11 }
10593                 }
10594             },
10595             consequent: {
10596                 type: 'ExpressionStatement',
10597                 expression: {
10598                     type: 'FunctionExpression',
10599                     id: null,
10600                     params: [],
10601                     defaults: [],
10602                     body: {
10603                         type: 'BlockStatement',
10604                         body: [],
10605                         range: [24, 26],
10606                         loc: {
10607                             start: { line: 1, column: 24 },
10608                             end: { line: 1, column: 26 }
10609                         }
10610                     },
10611                     rest: null,
10612                     generator: false,
10613                     expression: false,
10614                     range: [14, 26],
10615                     loc: {
10616                         start: { line: 1, column: 14 },
10617                         end: { line: 1, column: 26 }
10618                     }
10619                 },
10620                 range: [13, 27],
10621                 loc: {
10622                     start: { line: 1, column: 13 },
10623                     end: { line: 1, column: 27 }
10624                 }
10625             },
10626             alternate: null,
10627             range: [0, 27],
10628             loc: {
10629                 start: { line: 1, column: 0 },
10630                 end: { line: 1, column: 27 }
10631             }
10632         },
10633
10634         'if (morning) var x = 0;': {
10635             type: 'IfStatement',
10636             test: {
10637                 type: 'Identifier',
10638                 name: 'morning',
10639                 range: [4, 11],
10640                 loc: {
10641                     start: { line: 1, column: 4 },
10642                     end: { line: 1, column: 11 }
10643                 }
10644             },
10645             consequent: {
10646                 type: 'VariableDeclaration',
10647                 declarations: [{
10648                     type: 'VariableDeclarator',
10649                     id: {
10650                         type: 'Identifier',
10651                         name: 'x',
10652                         range: [17, 18],
10653                         loc: {
10654                             start: { line: 1, column: 17 },
10655                             end: { line: 1, column: 18 }
10656                         }
10657                     },
10658                     init: {
10659                         type: 'Literal',
10660                         value: 0,
10661                         raw: '0',
10662                         range: [21, 22],
10663                         loc: {
10664                             start: { line: 1, column: 21 },
10665                             end: { line: 1, column: 22 }
10666                         }
10667                     },
10668                     range: [17, 22],
10669                     loc: {
10670                         start: { line: 1, column: 17 },
10671                         end: { line: 1, column: 22 }
10672                     }
10673                 }],
10674                 kind: 'var',
10675                 range: [13, 23],
10676                 loc: {
10677                     start: { line: 1, column: 13 },
10678                     end: { line: 1, column: 23 }
10679                 }
10680             },
10681             alternate: null,
10682             range: [0, 23],
10683             loc: {
10684                 start: { line: 1, column: 0 },
10685                 end: { line: 1, column: 23 }
10686             }
10687         },
10688
10689         'if (morning) function a(){}': {
10690             type: 'IfStatement',
10691             test: {
10692                 type: 'Identifier',
10693                 name: 'morning',
10694                 range: [4, 11],
10695                 loc: {
10696                     start: { line: 1, column: 4 },
10697                     end: { line: 1, column: 11 }
10698                 }
10699             },
10700             consequent: {
10701                 type: 'FunctionDeclaration',
10702                 id: {
10703                     type: 'Identifier',
10704                     name: 'a',
10705                     range: [22, 23],
10706                     loc: {
10707                         start: { line: 1, column: 22 },
10708                         end: { line: 1, column: 23 }
10709                     }
10710                 },
10711                 params: [],
10712                 defaults: [],
10713                 body: {
10714                     type: 'BlockStatement',
10715                     body: [],
10716                     range: [25, 27],
10717                     loc: {
10718                         start: { line: 1, column: 25 },
10719                         end: { line: 1, column: 27 }
10720                     }
10721                 },
10722                 rest: null,
10723                 generator: false,
10724                 expression: false,
10725                 range: [13, 27],
10726                 loc: {
10727                     start: { line: 1, column: 13 },
10728                     end: { line: 1, column: 27 }
10729                 }
10730             },
10731             alternate: null,
10732             range: [0, 27],
10733             loc: {
10734                 start: { line: 1, column: 0 },
10735                 end: { line: 1, column: 27 }
10736             }
10737         },
10738
10739         'if (morning) goodMorning(); else goodDay()': {
10740             type: 'IfStatement',
10741             test: {
10742                 type: 'Identifier',
10743                 name: 'morning',
10744                 range: [4, 11],
10745                 loc: {
10746                     start: { line: 1, column: 4 },
10747                     end: { line: 1, column: 11 }
10748                 }
10749             },
10750             consequent: {
10751                 type: 'ExpressionStatement',
10752                 expression: {
10753                     type: 'CallExpression',
10754                     callee: {
10755                         type: 'Identifier',
10756                         name: 'goodMorning',
10757                         range: [13, 24],
10758                         loc: {
10759                             start: { line: 1, column: 13 },
10760                             end: { line: 1, column: 24 }
10761                         }
10762                     },
10763                     'arguments': [],
10764                     range: [13, 26],
10765                     loc: {
10766                         start: { line: 1, column: 13 },
10767                         end: { line: 1, column: 26 }
10768                     }
10769                 },
10770                 range: [13, 27],
10771                 loc: {
10772                     start: { line: 1, column: 13 },
10773                     end: { line: 1, column: 27 }
10774                 }
10775             },
10776             alternate: {
10777                 type: 'ExpressionStatement',
10778                 expression: {
10779                     type: 'CallExpression',
10780                     callee: {
10781                         type: 'Identifier',
10782                         name: 'goodDay',
10783                         range: [33, 40],
10784                         loc: {
10785                             start: { line: 1, column: 33 },
10786                             end: { line: 1, column: 40 }
10787                         }
10788                     },
10789                     'arguments': [],
10790                     range: [33, 42],
10791                     loc: {
10792                         start: { line: 1, column: 33 },
10793                         end: { line: 1, column: 42 }
10794                     }
10795                 },
10796                 range: [33, 42],
10797                 loc: {
10798                     start: { line: 1, column: 33 },
10799                     end: { line: 1, column: 42 }
10800                 }
10801             },
10802             range: [0, 42],
10803             loc: {
10804                 start: { line: 1, column: 0 },
10805                 end: { line: 1, column: 42 }
10806             }
10807         }
10808
10809     },
10810
10811     'Iteration Statements': {
10812
10813         'do keep(); while (true)': {
10814             type: 'DoWhileStatement',
10815             body: {
10816                 type: 'ExpressionStatement',
10817                 expression: {
10818                     type: 'CallExpression',
10819                     callee: {
10820                         type: 'Identifier',
10821                         name: 'keep',
10822                         range: [3, 7],
10823                         loc: {
10824                             start: { line: 1, column: 3 },
10825                             end: { line: 1, column: 7 }
10826                         }
10827                     },
10828                     'arguments': [],
10829                     range: [3, 9],
10830                     loc: {
10831                         start: { line: 1, column: 3 },
10832                         end: { line: 1, column: 9 }
10833                     }
10834                 },
10835                 range: [3, 10],
10836                 loc: {
10837                     start: { line: 1, column: 3 },
10838                     end: { line: 1, column: 10 }
10839                 }
10840             },
10841             test: {
10842                 type: 'Literal',
10843                 value: true,
10844                 raw: 'true',
10845                 range: [18, 22],
10846                 loc: {
10847                     start: { line: 1, column: 18 },
10848                     end: { line: 1, column: 22 }
10849                 }
10850             },
10851             range: [0, 23],
10852             loc: {
10853                 start: { line: 1, column: 0 },
10854                 end: { line: 1, column: 23 }
10855             }
10856         },
10857
10858         'do keep(); while (true);': {
10859             type: 'DoWhileStatement',
10860             body: {
10861                 type: 'ExpressionStatement',
10862                 expression: {
10863                     type: 'CallExpression',
10864                     callee: {
10865                         type: 'Identifier',
10866                         name: 'keep',
10867                         range: [3, 7],
10868                         loc: {
10869                             start: { line: 1, column: 3 },
10870                             end: { line: 1, column: 7 }
10871                         }
10872                     },
10873                     'arguments': [],
10874                     range: [3, 9],
10875                     loc: {
10876                         start: { line: 1, column: 3 },
10877                         end: { line: 1, column: 9 }
10878                     }
10879                 },
10880                 range: [3, 10],
10881                 loc: {
10882                     start: { line: 1, column: 3 },
10883                     end: { line: 1, column: 10 }
10884                 }
10885             },
10886             test: {
10887                 type: 'Literal',
10888                 value: true,
10889                 raw: 'true',
10890                 range: [18, 22],
10891                 loc: {
10892                     start: { line: 1, column: 18 },
10893                     end: { line: 1, column: 22 }
10894                 }
10895             },
10896             range: [0, 24],
10897             loc: {
10898                 start: { line: 1, column: 0 },
10899                 end: { line: 1, column: 24 }
10900             }
10901         },
10902
10903         'do { x++; y--; } while (x < 10)': {
10904             type: 'DoWhileStatement',
10905             body: {
10906                 type: 'BlockStatement',
10907                 body: [{
10908                     type: 'ExpressionStatement',
10909                     expression: {
10910                         type: 'UpdateExpression',
10911                         operator: '++',
10912                         argument: {
10913                             type: 'Identifier',
10914                             name: 'x',
10915                             range: [5, 6],
10916                             loc: {
10917                                 start: { line: 1, column: 5 },
10918                                 end: { line: 1, column: 6 }
10919                             }
10920                         },
10921                         prefix: false,
10922                         range: [5, 8],
10923                         loc: {
10924                             start: { line: 1, column: 5 },
10925                             end: { line: 1, column: 8 }
10926                         }
10927                     },
10928                     range: [5, 9],
10929                     loc: {
10930                         start: { line: 1, column: 5 },
10931                         end: { line: 1, column: 9 }
10932                     }
10933                 }, {
10934                     type: 'ExpressionStatement',
10935                     expression: {
10936                         type: 'UpdateExpression',
10937                         operator: '--',
10938                         argument: {
10939                             type: 'Identifier',
10940                             name: 'y',
10941                             range: [10, 11],
10942                             loc: {
10943                                 start: { line: 1, column: 10 },
10944                                 end: { line: 1, column: 11 }
10945                             }
10946                         },
10947                         prefix: false,
10948                         range: [10, 13],
10949                         loc: {
10950                             start: { line: 1, column: 10 },
10951                             end: { line: 1, column: 13 }
10952                         }
10953                     },
10954                     range: [10, 14],
10955                     loc: {
10956                         start: { line: 1, column: 10 },
10957                         end: { line: 1, column: 14 }
10958                     }
10959                 }],
10960                 range: [3, 16],
10961                 loc: {
10962                     start: { line: 1, column: 3 },
10963                     end: { line: 1, column: 16 }
10964                 }
10965             },
10966             test: {
10967                 type: 'BinaryExpression',
10968                 operator: '<',
10969                 left: {
10970                     type: 'Identifier',
10971                     name: 'x',
10972                     range: [24, 25],
10973                     loc: {
10974                         start: { line: 1, column: 24 },
10975                         end: { line: 1, column: 25 }
10976                     }
10977                 },
10978                 right: {
10979                     type: 'Literal',
10980                     value: 10,
10981                     raw: '10',
10982                     range: [28, 30],
10983                     loc: {
10984                         start: { line: 1, column: 28 },
10985                         end: { line: 1, column: 30 }
10986                     }
10987                 },
10988                 range: [24, 30],
10989                 loc: {
10990                     start: { line: 1, column: 24 },
10991                     end: { line: 1, column: 30 }
10992                 }
10993             },
10994             range: [0, 31],
10995             loc: {
10996                 start: { line: 1, column: 0 },
10997                 end: { line: 1, column: 31 }
10998             }
10999         },
11000
11001         '{ do { } while (false) false }': {
11002             type: 'BlockStatement',
11003             body: [{
11004                 type: 'DoWhileStatement',
11005                 body: {
11006                     type: 'BlockStatement',
11007                     body: [],
11008                     range: [5, 8],
11009                     loc: {
11010                         start: { line: 1, column: 5 },
11011                         end: { line: 1, column: 8 }
11012                     }
11013                 },
11014                 test: {
11015                     type: 'Literal',
11016                     value: false,
11017                     raw: 'false',
11018                     range: [16, 21],
11019                     loc: {
11020                         start: { line: 1, column: 16 },
11021                         end: { line: 1, column: 21 }
11022                     }
11023                 },
11024                 range: [2, 22],
11025                 loc: {
11026                     start: { line: 1, column: 2 },
11027                     end: { line: 1, column: 22 }
11028                 }
11029             }, {
11030                 type: 'ExpressionStatement',
11031                 expression: {
11032                     type: 'Literal',
11033                     value: false,
11034                     raw: 'false',
11035                     range: [23, 28],
11036                     loc: {
11037                         start: { line: 1, column: 23 },
11038                         end: { line: 1, column: 28 }
11039                     }
11040                 },
11041                 range: [23, 29],
11042                 loc: {
11043                     start: { line: 1, column: 23 },
11044                     end: { line: 1, column: 29 }
11045                 }
11046             }],
11047             range: [0, 30],
11048             loc: {
11049                 start: { line: 1, column: 0 },
11050                 end: { line: 1, column: 30 }
11051             }
11052         },
11053
11054         'while (true) doSomething()': {
11055             type: 'WhileStatement',
11056             test: {
11057                 type: 'Literal',
11058                 value: true,
11059                 raw: 'true',
11060                 range: [7, 11],
11061                 loc: {
11062                     start: { line: 1, column: 7 },
11063                     end: { line: 1, column: 11 }
11064                 }
11065             },
11066             body: {
11067                 type: 'ExpressionStatement',
11068                 expression: {
11069                     type: 'CallExpression',
11070                     callee: {
11071                         type: 'Identifier',
11072                         name: 'doSomething',
11073                         range: [13, 24],
11074                         loc: {
11075                             start: { line: 1, column: 13 },
11076                             end: { line: 1, column: 24 }
11077                         }
11078                     },
11079                     'arguments': [],
11080                     range: [13, 26],
11081                     loc: {
11082                         start: { line: 1, column: 13 },
11083                         end: { line: 1, column: 26 }
11084                     }
11085                 },
11086                 range: [13, 26],
11087                 loc: {
11088                     start: { line: 1, column: 13 },
11089                     end: { line: 1, column: 26 }
11090                 }
11091             },
11092             range: [0, 26],
11093             loc: {
11094                 start: { line: 1, column: 0 },
11095                 end: { line: 1, column: 26 }
11096             }
11097         },
11098
11099         'while (x < 10) { x++; y--; }': {
11100             type: 'WhileStatement',
11101             test: {
11102                 type: 'BinaryExpression',
11103                 operator: '<',
11104                 left: {
11105                     type: 'Identifier',
11106                     name: 'x',
11107                     range: [7, 8],
11108                     loc: {
11109                         start: { line: 1, column: 7 },
11110                         end: { line: 1, column: 8 }
11111                     }
11112                 },
11113                 right: {
11114                     type: 'Literal',
11115                     value: 10,
11116                     raw: '10',
11117                     range: [11, 13],
11118                     loc: {
11119                         start: { line: 1, column: 11 },
11120                         end: { line: 1, column: 13 }
11121                     }
11122                 },
11123                 range: [7, 13],
11124                 loc: {
11125                     start: { line: 1, column: 7 },
11126                     end: { line: 1, column: 13 }
11127                 }
11128             },
11129             body: {
11130                 type: 'BlockStatement',
11131                 body: [{
11132                     type: 'ExpressionStatement',
11133                     expression: {
11134                         type: 'UpdateExpression',
11135                         operator: '++',
11136                         argument: {
11137                             type: 'Identifier',
11138                             name: 'x',
11139                             range: [17, 18],
11140                             loc: {
11141                                 start: { line: 1, column: 17 },
11142                                 end: { line: 1, column: 18 }
11143                             }
11144                         },
11145                         prefix: false,
11146                         range: [17, 20],
11147                         loc: {
11148                             start: { line: 1, column: 17 },
11149                             end: { line: 1, column: 20 }
11150                         }
11151                     },
11152                     range: [17, 21],
11153                     loc: {
11154                         start: { line: 1, column: 17 },
11155                         end: { line: 1, column: 21 }
11156                     }
11157                 }, {
11158                     type: 'ExpressionStatement',
11159                     expression: {
11160                         type: 'UpdateExpression',
11161                         operator: '--',
11162                         argument: {
11163                             type: 'Identifier',
11164                             name: 'y',
11165                             range: [22, 23],
11166                             loc: {
11167                                 start: { line: 1, column: 22 },
11168                                 end: { line: 1, column: 23 }
11169                             }
11170                         },
11171                         prefix: false,
11172                         range: [22, 25],
11173                         loc: {
11174                             start: { line: 1, column: 22 },
11175                             end: { line: 1, column: 25 }
11176                         }
11177                     },
11178                     range: [22, 26],
11179                     loc: {
11180                         start: { line: 1, column: 22 },
11181                         end: { line: 1, column: 26 }
11182                     }
11183                 }],
11184                 range: [15, 28],
11185                 loc: {
11186                     start: { line: 1, column: 15 },
11187                     end: { line: 1, column: 28 }
11188                 }
11189             },
11190             range: [0, 28],
11191             loc: {
11192                 start: { line: 1, column: 0 },
11193                 end: { line: 1, column: 28 }
11194             }
11195         },
11196
11197         'for(;;);': {
11198             type: 'ForStatement',
11199             init: null,
11200             test: null,
11201             update: null,
11202             body: {
11203                 type: 'EmptyStatement',
11204                 range: [7, 8],
11205                 loc: {
11206                     start: { line: 1, column: 7 },
11207                     end: { line: 1, column: 8 }
11208                 }
11209             },
11210             range: [0, 8],
11211             loc: {
11212                 start: { line: 1, column: 0 },
11213                 end: { line: 1, column: 8 }
11214             }
11215         },
11216
11217         'for(;;){}': {
11218             type: 'ForStatement',
11219             init: null,
11220             test: null,
11221             update: null,
11222             body: {
11223                 type: 'BlockStatement',
11224                 body: [],
11225                 range: [7, 9],
11226                 loc: {
11227                     start: { line: 1, column: 7 },
11228                     end: { line: 1, column: 9 }
11229                 }
11230             },
11231             range: [0, 9],
11232             loc: {
11233                 start: { line: 1, column: 0 },
11234                 end: { line: 1, column: 9 }
11235             }
11236         },
11237
11238         'for(x = 0;;);': {
11239             type: 'ForStatement',
11240             init: {
11241                 type: 'AssignmentExpression',
11242                 operator: '=',
11243                 left: {
11244                     type: 'Identifier',
11245                     name: 'x',
11246                     range: [4, 5],
11247                     loc: {
11248                         start: { line: 1, column: 4 },
11249                         end: { line: 1, column: 5 }
11250                     }
11251                 },
11252                 right: {
11253                     type: 'Literal',
11254                     value: 0,
11255                     raw: '0',
11256                     range: [8, 9],
11257                     loc: {
11258                         start: { line: 1, column: 8 },
11259                         end: { line: 1, column: 9 }
11260                     }
11261                 },
11262                 range: [4, 9],
11263                 loc: {
11264                     start: { line: 1, column: 4 },
11265                     end: { line: 1, column: 9 }
11266                 }
11267             },
11268             test: null,
11269             update: null,
11270             body: {
11271                 type: 'EmptyStatement',
11272                 range: [12, 13],
11273                 loc: {
11274                     start: { line: 1, column: 12 },
11275                     end: { line: 1, column: 13 }
11276                 }
11277             },
11278             range: [0, 13],
11279             loc: {
11280                 start: { line: 1, column: 0 },
11281                 end: { line: 1, column: 13 }
11282             }
11283         },
11284
11285         'for(var x = 0;;);': {
11286             type: 'ForStatement',
11287             init: {
11288                 type: 'VariableDeclaration',
11289                 declarations: [{
11290                     type: 'VariableDeclarator',
11291                     id: {
11292                         type: 'Identifier',
11293                         name: 'x',
11294                         range: [8, 9],
11295                         loc: {
11296                             start: { line: 1, column: 8 },
11297                             end: { line: 1, column: 9 }
11298                         }
11299                     },
11300                     init: {
11301                         type: 'Literal',
11302                         value: 0,
11303                         raw: '0',
11304                         range: [12, 13],
11305                         loc: {
11306                             start: { line: 1, column: 12 },
11307                             end: { line: 1, column: 13 }
11308                         }
11309                     },
11310                     range: [8, 13],
11311                     loc: {
11312                         start: { line: 1, column: 8 },
11313                         end: { line: 1, column: 13 }
11314                     }
11315                 }],
11316                 kind: 'var',
11317                 range: [4, 13],
11318                 loc: {
11319                     start: { line: 1, column: 4 },
11320                     end: { line: 1, column: 13 }
11321                 }
11322             },
11323             test: null,
11324             update: null,
11325             body: {
11326                 type: 'EmptyStatement',
11327                 range: [16, 17],
11328                 loc: {
11329                     start: { line: 1, column: 16 },
11330                     end: { line: 1, column: 17 }
11331                 }
11332             },
11333             range: [0, 17],
11334             loc: {
11335                 start: { line: 1, column: 0 },
11336                 end: { line: 1, column: 17 }
11337             }
11338         },
11339
11340         'for(let x = 0;;);': {
11341             type: 'ForStatement',
11342             init: {
11343                 type: 'VariableDeclaration',
11344                 declarations: [{
11345                     type: 'VariableDeclarator',
11346                     id: {
11347                         type: 'Identifier',
11348                         name: 'x',
11349                         range: [8, 9],
11350                         loc: {
11351                             start: { line: 1, column: 8 },
11352                             end: { line: 1, column: 9 }
11353                         }
11354                     },
11355                     init: {
11356                         type: 'Literal',
11357                         value: 0,
11358                         raw: '0',
11359                         range: [12, 13],
11360                         loc: {
11361                             start: { line: 1, column: 12 },
11362                             end: { line: 1, column: 13 }
11363                         }
11364                     },
11365                     range: [8, 13],
11366                     loc: {
11367                         start: { line: 1, column: 8 },
11368                         end: { line: 1, column: 13 }
11369                     }
11370                 }],
11371                 kind: 'let',
11372                 range: [4, 13],
11373                 loc: {
11374                     start: { line: 1, column: 4 },
11375                     end: { line: 1, column: 13 }
11376                 }
11377             },
11378             test: null,
11379             update: null,
11380             body: {
11381                 type: 'EmptyStatement',
11382                 range: [16, 17],
11383                 loc: {
11384                     start: { line: 1, column: 16 },
11385                     end: { line: 1, column: 17 }
11386                 }
11387             },
11388             range: [0, 17],
11389             loc: {
11390                 start: { line: 1, column: 0 },
11391                 end: { line: 1, column: 17 }
11392             }
11393         },
11394
11395         'for(var x = 0, y = 1;;);': {
11396             type: 'ForStatement',
11397             init: {
11398                 type: 'VariableDeclaration',
11399                 declarations: [{
11400                     type: 'VariableDeclarator',
11401                     id: {
11402                         type: 'Identifier',
11403                         name: 'x',
11404                         range: [8, 9],
11405                         loc: {
11406                             start: { line: 1, column: 8 },
11407                             end: { line: 1, column: 9 }
11408                         }
11409                     },
11410                     init: {
11411                         type: 'Literal',
11412                         value: 0,
11413                         raw: '0',
11414                         range: [12, 13],
11415                         loc: {
11416                             start: { line: 1, column: 12 },
11417                             end: { line: 1, column: 13 }
11418                         }
11419                     },
11420                     range: [8, 13],
11421                     loc: {
11422                         start: { line: 1, column: 8 },
11423                         end: { line: 1, column: 13 }
11424                     }
11425                 }, {
11426                     type: 'VariableDeclarator',
11427                     id: {
11428                         type: 'Identifier',
11429                         name: 'y',
11430                         range: [15, 16],
11431                         loc: {
11432                             start: { line: 1, column: 15 },
11433                             end: { line: 1, column: 16 }
11434                         }
11435                     },
11436                     init: {
11437                         type: 'Literal',
11438                         value: 1,
11439                         raw: '1',
11440                         range: [19, 20],
11441                         loc: {
11442                             start: { line: 1, column: 19 },
11443                             end: { line: 1, column: 20 }
11444                         }
11445                     },
11446                     range: [15, 20],
11447                     loc: {
11448                         start: { line: 1, column: 15 },
11449                         end: { line: 1, column: 20 }
11450                     }
11451                 }],
11452                 kind: 'var',
11453                 range: [4, 20],
11454                 loc: {
11455                     start: { line: 1, column: 4 },
11456                     end: { line: 1, column: 20 }
11457                 }
11458             },
11459             test: null,
11460             update: null,
11461             body: {
11462                 type: 'EmptyStatement',
11463                 range: [23, 24],
11464                 loc: {
11465                     start: { line: 1, column: 23 },
11466                     end: { line: 1, column: 24 }
11467                 }
11468             },
11469             range: [0, 24],
11470             loc: {
11471                 start: { line: 1, column: 0 },
11472                 end: { line: 1, column: 24 }
11473             }
11474         },
11475
11476         'for(x = 0; x < 42;);': {
11477             type: 'ForStatement',
11478             init: {
11479                 type: 'AssignmentExpression',
11480                 operator: '=',
11481                 left: {
11482                     type: 'Identifier',
11483                     name: 'x',
11484                     range: [4, 5],
11485                     loc: {
11486                         start: { line: 1, column: 4 },
11487                         end: { line: 1, column: 5 }
11488                     }
11489                 },
11490                 right: {
11491                     type: 'Literal',
11492                     value: 0,
11493                     raw: '0',
11494                     range: [8, 9],
11495                     loc: {
11496                         start: { line: 1, column: 8 },
11497                         end: { line: 1, column: 9 }
11498                     }
11499                 },
11500                 range: [4, 9],
11501                 loc: {
11502                     start: { line: 1, column: 4 },
11503                     end: { line: 1, column: 9 }
11504                 }
11505             },
11506             test: {
11507                 type: 'BinaryExpression',
11508                 operator: '<',
11509                 left: {
11510                     type: 'Identifier',
11511                     name: 'x',
11512                     range: [11, 12],
11513                     loc: {
11514                         start: { line: 1, column: 11 },
11515                         end: { line: 1, column: 12 }
11516                     }
11517                 },
11518                 right: {
11519                     type: 'Literal',
11520                     value: 42,
11521                     raw: '42',
11522                     range: [15, 17],
11523                     loc: {
11524                         start: { line: 1, column: 15 },
11525                         end: { line: 1, column: 17 }
11526                     }
11527                 },
11528                 range: [11, 17],
11529                 loc: {
11530                     start: { line: 1, column: 11 },
11531                     end: { line: 1, column: 17 }
11532                 }
11533             },
11534             update: null,
11535             body: {
11536                 type: 'EmptyStatement',
11537                 range: [19, 20],
11538                 loc: {
11539                     start: { line: 1, column: 19 },
11540                     end: { line: 1, column: 20 }
11541                 }
11542             },
11543             range: [0, 20],
11544             loc: {
11545                 start: { line: 1, column: 0 },
11546                 end: { line: 1, column: 20 }
11547             }
11548         },
11549
11550         'for(x = 0; x < 42; x++);': {
11551             type: 'ForStatement',
11552             init: {
11553                 type: 'AssignmentExpression',
11554                 operator: '=',
11555                 left: {
11556                     type: 'Identifier',
11557                     name: 'x',
11558                     range: [4, 5],
11559                     loc: {
11560                         start: { line: 1, column: 4 },
11561                         end: { line: 1, column: 5 }
11562                     }
11563                 },
11564                 right: {
11565                     type: 'Literal',
11566                     value: 0,
11567                     raw: '0',
11568                     range: [8, 9],
11569                     loc: {
11570                         start: { line: 1, column: 8 },
11571                         end: { line: 1, column: 9 }
11572                     }
11573                 },
11574                 range: [4, 9],
11575                 loc: {
11576                     start: { line: 1, column: 4 },
11577                     end: { line: 1, column: 9 }
11578                 }
11579             },
11580             test: {
11581                 type: 'BinaryExpression',
11582                 operator: '<',
11583                 left: {
11584                     type: 'Identifier',
11585                     name: 'x',
11586                     range: [11, 12],
11587                     loc: {
11588                         start: { line: 1, column: 11 },
11589                         end: { line: 1, column: 12 }
11590                     }
11591                 },
11592                 right: {
11593                     type: 'Literal',
11594                     value: 42,
11595                     raw: '42',
11596                     range: [15, 17],
11597                     loc: {
11598                         start: { line: 1, column: 15 },
11599                         end: { line: 1, column: 17 }
11600                     }
11601                 },
11602                 range: [11, 17],
11603                 loc: {
11604                     start: { line: 1, column: 11 },
11605                     end: { line: 1, column: 17 }
11606                 }
11607             },
11608             update: {
11609                 type: 'UpdateExpression',
11610                 operator: '++',
11611                 argument: {
11612                     type: 'Identifier',
11613                     name: 'x',
11614                     range: [19, 20],
11615                     loc: {
11616                         start: { line: 1, column: 19 },
11617                         end: { line: 1, column: 20 }
11618                     }
11619                 },
11620                 prefix: false,
11621                 range: [19, 22],
11622                 loc: {
11623                     start: { line: 1, column: 19 },
11624                     end: { line: 1, column: 22 }
11625                 }
11626             },
11627             body: {
11628                 type: 'EmptyStatement',
11629                 range: [23, 24],
11630                 loc: {
11631                     start: { line: 1, column: 23 },
11632                     end: { line: 1, column: 24 }
11633                 }
11634             },
11635             range: [0, 24],
11636             loc: {
11637                 start: { line: 1, column: 0 },
11638                 end: { line: 1, column: 24 }
11639             }
11640         },
11641
11642         'for(x = 0; x < 42; x++) process(x);': {
11643             type: 'ForStatement',
11644             init: {
11645                 type: 'AssignmentExpression',
11646                 operator: '=',
11647                 left: {
11648                     type: 'Identifier',
11649                     name: 'x',
11650                     range: [4, 5],
11651                     loc: {
11652                         start: { line: 1, column: 4 },
11653                         end: { line: 1, column: 5 }
11654                     }
11655                 },
11656                 right: {
11657                     type: 'Literal',
11658                     value: 0,
11659                     raw: '0',
11660                     range: [8, 9],
11661                     loc: {
11662                         start: { line: 1, column: 8 },
11663                         end: { line: 1, column: 9 }
11664                     }
11665                 },
11666                 range: [4, 9],
11667                 loc: {
11668                     start: { line: 1, column: 4 },
11669                     end: { line: 1, column: 9 }
11670                 }
11671             },
11672             test: {
11673                 type: 'BinaryExpression',
11674                 operator: '<',
11675                 left: {
11676                     type: 'Identifier',
11677                     name: 'x',
11678                     range: [11, 12],
11679                     loc: {
11680                         start: { line: 1, column: 11 },
11681                         end: { line: 1, column: 12 }
11682                     }
11683                 },
11684                 right: {
11685                     type: 'Literal',
11686                     value: 42,
11687                     raw: '42',
11688                     range: [15, 17],
11689                     loc: {
11690                         start: { line: 1, column: 15 },
11691                         end: { line: 1, column: 17 }
11692                     }
11693                 },
11694                 range: [11, 17],
11695                 loc: {
11696                     start: { line: 1, column: 11 },
11697                     end: { line: 1, column: 17 }
11698                 }
11699             },
11700             update: {
11701                 type: 'UpdateExpression',
11702                 operator: '++',
11703                 argument: {
11704                     type: 'Identifier',
11705                     name: 'x',
11706                     range: [19, 20],
11707                     loc: {
11708                         start: { line: 1, column: 19 },
11709                         end: { line: 1, column: 20 }
11710                     }
11711                 },
11712                 prefix: false,
11713                 range: [19, 22],
11714                 loc: {
11715                     start: { line: 1, column: 19 },
11716                     end: { line: 1, column: 22 }
11717                 }
11718             },
11719             body: {
11720                 type: 'ExpressionStatement',
11721                 expression: {
11722                     type: 'CallExpression',
11723                     callee: {
11724                         type: 'Identifier',
11725                         name: 'process',
11726                         range: [24, 31],
11727                         loc: {
11728                             start: { line: 1, column: 24 },
11729                             end: { line: 1, column: 31 }
11730                         }
11731                     },
11732                     'arguments': [{
11733                         type: 'Identifier',
11734                         name: 'x',
11735                         range: [32, 33],
11736                         loc: {
11737                             start: { line: 1, column: 32 },
11738                             end: { line: 1, column: 33 }
11739                         }
11740                     }],
11741                     range: [24, 34],
11742                     loc: {
11743                         start: { line: 1, column: 24 },
11744                         end: { line: 1, column: 34 }
11745                     }
11746                 },
11747                 range: [24, 35],
11748                 loc: {
11749                     start: { line: 1, column: 24 },
11750                     end: { line: 1, column: 35 }
11751                 }
11752             },
11753             range: [0, 35],
11754             loc: {
11755                 start: { line: 1, column: 0 },
11756                 end: { line: 1, column: 35 }
11757             }
11758         },
11759
11760         'for(x in list) process(x);': {
11761             type: 'ForInStatement',
11762             left: {
11763                 type: 'Identifier',
11764                 name: 'x',
11765                 range: [4, 5],
11766                 loc: {
11767                     start: { line: 1, column: 4 },
11768                     end: { line: 1, column: 5 }
11769                 }
11770             },
11771             right: {
11772                 type: 'Identifier',
11773                 name: 'list',
11774                 range: [9, 13],
11775                 loc: {
11776                     start: { line: 1, column: 9 },
11777                     end: { line: 1, column: 13 }
11778                 }
11779             },
11780             body: {
11781                 type: 'ExpressionStatement',
11782                 expression: {
11783                     type: 'CallExpression',
11784                     callee: {
11785                         type: 'Identifier',
11786                         name: 'process',
11787                         range: [15, 22],
11788                         loc: {
11789                             start: { line: 1, column: 15 },
11790                             end: { line: 1, column: 22 }
11791                         }
11792                     },
11793                     'arguments': [{
11794                         type: 'Identifier',
11795                         name: 'x',
11796                         range: [23, 24],
11797                         loc: {
11798                             start: { line: 1, column: 23 },
11799                             end: { line: 1, column: 24 }
11800                         }
11801                     }],
11802                     range: [15, 25],
11803                     loc: {
11804                         start: { line: 1, column: 15 },
11805                         end: { line: 1, column: 25 }
11806                     }
11807                 },
11808                 range: [15, 26],
11809                 loc: {
11810                     start: { line: 1, column: 15 },
11811                     end: { line: 1, column: 26 }
11812                 }
11813             },
11814             each: false,
11815             range: [0, 26],
11816             loc: {
11817                 start: { line: 1, column: 0 },
11818                 end: { line: 1, column: 26 }
11819             }
11820         },
11821
11822         'for (var x in list) process(x);': {
11823             type: 'ForInStatement',
11824             left: {
11825                 type: 'VariableDeclaration',
11826                 declarations: [{
11827                     type: 'VariableDeclarator',
11828                     id: {
11829                         type: 'Identifier',
11830                         name: 'x',
11831                         range: [9, 10],
11832                         loc: {
11833                             start: { line: 1, column: 9 },
11834                             end: { line: 1, column: 10 }
11835                         }
11836                     },
11837                     init: null,
11838                     range: [9, 10],
11839                     loc: {
11840                         start: { line: 1, column: 9 },
11841                         end: { line: 1, column: 10 }
11842                     }
11843                 }],
11844                 kind: 'var',
11845                 range: [5, 10],
11846                 loc: {
11847                     start: { line: 1, column: 5 },
11848                     end: { line: 1, column: 10 }
11849                 }
11850             },
11851             right: {
11852                 type: 'Identifier',
11853                 name: 'list',
11854                 range: [14, 18],
11855                 loc: {
11856                     start: { line: 1, column: 14 },
11857                     end: { line: 1, column: 18 }
11858                 }
11859             },
11860             body: {
11861                 type: 'ExpressionStatement',
11862                 expression: {
11863                     type: 'CallExpression',
11864                     callee: {
11865                         type: 'Identifier',
11866                         name: 'process',
11867                         range: [20, 27],
11868                         loc: {
11869                             start: { line: 1, column: 20 },
11870                             end: { line: 1, column: 27 }
11871                         }
11872                     },
11873                     'arguments': [{
11874                         type: 'Identifier',
11875                         name: 'x',
11876                         range: [28, 29],
11877                         loc: {
11878                             start: { line: 1, column: 28 },
11879                             end: { line: 1, column: 29 }
11880                         }
11881                     }],
11882                     range: [20, 30],
11883                     loc: {
11884                         start: { line: 1, column: 20 },
11885                         end: { line: 1, column: 30 }
11886                     }
11887                 },
11888                 range: [20, 31],
11889                 loc: {
11890                     start: { line: 1, column: 20 },
11891                     end: { line: 1, column: 31 }
11892                 }
11893             },
11894             each: false,
11895             range: [0, 31],
11896             loc: {
11897                 start: { line: 1, column: 0 },
11898                 end: { line: 1, column: 31 }
11899             }
11900         },
11901
11902         'for (var x = 42 in list) process(x);': {
11903             type: 'ForInStatement',
11904             left: {
11905                 type: 'VariableDeclaration',
11906                 declarations: [{
11907                     type: 'VariableDeclarator',
11908                     id: {
11909                         type: 'Identifier',
11910                         name: 'x',
11911                         range: [9, 10],
11912                         loc: {
11913                             start: { line: 1, column: 9 },
11914                             end: { line: 1, column: 10 }
11915                         }
11916                     },
11917                     init: {
11918                         type: 'Literal',
11919                         value: 42,
11920                         raw: '42',
11921                         range: [13, 15],
11922                         loc: {
11923                             start: { line: 1, column: 13 },
11924                             end: { line: 1, column: 15 }
11925                         }
11926                     },
11927                     range: [9, 15],
11928                     loc: {
11929                         start: { line: 1, column: 9 },
11930                         end: { line: 1, column: 15 }
11931                     }
11932                 }],
11933                 kind: 'var',
11934                 range: [5, 15],
11935                 loc: {
11936                     start: { line: 1, column: 5 },
11937                     end: { line: 1, column: 15 }
11938                 }
11939             },
11940             right: {
11941                 type: 'Identifier',
11942                 name: 'list',
11943                 range: [19, 23],
11944                 loc: {
11945                     start: { line: 1, column: 19 },
11946                     end: { line: 1, column: 23 }
11947                 }
11948             },
11949             body: {
11950                 type: 'ExpressionStatement',
11951                 expression: {
11952                     type: 'CallExpression',
11953                     callee: {
11954                         type: 'Identifier',
11955                         name: 'process',
11956                         range: [25, 32],
11957                         loc: {
11958                             start: { line: 1, column: 25 },
11959                             end: { line: 1, column: 32 }
11960                         }
11961                     },
11962                     'arguments': [{
11963                         type: 'Identifier',
11964                         name: 'x',
11965                         range: [33, 34],
11966                         loc: {
11967                             start: { line: 1, column: 33 },
11968                             end: { line: 1, column: 34 }
11969                         }
11970                     }],
11971                     range: [25, 35],
11972                     loc: {
11973                         start: { line: 1, column: 25 },
11974                         end: { line: 1, column: 35 }
11975                     }
11976                 },
11977                 range: [25, 36],
11978                 loc: {
11979                     start: { line: 1, column: 25 },
11980                     end: { line: 1, column: 36 }
11981                 }
11982             },
11983             each: false,
11984             range: [0, 36],
11985             loc: {
11986                 start: { line: 1, column: 0 },
11987                 end: { line: 1, column: 36 }
11988             }
11989         },
11990
11991         'for (let x in list) process(x);': {
11992             type: 'ForInStatement',
11993             left: {
11994                 type: 'VariableDeclaration',
11995                 declarations: [{
11996                     type: 'VariableDeclarator',
11997                     id: {
11998                         type: 'Identifier',
11999                         name: 'x',
12000                         range: [9, 10],
12001                         loc: {
12002                             start: { line: 1, column: 9 },
12003                             end: { line: 1, column: 10 }
12004                         }
12005                     },
12006                     init: null,
12007                     range: [9, 10],
12008                     loc: {
12009                         start: { line: 1, column: 9 },
12010                         end: { line: 1, column: 10 }
12011                     }
12012                 }],
12013                 kind: 'let',
12014                 range: [5, 10],
12015                 loc: {
12016                     start: { line: 1, column: 5 },
12017                     end: { line: 1, column: 10 }
12018                 }
12019             },
12020             right: {
12021                 type: 'Identifier',
12022                 name: 'list',
12023                 range: [14, 18],
12024                 loc: {
12025                     start: { line: 1, column: 14 },
12026                     end: { line: 1, column: 18 }
12027                 }
12028             },
12029             body: {
12030                 type: 'ExpressionStatement',
12031                 expression: {
12032                     type: 'CallExpression',
12033                     callee: {
12034                         type: 'Identifier',
12035                         name: 'process',
12036                         range: [20, 27],
12037                         loc: {
12038                             start: { line: 1, column: 20 },
12039                             end: { line: 1, column: 27 }
12040                         }
12041                     },
12042                     'arguments': [{
12043                         type: 'Identifier',
12044                         name: 'x',
12045                         range: [28, 29],
12046                         loc: {
12047                             start: { line: 1, column: 28 },
12048                             end: { line: 1, column: 29 }
12049                         }
12050                     }],
12051                     range: [20, 30],
12052                     loc: {
12053                         start: { line: 1, column: 20 },
12054                         end: { line: 1, column: 30 }
12055                     }
12056                 },
12057                 range: [20, 31],
12058                 loc: {
12059                     start: { line: 1, column: 20 },
12060                     end: { line: 1, column: 31 }
12061                 }
12062             },
12063             each: false,
12064             range: [0, 31],
12065             loc: {
12066                 start: { line: 1, column: 0 },
12067                 end: { line: 1, column: 31 }
12068             }
12069         },
12070
12071         'for (let x = 42 in list) process(x);': {
12072             type: 'ForInStatement',
12073             left: {
12074                 type: 'VariableDeclaration',
12075                 declarations: [{
12076                     type: 'VariableDeclarator',
12077                     id: {
12078                         type: 'Identifier',
12079                         name: 'x',
12080                         range: [9, 10],
12081                         loc: {
12082                             start: { line: 1, column: 9 },
12083                             end: { line: 1, column: 10 }
12084                         }
12085                     },
12086                     init: {
12087                         type: 'Literal',
12088                         value: 42,
12089                         raw: '42',
12090                         range: [13, 15],
12091                         loc: {
12092                             start: { line: 1, column: 13 },
12093                             end: { line: 1, column: 15 }
12094                         }
12095                     },
12096                     range: [9, 15],
12097                     loc: {
12098                         start: { line: 1, column: 9 },
12099                         end: { line: 1, column: 15 }
12100                     }
12101                 }],
12102                 kind: 'let',
12103                 range: [5, 15],
12104                 loc: {
12105                     start: { line: 1, column: 5 },
12106                     end: { line: 1, column: 15 }
12107                 }
12108             },
12109             right: {
12110                 type: 'Identifier',
12111                 name: 'list',
12112                 range: [19, 23],
12113                 loc: {
12114                     start: { line: 1, column: 19 },
12115                     end: { line: 1, column: 23 }
12116                 }
12117             },
12118             body: {
12119                 type: 'ExpressionStatement',
12120                 expression: {
12121                     type: 'CallExpression',
12122                     callee: {
12123                         type: 'Identifier',
12124                         name: 'process',
12125                         range: [25, 32],
12126                         loc: {
12127                             start: { line: 1, column: 25 },
12128                             end: { line: 1, column: 32 }
12129                         }
12130                     },
12131                     'arguments': [{
12132                         type: 'Identifier',
12133                         name: 'x',
12134                         range: [33, 34],
12135                         loc: {
12136                             start: { line: 1, column: 33 },
12137                             end: { line: 1, column: 34 }
12138                         }
12139                     }],
12140                     range: [25, 35],
12141                     loc: {
12142                         start: { line: 1, column: 25 },
12143                         end: { line: 1, column: 35 }
12144                     }
12145                 },
12146                 range: [25, 36],
12147                 loc: {
12148                     start: { line: 1, column: 25 },
12149                     end: { line: 1, column: 36 }
12150                 }
12151             },
12152             each: false,
12153             range: [0, 36],
12154             loc: {
12155                 start: { line: 1, column: 0 },
12156                 end: { line: 1, column: 36 }
12157             }
12158         },
12159
12160         'for (var i = function() { return 10 in [] } in list) process(x);': {
12161             type: 'ForInStatement',
12162             left: {
12163                 type: 'VariableDeclaration',
12164                 declarations: [{
12165                     type: 'VariableDeclarator',
12166                     id: {
12167                         type: 'Identifier',
12168                         name: 'i',
12169                         range: [9, 10],
12170                         loc: {
12171                             start: { line: 1, column: 9 },
12172                             end: { line: 1, column: 10 }
12173                         }
12174                     },
12175                     init: {
12176                         type: 'FunctionExpression',
12177                         id: null,
12178                         params: [],
12179                         defaults: [],
12180                         body: {
12181                             type: 'BlockStatement',
12182                             body: [{
12183                                 type: 'ReturnStatement',
12184                                 argument: {
12185                                     type: 'BinaryExpression',
12186                                     operator: 'in',
12187                                     left: {
12188                                         type: 'Literal',
12189                                         value: 10,
12190                                         raw: '10',
12191                                         range: [33, 35],
12192                                         loc: {
12193                                             start: { line: 1, column: 33 },
12194                                             end: { line: 1, column: 35 }
12195                                         }
12196                                     },
12197                                     right: {
12198                                         type: 'ArrayExpression',
12199                                         elements: [],
12200                                         range: [39, 41],
12201                                         loc: {
12202                                             start: { line: 1, column: 39 },
12203                                             end: { line: 1, column: 41 }
12204                                         }
12205                                     },
12206                                     range: [33, 41],
12207                                     loc: {
12208                                         start: { line: 1, column: 33 },
12209                                         end: { line: 1, column: 41 }
12210                                     }
12211                                 },
12212                                 range: [26, 42],
12213                                 loc: {
12214                                     start: { line: 1, column: 26 },
12215                                     end: { line: 1, column: 42 }
12216                                 }
12217                             }],
12218                             range: [24, 43],
12219                             loc: {
12220                                 start: { line: 1, column: 24 },
12221                                 end: { line: 1, column: 43 }
12222                             }
12223                         },
12224                         rest: null,
12225                         generator: false,
12226                         expression: false,
12227                         range: [13, 43],
12228                         loc: {
12229                             start: { line: 1, column: 13 },
12230                             end: { line: 1, column: 43 }
12231                         }
12232                     },
12233                     range: [9, 43],
12234                     loc: {
12235                         start: { line: 1, column: 9 },
12236                         end: { line: 1, column: 43 }
12237                     }
12238                 }],
12239                 kind: 'var',
12240                 range: [5, 43],
12241                 loc: {
12242                     start: { line: 1, column: 5 },
12243                     end: { line: 1, column: 43 }
12244                 }
12245             },
12246             right: {
12247                 type: 'Identifier',
12248                 name: 'list',
12249                 range: [47, 51],
12250                 loc: {
12251                     start: { line: 1, column: 47 },
12252                     end: { line: 1, column: 51 }
12253                 }
12254             },
12255             body: {
12256                 type: 'ExpressionStatement',
12257                 expression: {
12258                     type: 'CallExpression',
12259                     callee: {
12260                         type: 'Identifier',
12261                         name: 'process',
12262                         range: [53, 60],
12263                         loc: {
12264                             start: { line: 1, column: 53 },
12265                             end: { line: 1, column: 60 }
12266                         }
12267                     },
12268                     'arguments': [{
12269                         type: 'Identifier',
12270                         name: 'x',
12271                         range: [61, 62],
12272                         loc: {
12273                             start: { line: 1, column: 61 },
12274                             end: { line: 1, column: 62 }
12275                         }
12276                     }],
12277                     range: [53, 63],
12278                     loc: {
12279                         start: { line: 1, column: 53 },
12280                         end: { line: 1, column: 63 }
12281                     }
12282                 },
12283                 range: [53, 64],
12284                 loc: {
12285                     start: { line: 1, column: 53 },
12286                     end: { line: 1, column: 64 }
12287                 }
12288             },
12289             each: false,
12290             range: [0, 64],
12291             loc: {
12292                 start: { line: 1, column: 0 },
12293                 end: { line: 1, column: 64 }
12294             }
12295         }
12296
12297     },
12298
12299     'continue statement': {
12300
12301         'while (true) { continue; }': {
12302             type: 'WhileStatement',
12303             test: {
12304                 type: 'Literal',
12305                 value: true,
12306                 raw: 'true',
12307                 range: [7, 11],
12308                 loc: {
12309                     start: { line: 1, column: 7 },
12310                     end: { line: 1, column: 11 }
12311                 }
12312             },
12313             body: {
12314                 type: 'BlockStatement',
12315                 body: [
12316                     {
12317                         type: 'ContinueStatement',
12318                         label: null,
12319                         range: [15, 24],
12320                         loc: {
12321                             start: { line: 1, column: 15 },
12322                             end: { line: 1, column: 24 }
12323                         }
12324                     }
12325                 ],
12326                 range: [13, 26],
12327                 loc: {
12328                     start: { line: 1, column: 13 },
12329                     end: { line: 1, column: 26 }
12330                 }
12331             },
12332             range: [0, 26],
12333             loc: {
12334                 start: { line: 1, column: 0 },
12335                 end: { line: 1, column: 26 }
12336             }
12337         },
12338
12339         'while (true) { continue }': {
12340             type: 'WhileStatement',
12341             test: {
12342                 type: 'Literal',
12343                 value: true,
12344                 raw: 'true',
12345                 range: [7, 11],
12346                 loc: {
12347                     start: { line: 1, column: 7 },
12348                     end: { line: 1, column: 11 }
12349                 }
12350             },
12351             body: {
12352                 type: 'BlockStatement',
12353                 body: [
12354                     {
12355                         type: 'ContinueStatement',
12356                         label: null,
12357                         range: [15, 24],
12358                         loc: {
12359                             start: { line: 1, column: 15 },
12360                             end: { line: 1, column: 24 }
12361                         }
12362                     }
12363                 ],
12364                 range: [13, 25],
12365                 loc: {
12366                     start: { line: 1, column: 13 },
12367                     end: { line: 1, column: 25 }
12368                 }
12369             },
12370             range: [0, 25],
12371             loc: {
12372                 start: { line: 1, column: 0 },
12373                 end: { line: 1, column: 25 }
12374             }
12375         },
12376
12377         'done: while (true) { continue done }': {
12378             type: 'LabeledStatement',
12379             label: {
12380                 type: 'Identifier',
12381                 name: 'done',
12382                 range: [0, 4],
12383                 loc: {
12384                     start: { line: 1, column: 0 },
12385                     end: { line: 1, column: 4 }
12386                 }
12387             },
12388             body: {
12389                 type: 'WhileStatement',
12390                 test: {
12391                     type: 'Literal',
12392                     value: true,
12393                     raw: 'true',
12394                     range: [13, 17],
12395                     loc: {
12396                         start: { line: 1, column: 13 },
12397                         end: { line: 1, column: 17 }
12398                     }
12399                 },
12400                 body: {
12401                     type: 'BlockStatement',
12402                     body: [
12403                         {
12404                             type: 'ContinueStatement',
12405                             label: {
12406                                 type: 'Identifier',
12407                                 name: 'done',
12408                                 range: [30, 34],
12409                                 loc: {
12410                                     start: { line: 1, column: 30 },
12411                                     end: { line: 1, column: 34 }
12412                                 }
12413                             },
12414                             range: [21, 35],
12415                             loc: {
12416                                 start: { line: 1, column: 21 },
12417                                 end: { line: 1, column: 35 }
12418                             }
12419                         }
12420                     ],
12421                     range: [19, 36],
12422                     loc: {
12423                         start: { line: 1, column: 19 },
12424                         end: { line: 1, column: 36 }
12425                     }
12426                 },
12427                 range: [6, 36],
12428                 loc: {
12429                     start: { line: 1, column: 6 },
12430                     end: { line: 1, column: 36 }
12431                 }
12432             },
12433             range: [0, 36],
12434             loc: {
12435                 start: { line: 1, column: 0 },
12436                 end: { line: 1, column: 36 }
12437             }
12438         },
12439
12440         'done: while (true) { continue done; }': {
12441             type: 'LabeledStatement',
12442             label: {
12443                 type: 'Identifier',
12444                 name: 'done',
12445                 range: [0, 4],
12446                 loc: {
12447                     start: { line: 1, column: 0 },
12448                     end: { line: 1, column: 4 }
12449                 }
12450             },
12451             body: {
12452                 type: 'WhileStatement',
12453                 test: {
12454                     type: 'Literal',
12455                     value: true,
12456                     raw: 'true',
12457                     range: [13, 17],
12458                     loc: {
12459                         start: { line: 1, column: 13 },
12460                         end: { line: 1, column: 17 }
12461                     }
12462                 },
12463                 body: {
12464                     type: 'BlockStatement',
12465                     body: [
12466                         {
12467                             type: 'ContinueStatement',
12468                             label: {
12469                                 type: 'Identifier',
12470                                 name: 'done',
12471                                 range: [30, 34],
12472                                 loc: {
12473                                     start: { line: 1, column: 30 },
12474                                     end: { line: 1, column: 34 }
12475                                 }
12476                             },
12477                             range: [21, 35],
12478                             loc: {
12479                                 start: { line: 1, column: 21 },
12480                                 end: { line: 1, column: 35 }
12481                             }
12482                         }
12483                     ],
12484                     range: [19, 37],
12485                     loc: {
12486                         start: { line: 1, column: 19 },
12487                         end: { line: 1, column: 37 }
12488                     }
12489                 },
12490                 range: [6, 37],
12491                 loc: {
12492                     start: { line: 1, column: 6 },
12493                     end: { line: 1, column: 37 }
12494                 }
12495             },
12496             range: [0, 37],
12497             loc: {
12498                 start: { line: 1, column: 0 },
12499                 end: { line: 1, column: 37 }
12500             }
12501         }
12502
12503     },
12504
12505     'break statement': {
12506
12507         'while (true) { break }': {
12508             type: 'WhileStatement',
12509             test: {
12510                 type: 'Literal',
12511                 value: true,
12512                 raw: 'true',
12513                 range: [7, 11],
12514                 loc: {
12515                     start: { line: 1, column: 7 },
12516                     end: { line: 1, column: 11 }
12517                 }
12518             },
12519             body: {
12520                 type: 'BlockStatement',
12521                 body: [
12522                     {
12523                         type: 'BreakStatement',
12524                         label: null,
12525                         range: [15, 21],
12526                         loc: {
12527                             start: { line: 1, column: 15 },
12528                             end: { line: 1, column: 21 }
12529                         }
12530                     }
12531                 ],
12532                 range: [13, 22],
12533                 loc: {
12534                     start: { line: 1, column: 13 },
12535                     end: { line: 1, column: 22 }
12536                 }
12537             },
12538             range: [0, 22],
12539             loc: {
12540                 start: { line: 1, column: 0 },
12541                 end: { line: 1, column: 22 }
12542             }
12543         },
12544
12545         'done: while (true) { break done }': {
12546             type: 'LabeledStatement',
12547             label: {
12548                 type: 'Identifier',
12549                 name: 'done',
12550                 range: [0, 4],
12551                 loc: {
12552                     start: { line: 1, column: 0 },
12553                     end: { line: 1, column: 4 }
12554                 }
12555             },
12556             body: {
12557                 type: 'WhileStatement',
12558                 test: {
12559                     type: 'Literal',
12560                     value: true,
12561                     raw: 'true',
12562                     range: [13, 17],
12563                     loc: {
12564                         start: { line: 1, column: 13 },
12565                         end: { line: 1, column: 17 }
12566                     }
12567                 },
12568                 body: {
12569                     type: 'BlockStatement',
12570                     body: [
12571                         {
12572                             type: 'BreakStatement',
12573                             label: {
12574                                 type: 'Identifier',
12575                                 name: 'done',
12576                                 range: [27, 31],
12577                                 loc: {
12578                                     start: { line: 1, column: 27 },
12579                                     end: { line: 1, column: 31 }
12580                                 }
12581                             },
12582                             range: [21, 32],
12583                             loc: {
12584                                 start: { line: 1, column: 21 },
12585                                 end: { line: 1, column: 32 }
12586                             }
12587                         }
12588                     ],
12589                     range: [19, 33],
12590                     loc: {
12591                         start: { line: 1, column: 19 },
12592                         end: { line: 1, column: 33 }
12593                     }
12594                 },
12595                 range: [6, 33],
12596                 loc: {
12597                     start: { line: 1, column: 6 },
12598                     end: { line: 1, column: 33 }
12599                 }
12600             },
12601             range: [0, 33],
12602             loc: {
12603                 start: { line: 1, column: 0 },
12604                 end: { line: 1, column: 33 }
12605             }
12606         },
12607
12608         'done: while (true) { break done; }': {
12609             type: 'LabeledStatement',
12610             label: {
12611                 type: 'Identifier',
12612                 name: 'done',
12613                 range: [0, 4],
12614                 loc: {
12615                     start: { line: 1, column: 0 },
12616                     end: { line: 1, column: 4 }
12617                 }
12618             },
12619             body: {
12620                 type: 'WhileStatement',
12621                 test: {
12622                     type: 'Literal',
12623                     value: true,
12624                     raw: 'true',
12625                     range: [13, 17],
12626                     loc: {
12627                         start: { line: 1, column: 13 },
12628                         end: { line: 1, column: 17 }
12629                     }
12630                 },
12631                 body: {
12632                     type: 'BlockStatement',
12633                     body: [
12634                         {
12635                             type: 'BreakStatement',
12636                             label: {
12637                                 type: 'Identifier',
12638                                 name: 'done',
12639                                 range: [27, 31],
12640                                 loc: {
12641                                     start: { line: 1, column: 27 },
12642                                     end: { line: 1, column: 31 }
12643                                 }
12644                             },
12645                             range: [21, 32],
12646                             loc: {
12647                                 start: { line: 1, column: 21 },
12648                                 end: { line: 1, column: 32 }
12649                             }
12650                         }
12651                     ],
12652                     range: [19, 34],
12653                     loc: {
12654                         start: { line: 1, column: 19 },
12655                         end: { line: 1, column: 34 }
12656                     }
12657                 },
12658                 range: [6, 34],
12659                 loc: {
12660                     start: { line: 1, column: 6 },
12661                     end: { line: 1, column: 34 }
12662                 }
12663             },
12664             range: [0, 34],
12665             loc: {
12666                 start: { line: 1, column: 0 },
12667                 end: { line: 1, column: 34 }
12668             }
12669         }
12670
12671     },
12672
12673     'return statement': {
12674
12675         '(function(){ return })': {
12676             type: 'ExpressionStatement',
12677             expression: {
12678                 type: 'FunctionExpression',
12679                 id: null,
12680                 params: [],
12681                 defaults: [],
12682                 body: {
12683                     type: 'BlockStatement',
12684                     body: [
12685                         {
12686                             type: 'ReturnStatement',
12687                             argument: null,
12688                             range: [13, 20],
12689                             loc: {
12690                                 start: { line: 1, column: 13 },
12691                                 end: { line: 1, column: 20 }
12692                             }
12693                         }
12694                     ],
12695                     range: [11, 21],
12696                     loc: {
12697                         start: { line: 1, column: 11 },
12698                         end: { line: 1, column: 21 }
12699                     }
12700                 },
12701                 rest: null,
12702                 generator: false,
12703                 expression: false,
12704                 range: [1, 21],
12705                 loc: {
12706                     start: { line: 1, column: 1 },
12707                     end: { line: 1, column: 21 }
12708                 }
12709             },
12710             range: [0, 22],
12711             loc: {
12712                 start: { line: 1, column: 0 },
12713                 end: { line: 1, column: 22 }
12714             }
12715         },
12716
12717         '(function(){ return; })': {
12718             type: 'ExpressionStatement',
12719             expression: {
12720                 type: 'FunctionExpression',
12721                 id: null,
12722                 params: [],
12723                 defaults: [],
12724                 body: {
12725                     type: 'BlockStatement',
12726                     body: [
12727                         {
12728                             type: 'ReturnStatement',
12729                             argument: null,
12730                             range: [13, 20],
12731                             loc: {
12732                                 start: { line: 1, column: 13 },
12733                                 end: { line: 1, column: 20 }
12734                             }
12735                         }
12736                     ],
12737                     range: [11, 22],
12738                     loc: {
12739                         start: { line: 1, column: 11 },
12740                         end: { line: 1, column: 22 }
12741                     }
12742                 },
12743                 rest: null,
12744                 generator: false,
12745                 expression: false,
12746                 range: [1, 22],
12747                 loc: {
12748                     start: { line: 1, column: 1 },
12749                     end: { line: 1, column: 22 }
12750                 }
12751             },
12752             range: [0, 23],
12753             loc: {
12754                 start: { line: 1, column: 0 },
12755                 end: { line: 1, column: 23 }
12756             }
12757         },
12758
12759         '(function(){ return x; })': {
12760             type: 'ExpressionStatement',
12761             expression: {
12762                 type: 'FunctionExpression',
12763                 id: null,
12764                 params: [],
12765                 defaults: [],
12766                 body: {
12767                     type: 'BlockStatement',
12768                     body: [
12769                         {
12770                             type: 'ReturnStatement',
12771                             argument: {
12772                                 type: 'Identifier',
12773                                 name: 'x',
12774                                 range: [20, 21],
12775                                 loc: {
12776                                     start: { line: 1, column: 20 },
12777                                     end: { line: 1, column: 21 }
12778                                 }
12779                             },
12780                             range: [13, 22],
12781                             loc: {
12782                                 start: { line: 1, column: 13 },
12783                                 end: { line: 1, column: 22 }
12784                             }
12785                         }
12786                     ],
12787                     range: [11, 24],
12788                     loc: {
12789                         start: { line: 1, column: 11 },
12790                         end: { line: 1, column: 24 }
12791                     }
12792                 },
12793                 rest: null,
12794                 generator: false,
12795                 expression: false,
12796                 range: [1, 24],
12797                 loc: {
12798                     start: { line: 1, column: 1 },
12799                     end: { line: 1, column: 24 }
12800                 }
12801             },
12802             range: [0, 25],
12803             loc: {
12804                 start: { line: 1, column: 0 },
12805                 end: { line: 1, column: 25 }
12806             }
12807         },
12808
12809         '(function(){ return x * y })': {
12810             type: 'ExpressionStatement',
12811             expression: {
12812                 type: 'FunctionExpression',
12813                 id: null,
12814                 params: [],
12815                 defaults: [],
12816                 body: {
12817                     type: 'BlockStatement',
12818                     body: [
12819                         {
12820                             type: 'ReturnStatement',
12821                             argument: {
12822                                 type: 'BinaryExpression',
12823                                 operator: '*',
12824                                 left: {
12825                                     type: 'Identifier',
12826                                     name: 'x',
12827                                     range: [20, 21],
12828                                     loc: {
12829                                         start: { line: 1, column: 20 },
12830                                         end: { line: 1, column: 21 }
12831                                     }
12832                                 },
12833                                 right: {
12834                                     type: 'Identifier',
12835                                     name: 'y',
12836                                     range: [24, 25],
12837                                     loc: {
12838                                         start: { line: 1, column: 24 },
12839                                         end: { line: 1, column: 25 }
12840                                     }
12841                                 },
12842                                 range: [20, 25],
12843                                 loc: {
12844                                     start: { line: 1, column: 20 },
12845                                     end: { line: 1, column: 25 }
12846                                 }
12847                             },
12848                             range: [13, 26],
12849                             loc: {
12850                                 start: { line: 1, column: 13 },
12851                                 end: { line: 1, column: 26 }
12852                             }
12853                         }
12854                     ],
12855                     range: [11, 27],
12856                     loc: {
12857                         start: { line: 1, column: 11 },
12858                         end: { line: 1, column: 27 }
12859                     }
12860                 },
12861                 rest: null,
12862                 generator: false,
12863                 expression: false,
12864                 range: [1, 27],
12865                 loc: {
12866                     start: { line: 1, column: 1 },
12867                     end: { line: 1, column: 27 }
12868                 }
12869             },
12870             range: [0, 28],
12871             loc: {
12872                 start: { line: 1, column: 0 },
12873                 end: { line: 1, column: 28 }
12874             }
12875         }
12876     },
12877
12878     'with statement': {
12879
12880         'with (x) foo = bar': {
12881             type: 'WithStatement',
12882             object: {
12883                 type: 'Identifier',
12884                 name: 'x',
12885                 range: [6, 7],
12886                 loc: {
12887                     start: { line: 1, column: 6 },
12888                     end: { line: 1, column: 7 }
12889                 }
12890             },
12891             body: {
12892                 type: 'ExpressionStatement',
12893                 expression: {
12894                     type: 'AssignmentExpression',
12895                     operator: '=',
12896                     left: {
12897                         type: 'Identifier',
12898                         name: 'foo',
12899                         range: [9, 12],
12900                         loc: {
12901                             start: { line: 1, column: 9 },
12902                             end: { line: 1, column: 12 }
12903                         }
12904                     },
12905                     right: {
12906                         type: 'Identifier',
12907                         name: 'bar',
12908                         range: [15, 18],
12909                         loc: {
12910                             start: { line: 1, column: 15 },
12911                             end: { line: 1, column: 18 }
12912                         }
12913                     },
12914                     range: [9, 18],
12915                     loc: {
12916                         start: { line: 1, column: 9 },
12917                         end: { line: 1, column: 18 }
12918                     }
12919                 },
12920                 range: [9, 18],
12921                 loc: {
12922                     start: { line: 1, column: 9 },
12923                     end: { line: 1, column: 18 }
12924                 }
12925             },
12926             range: [0, 18],
12927             loc: {
12928                 start: { line: 1, column: 0 },
12929                 end: { line: 1, column: 18 }
12930             }
12931         },
12932
12933         'with (x) foo = bar;': {
12934             type: 'WithStatement',
12935             object: {
12936                 type: 'Identifier',
12937                 name: 'x',
12938                 range: [6, 7],
12939                 loc: {
12940                     start: { line: 1, column: 6 },
12941                     end: { line: 1, column: 7 }
12942                 }
12943             },
12944             body: {
12945                 type: 'ExpressionStatement',
12946                 expression: {
12947                     type: 'AssignmentExpression',
12948                     operator: '=',
12949                     left: {
12950                         type: 'Identifier',
12951                         name: 'foo',
12952                         range: [9, 12],
12953                         loc: {
12954                             start: { line: 1, column: 9 },
12955                             end: { line: 1, column: 12 }
12956                         }
12957                     },
12958                     right: {
12959                         type: 'Identifier',
12960                         name: 'bar',
12961                         range: [15, 18],
12962                         loc: {
12963                             start: { line: 1, column: 15 },
12964                             end: { line: 1, column: 18 }
12965                         }
12966                     },
12967                     range: [9, 18],
12968                     loc: {
12969                         start: { line: 1, column: 9 },
12970                         end: { line: 1, column: 18 }
12971                     }
12972                 },
12973                 range: [9, 19],
12974                 loc: {
12975                     start: { line: 1, column: 9 },
12976                     end: { line: 1, column: 19 }
12977                 }
12978             },
12979             range: [0, 19],
12980             loc: {
12981                 start: { line: 1, column: 0 },
12982                 end: { line: 1, column: 19 }
12983             }
12984         },
12985
12986         'with (x) { foo = bar }': {
12987             type: 'WithStatement',
12988             object: {
12989                 type: 'Identifier',
12990                 name: 'x',
12991                 range: [6, 7],
12992                 loc: {
12993                     start: { line: 1, column: 6 },
12994                     end: { line: 1, column: 7 }
12995                 }
12996             },
12997             body: {
12998                 type: 'BlockStatement',
12999                 body: [{
13000                     type: 'ExpressionStatement',
13001                     expression: {
13002                         type: 'AssignmentExpression',
13003                         operator: '=',
13004                         left: {
13005                             type: 'Identifier',
13006                             name: 'foo',
13007                             range: [11, 14],
13008                             loc: {
13009                                 start: { line: 1, column: 11 },
13010                                 end: { line: 1, column: 14 }
13011                             }
13012                         },
13013                         right: {
13014                             type: 'Identifier',
13015                             name: 'bar',
13016                             range: [17, 20],
13017                             loc: {
13018                                 start: { line: 1, column: 17 },
13019                                 end: { line: 1, column: 20 }
13020                             }
13021                         },
13022                         range: [11, 20],
13023                         loc: {
13024                             start: { line: 1, column: 11 },
13025                             end: { line: 1, column: 20 }
13026                         }
13027                     },
13028                     range: [11, 21],
13029                     loc: {
13030                         start: { line: 1, column: 11 },
13031                         end: { line: 1, column: 21 }
13032                     }
13033                 }],
13034                 range: [9, 22],
13035                 loc: {
13036                     start: { line: 1, column: 9 },
13037                     end: { line: 1, column: 22 }
13038                 }
13039             },
13040             range: [0, 22],
13041             loc: {
13042                 start: { line: 1, column: 0 },
13043                 end: { line: 1, column: 22 }
13044             }
13045         }
13046
13047     },
13048
13049     'switch statement': {
13050
13051         'switch (x) {}': {
13052             type: 'SwitchStatement',
13053             discriminant: {
13054                 type: 'Identifier',
13055                 name: 'x',
13056                 range: [8, 9],
13057                 loc: {
13058                     start: { line: 1, column: 8 },
13059                     end: { line: 1, column: 9 }
13060                 }
13061             },
13062             cases:[],
13063             range: [0, 13],
13064             loc: {
13065                 start: { line: 1, column: 0 },
13066                 end: { line: 1, column: 13 }
13067             }
13068         },
13069
13070         'switch (answer) { case 42: hi(); break; }': {
13071             type: 'SwitchStatement',
13072             discriminant: {
13073                 type: 'Identifier',
13074                 name: 'answer',
13075                 range: [8, 14],
13076                 loc: {
13077                     start: { line: 1, column: 8 },
13078                     end: { line: 1, column: 14 }
13079                 }
13080             },
13081             cases: [{
13082                 type: 'SwitchCase',
13083                 test: {
13084                     type: 'Literal',
13085                     value: 42,
13086                     raw: '42',
13087                     range: [23, 25],
13088                     loc: {
13089                         start: { line: 1, column: 23 },
13090                         end: { line: 1, column: 25 }
13091                     }
13092                 },
13093                 consequent: [{
13094                     type: 'ExpressionStatement',
13095                     expression: {
13096                         type: 'CallExpression',
13097                         callee: {
13098                             type: 'Identifier',
13099                             name: 'hi',
13100                             range: [27, 29],
13101                             loc: {
13102                                 start: { line: 1, column: 27 },
13103                                 end: { line: 1, column: 29 }
13104                             }
13105                         },
13106                         'arguments': [],
13107                         range: [27, 31],
13108                         loc: {
13109                             start: { line: 1, column: 27 },
13110                             end: { line: 1, column: 31 }
13111                         }
13112                     },
13113                     range: [27, 32],
13114                     loc: {
13115                         start: { line: 1, column: 27 },
13116                         end: { line: 1, column: 32 }
13117                     }
13118                 }, {
13119                     type: 'BreakStatement',
13120                     label: null,
13121                     range: [33, 39],
13122                     loc: {
13123                         start: { line: 1, column: 33 },
13124                         end: { line: 1, column: 39 }
13125                     }
13126                 }],
13127                 range: [18, 39],
13128                 loc: {
13129                     start: { line: 1, column: 18 },
13130                     end: { line: 1, column: 39 }
13131                 }
13132             }],
13133             range: [0, 41],
13134             loc: {
13135                 start: { line: 1, column: 0 },
13136                 end: { line: 1, column: 41 }
13137             }
13138         },
13139
13140         'switch (answer) { case 42: hi(); break; default: break }': {
13141             type: 'SwitchStatement',
13142             discriminant: {
13143                 type: 'Identifier',
13144                 name: 'answer',
13145                 range: [8, 14],
13146                 loc: {
13147                     start: { line: 1, column: 8 },
13148                     end: { line: 1, column: 14 }
13149                 }
13150             },
13151             cases: [{
13152                 type: 'SwitchCase',
13153                 test: {
13154                     type: 'Literal',
13155                     value: 42,
13156                     raw: '42',
13157                     range: [23, 25],
13158                     loc: {
13159                         start: { line: 1, column: 23 },
13160                         end: { line: 1, column: 25 }
13161                     }
13162                 },
13163                 consequent: [{
13164                     type: 'ExpressionStatement',
13165                     expression: {
13166                         type: 'CallExpression',
13167                         callee: {
13168                             type: 'Identifier',
13169                             name: 'hi',
13170                             range: [27, 29],
13171                             loc: {
13172                                 start: { line: 1, column: 27 },
13173                                 end: { line: 1, column: 29 }
13174                             }
13175                         },
13176                         'arguments': [],
13177                         range: [27, 31],
13178                         loc: {
13179                             start: { line: 1, column: 27 },
13180                             end: { line: 1, column: 31 }
13181                         }
13182                     },
13183                     range: [27, 32],
13184                     loc: {
13185                         start: { line: 1, column: 27 },
13186                         end: { line: 1, column: 32 }
13187                     }
13188                 }, {
13189                     type: 'BreakStatement',
13190                     label: null,
13191                     range: [33, 39],
13192                     loc: {
13193                         start: { line: 1, column: 33 },
13194                         end: { line: 1, column: 39 }
13195                     }
13196                 }],
13197                 range: [18, 39],
13198                 loc: {
13199                     start: { line: 1, column: 18 },
13200                     end: { line: 1, column: 39 }
13201                 }
13202             }, {
13203                 type: 'SwitchCase',
13204                 test: null,
13205                 consequent: [{
13206                     type: 'BreakStatement',
13207                     label: null,
13208                     range: [49, 55],
13209                     loc: {
13210                         start: { line: 1, column: 49 },
13211                         end: { line: 1, column: 55 }
13212                     }
13213                 }],
13214                 range: [40, 55],
13215                 loc: {
13216                     start: { line: 1, column: 40 },
13217                     end: { line: 1, column: 55 }
13218                 }
13219             }],
13220             range: [0, 56],
13221             loc: {
13222                 start: { line: 1, column: 0 },
13223                 end: { line: 1, column: 56 }
13224             }
13225         }
13226
13227     },
13228
13229     'Labelled Statements': {
13230
13231         'start: for (;;) break start': {
13232             type: 'LabeledStatement',
13233             label: {
13234                 type: 'Identifier',
13235                 name: 'start',
13236                 range: [0, 5],
13237                 loc: {
13238                     start: { line: 1, column: 0 },
13239                     end: { line: 1, column: 5 }
13240                 }
13241             },
13242             body: {
13243                 type: 'ForStatement',
13244                 init: null,
13245                 test: null,
13246                 update: null,
13247                 body: {
13248                     type: 'BreakStatement',
13249                     label: {
13250                         type: 'Identifier',
13251                         name: 'start',
13252                         range: [22, 27],
13253                         loc: {
13254                             start: { line: 1, column: 22 },
13255                             end: { line: 1, column: 27 }
13256                         }
13257                     },
13258                     range: [16, 27],
13259                     loc: {
13260                         start: { line: 1, column: 16 },
13261                         end: { line: 1, column: 27 }
13262                     }
13263                 },
13264                 range: [7, 27],
13265                 loc: {
13266                     start: { line: 1, column: 7 },
13267                     end: { line: 1, column: 27 }
13268                 }
13269             },
13270             range: [0, 27],
13271             loc: {
13272                 start: { line: 1, column: 0 },
13273                 end: { line: 1, column: 27 }
13274             }
13275         },
13276
13277         'start: while (true) break start': {
13278             type: 'LabeledStatement',
13279             label: {
13280                 type: 'Identifier',
13281                 name: 'start',
13282                 range: [0, 5],
13283                 loc: {
13284                     start: { line: 1, column: 0 },
13285                     end: { line: 1, column: 5 }
13286                 }
13287             },
13288             body: {
13289                 type: 'WhileStatement',
13290                 test: {
13291                     type: 'Literal',
13292                     value: true,
13293                     raw: 'true',
13294                     range: [14, 18],
13295                     loc: {
13296                         start: { line: 1, column: 14 },
13297                         end: { line: 1, column: 18 }
13298                     }
13299                 },
13300                 body: {
13301                     type: 'BreakStatement',
13302                     label: {
13303                         type: 'Identifier',
13304                         name: 'start',
13305                         range: [26, 31],
13306                         loc: {
13307                             start: { line: 1, column: 26 },
13308                             end: { line: 1, column: 31 }
13309                         }
13310                     },
13311                     range: [20, 31],
13312                     loc: {
13313                         start: { line: 1, column: 20 },
13314                         end: { line: 1, column: 31 }
13315                     }
13316                 },
13317                 range: [7, 31],
13318                 loc: {
13319                     start: { line: 1, column: 7 },
13320                     end: { line: 1, column: 31 }
13321                 }
13322             },
13323             range: [0, 31],
13324             loc: {
13325                 start: { line: 1, column: 0 },
13326                 end: { line: 1, column: 31 }
13327             }
13328         }
13329
13330     },
13331
13332     'throw statement': {
13333
13334         'throw x;': {
13335             type: 'ThrowStatement',
13336             argument: {
13337                 type: 'Identifier',
13338                 name: 'x',
13339                 range: [6, 7],
13340                 loc: {
13341                     start: { line: 1, column: 6 },
13342                     end: { line: 1, column: 7 }
13343                 }
13344             },
13345             range: [0, 8],
13346             loc: {
13347                 start: { line: 1, column: 0 },
13348                 end: { line: 1, column: 8 }
13349             }
13350         },
13351
13352         'throw x * y': {
13353             type: 'ThrowStatement',
13354             argument: {
13355                 type: 'BinaryExpression',
13356                 operator: '*',
13357                 left: {
13358                     type: 'Identifier',
13359                     name: 'x',
13360                     range: [6, 7],
13361                     loc: {
13362                         start: { line: 1, column: 6 },
13363                         end: { line: 1, column: 7 }
13364                     }
13365                 },
13366                 right: {
13367                     type: 'Identifier',
13368                     name: 'y',
13369                     range: [10, 11],
13370                     loc: {
13371                         start: { line: 1, column: 10 },
13372                         end: { line: 1, column: 11 }
13373                     }
13374                 },
13375                 range: [6, 11],
13376                 loc: {
13377                     start: { line: 1, column: 6 },
13378                     end: { line: 1, column: 11 }
13379                 }
13380             },
13381             range: [0, 11],
13382             loc: {
13383                 start: { line: 1, column: 0 },
13384                 end: { line: 1, column: 11 }
13385             }
13386         },
13387
13388         'throw { message: "Error" }': {
13389             type: 'ThrowStatement',
13390             argument: {
13391                 type: 'ObjectExpression',
13392                 properties: [{
13393                     type: 'Property',
13394                     key: {
13395                         type: 'Identifier',
13396                         name: 'message',
13397                         range: [8, 15],
13398                         loc: {
13399                             start: { line: 1, column: 8 },
13400                             end: { line: 1, column: 15 }
13401                         }
13402                     },
13403                     value: {
13404                         type: 'Literal',
13405                         value: 'Error',
13406                         raw: '"Error"',
13407                         range: [17, 24],
13408                         loc: {
13409                             start: { line: 1, column: 17 },
13410                             end: { line: 1, column: 24 }
13411                         }
13412                     },
13413                     kind: 'init',
13414                     range: [8, 24],
13415                     loc: {
13416                         start: { line: 1, column: 8 },
13417                         end: { line: 1, column: 24 }
13418                     }
13419                 }],
13420                 range: [6, 26],
13421                 loc: {
13422                     start: { line: 1, column: 6 },
13423                     end: { line: 1, column: 26 }
13424                 }
13425             },
13426             range: [0, 26],
13427             loc: {
13428                 start: { line: 1, column: 0 },
13429                 end: { line: 1, column: 26 }
13430             }
13431         }
13432
13433     },
13434
13435     'try statement': {
13436
13437         'try { } catch (e) { }': {
13438             type: 'TryStatement',
13439             block: {
13440                 type: 'BlockStatement',
13441                 body: [],
13442                 range: [4, 7],
13443                 loc: {
13444                     start: { line: 1, column: 4 },
13445                     end: { line: 1, column: 7 }
13446                 }
13447             },
13448             guardedHandlers: [],
13449             handlers: [{
13450                 type: 'CatchClause',
13451                 param: {
13452                     type: 'Identifier',
13453                     name: 'e',
13454                     range: [15, 16],
13455                     loc: {
13456                         start: { line: 1, column: 15 },
13457                         end: { line: 1, column: 16 }
13458                     }
13459                 },
13460                 body: {
13461                     type: 'BlockStatement',
13462                     body: [],
13463                     range: [18, 21],
13464                     loc: {
13465                         start: { line: 1, column: 18 },
13466                         end: { line: 1, column: 21 }
13467                     }
13468                 },
13469                 range: [8, 21],
13470                 loc: {
13471                     start: { line: 1, column: 8 },
13472                     end: { line: 1, column: 21 }
13473                 }
13474             }],
13475             finalizer: null,
13476             range: [0, 21],
13477             loc: {
13478                 start: { line: 1, column: 0 },
13479                 end: { line: 1, column: 21 }
13480             }
13481         },
13482
13483         'try { } catch (eval) { }': {
13484             type: 'TryStatement',
13485             block: {
13486                 type: 'BlockStatement',
13487                 body: [],
13488                 range: [4, 7],
13489                 loc: {
13490                     start: { line: 1, column: 4 },
13491                     end: { line: 1, column: 7 }
13492                 }
13493             },
13494             guardedHandlers: [],
13495             handlers: [{
13496                 type: 'CatchClause',
13497                 param: {
13498                     type: 'Identifier',
13499                     name: 'eval',
13500                     range: [15, 19],
13501                     loc: {
13502                         start: { line: 1, column: 15 },
13503                         end: { line: 1, column: 19 }
13504                     }
13505                 },
13506                 body: {
13507                     type: 'BlockStatement',
13508                     body: [],
13509                     range: [21, 24],
13510                     loc: {
13511                         start: { line: 1, column: 21 },
13512                         end: { line: 1, column: 24 }
13513                     }
13514                 },
13515                 range: [8, 24],
13516                 loc: {
13517                     start: { line: 1, column: 8 },
13518                     end: { line: 1, column: 24 }
13519                 }
13520             }],
13521             finalizer: null,
13522             range: [0, 24],
13523             loc: {
13524                 start: { line: 1, column: 0 },
13525                 end: { line: 1, column: 24 }
13526             }
13527         },
13528
13529         'try { } catch (arguments) { }': {
13530             type: 'TryStatement',
13531             block: {
13532                 type: 'BlockStatement',
13533                 body: [],
13534                 range: [4, 7],
13535                 loc: {
13536                     start: { line: 1, column: 4 },
13537                     end: { line: 1, column: 7 }
13538                 }
13539             },
13540             guardedHandlers: [],
13541             handlers: [{
13542                 type: 'CatchClause',
13543                 param: {
13544                     type: 'Identifier',
13545                     name: 'arguments',
13546                     range: [15, 24],
13547                     loc: {
13548                         start: { line: 1, column: 15 },
13549                         end: { line: 1, column: 24 }
13550                     }
13551                 },
13552                 body: {
13553                     type: 'BlockStatement',
13554                     body: [],
13555                     range: [26, 29],
13556                     loc: {
13557                         start: { line: 1, column: 26 },
13558                         end: { line: 1, column: 29 }
13559                     }
13560                 },
13561                 range: [8, 29],
13562                 loc: {
13563                     start: { line: 1, column: 8 },
13564                     end: { line: 1, column: 29 }
13565                 }
13566             }],
13567             finalizer: null,
13568             range: [0, 29],
13569             loc: {
13570                 start: { line: 1, column: 0 },
13571                 end: { line: 1, column: 29 }
13572             }
13573         },
13574
13575         'try { } catch (e) { say(e) }': {
13576             type: 'TryStatement',
13577             block: {
13578                 type: 'BlockStatement',
13579                 body: [],
13580                 range: [4, 7],
13581                 loc: {
13582                     start: { line: 1, column: 4 },
13583                     end: { line: 1, column: 7 }
13584                 }
13585             },
13586             guardedHandlers: [],
13587             handlers: [{
13588                 type: 'CatchClause',
13589                 param: {
13590                     type: 'Identifier',
13591                     name: 'e',
13592                     range: [15, 16],
13593                     loc: {
13594                         start: { line: 1, column: 15 },
13595                         end: { line: 1, column: 16 }
13596                     }
13597                 },
13598                 body: {
13599                     type: 'BlockStatement',
13600                     body: [{
13601                         type: 'ExpressionStatement',
13602                         expression: {
13603                             type: 'CallExpression',
13604                             callee: {
13605                                 type: 'Identifier',
13606                                 name: 'say',
13607                                 range: [20, 23],
13608                                 loc: {
13609                                     start: { line: 1, column: 20 },
13610                                     end: { line: 1, column: 23 }
13611                                 }
13612                             },
13613                             'arguments': [{
13614                                 type: 'Identifier',
13615                                 name: 'e',
13616                                 range: [24, 25],
13617                                 loc: {
13618                                     start: { line: 1, column: 24 },
13619                                     end: { line: 1, column: 25 }
13620                                 }
13621                             }],
13622                             range: [20, 26],
13623                             loc: {
13624                                 start: { line: 1, column: 20 },
13625                                 end: { line: 1, column: 26 }
13626                             }
13627                         },
13628                         range: [20, 27],
13629                         loc: {
13630                             start: { line: 1, column: 20 },
13631                             end: { line: 1, column: 27 }
13632                         }
13633                     }],
13634                     range: [18, 28],
13635                     loc: {
13636                         start: { line: 1, column: 18 },
13637                         end: { line: 1, column: 28 }
13638                     }
13639                 },
13640                 range: [8, 28],
13641                 loc: {
13642                     start: { line: 1, column: 8 },
13643                     end: { line: 1, column: 28 }
13644                 }
13645             }],
13646             finalizer: null,
13647             range: [0, 28],
13648             loc: {
13649                 start: { line: 1, column: 0 },
13650                 end: { line: 1, column: 28 }
13651             }
13652         },
13653
13654         'try { } finally { cleanup(stuff) }': {
13655             type: 'TryStatement',
13656             block: {
13657                 type: 'BlockStatement',
13658                 body: [],
13659                 range: [4, 7],
13660                 loc: {
13661                     start: { line: 1, column: 4 },
13662                     end: { line: 1, column: 7 }
13663                 }
13664             },
13665             guardedHandlers: [],
13666             handlers: [],
13667             finalizer: {
13668                 type: 'BlockStatement',
13669                 body: [{
13670                     type: 'ExpressionStatement',
13671                     expression: {
13672                         type: 'CallExpression',
13673                         callee: {
13674                             type: 'Identifier',
13675                             name: 'cleanup',
13676                             range: [18, 25],
13677                             loc: {
13678                                 start: { line: 1, column: 18 },
13679                                 end: { line: 1, column: 25 }
13680                             }
13681                         },
13682                         'arguments': [{
13683                             type: 'Identifier',
13684                             name: 'stuff',
13685                             range: [26, 31],
13686                             loc: {
13687                                 start: { line: 1, column: 26 },
13688                                 end: { line: 1, column: 31 }
13689                             }
13690                         }],
13691                         range: [18, 32],
13692                         loc: {
13693                             start: { line: 1, column: 18 },
13694                             end: { line: 1, column: 32 }
13695                         }
13696                     },
13697                     range: [18, 33],
13698                     loc: {
13699                         start: { line: 1, column: 18 },
13700                         end: { line: 1, column: 33 }
13701                     }
13702                 }],
13703                 range: [16, 34],
13704                 loc: {
13705                     start: { line: 1, column: 16 },
13706                     end: { line: 1, column: 34 }
13707                 }
13708             },
13709             range: [0, 34],
13710             loc: {
13711                 start: { line: 1, column: 0 },
13712                 end: { line: 1, column: 34 }
13713             }
13714         },
13715
13716         'try { doThat(); } catch (e) { say(e) }': {
13717             type: 'TryStatement',
13718             block: {
13719                 type: 'BlockStatement',
13720                 body: [{
13721                     type: 'ExpressionStatement',
13722                     expression: {
13723                         type: 'CallExpression',
13724                         callee: {
13725                             type: 'Identifier',
13726                             name: 'doThat',
13727                             range: [6, 12],
13728                             loc: {
13729                                 start: { line: 1, column: 6 },
13730                                 end: { line: 1, column: 12 }
13731                             }
13732                         },
13733                         'arguments': [],
13734                         range: [6, 14],
13735                         loc: {
13736                             start: { line: 1, column: 6 },
13737                             end: { line: 1, column: 14 }
13738                         }
13739                     },
13740                     range: [6, 15],
13741                     loc: {
13742                         start: { line: 1, column: 6 },
13743                         end: { line: 1, column: 15 }
13744                     }
13745                 }],
13746                 range: [4, 17],
13747                 loc: {
13748                     start: { line: 1, column: 4 },
13749                     end: { line: 1, column: 17 }
13750                 }
13751             },
13752             guardedHandlers: [],
13753             handlers: [{
13754                 type: 'CatchClause',
13755                 param: {
13756                     type: 'Identifier',
13757                     name: 'e',
13758                     range: [25, 26],
13759                     loc: {
13760                         start: { line: 1, column: 25 },
13761                         end: { line: 1, column: 26 }
13762                     }
13763                 },
13764                 body: {
13765                     type: 'BlockStatement',
13766                     body: [{
13767                         type: 'ExpressionStatement',
13768                         expression: {
13769                             type: 'CallExpression',
13770                             callee: {
13771                                 type: 'Identifier',
13772                                 name: 'say',
13773                                 range: [30, 33],
13774                                 loc: {
13775                                     start: { line: 1, column: 30 },
13776                                     end: { line: 1, column: 33 }
13777                                 }
13778                             },
13779                             'arguments': [{
13780                                 type: 'Identifier',
13781                                 name: 'e',
13782                                 range: [34, 35],
13783                                 loc: {
13784                                     start: { line: 1, column: 34 },
13785                                     end: { line: 1, column: 35 }
13786                                 }
13787                             }],
13788                             range: [30, 36],
13789                             loc: {
13790                                 start: { line: 1, column: 30 },
13791                                 end: { line: 1, column: 36 }
13792                             }
13793                         },
13794                         range: [30, 37],
13795                         loc: {
13796                             start: { line: 1, column: 30 },
13797                             end: { line: 1, column: 37 }
13798                         }
13799                     }],
13800                     range: [28, 38],
13801                     loc: {
13802                         start: { line: 1, column: 28 },
13803                         end: { line: 1, column: 38 }
13804                     }
13805                 },
13806                 range: [18, 38],
13807                 loc: {
13808                     start: { line: 1, column: 18 },
13809                     end: { line: 1, column: 38 }
13810                 }
13811             }],
13812             finalizer: null,
13813             range: [0, 38],
13814             loc: {
13815                 start: { line: 1, column: 0 },
13816                 end: { line: 1, column: 38 }
13817             }
13818         },
13819
13820         'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': {
13821             type: 'TryStatement',
13822             block: {
13823                 type: 'BlockStatement',
13824                 body: [{
13825                     type: 'ExpressionStatement',
13826                     expression: {
13827                         type: 'CallExpression',
13828                         callee: {
13829                             type: 'Identifier',
13830                             name: 'doThat',
13831                             range: [6, 12],
13832                             loc: {
13833                                 start: { line: 1, column: 6 },
13834                                 end: { line: 1, column: 12 }
13835                             }
13836                         },
13837                         'arguments': [],
13838                         range: [6, 14],
13839                         loc: {
13840                             start: { line: 1, column: 6 },
13841                             end: { line: 1, column: 14 }
13842                         }
13843                     },
13844                     range: [6, 15],
13845                     loc: {
13846                         start: { line: 1, column: 6 },
13847                         end: { line: 1, column: 15 }
13848                     }
13849                 }],
13850                 range: [4, 17],
13851                 loc: {
13852                     start: { line: 1, column: 4 },
13853                     end: { line: 1, column: 17 }
13854                 }
13855             },
13856             guardedHandlers: [],
13857             handlers: [{
13858                 type: 'CatchClause',
13859                 param: {
13860                     type: 'Identifier',
13861                     name: 'e',
13862                     range: [25, 26],
13863                     loc: {
13864                         start: { line: 1, column: 25 },
13865                         end: { line: 1, column: 26 }
13866                     }
13867                 },
13868                 body: {
13869                     type: 'BlockStatement',
13870                     body: [{
13871                         type: 'ExpressionStatement',
13872                         expression: {
13873                             type: 'CallExpression',
13874                             callee: {
13875                                 type: 'Identifier',
13876                                 name: 'say',
13877                                 range: [30, 33],
13878                                 loc: {
13879                                     start: { line: 1, column: 30 },
13880                                     end: { line: 1, column: 33 }
13881                                 }
13882                             },
13883                             'arguments': [{
13884                                 type: 'Identifier',
13885                                 name: 'e',
13886                                 range: [34, 35],
13887                                 loc: {
13888                                     start: { line: 1, column: 34 },
13889                                     end: { line: 1, column: 35 }
13890                                 }
13891                             }],
13892                             range: [30, 36],
13893                             loc: {
13894                                 start: { line: 1, column: 30 },
13895                                 end: { line: 1, column: 36 }
13896                             }
13897                         },
13898                         range: [30, 37],
13899                         loc: {
13900                             start: { line: 1, column: 30 },
13901                             end: { line: 1, column: 37 }
13902                         }
13903                     }],
13904                     range: [28, 38],
13905                     loc: {
13906                         start: { line: 1, column: 28 },
13907                         end: { line: 1, column: 38 }
13908                     }
13909                 },
13910                 range: [18, 38],
13911                 loc: {
13912                     start: { line: 1, column: 18 },
13913                     end: { line: 1, column: 38 }
13914                 }
13915             }],
13916             finalizer: {
13917                 type: 'BlockStatement',
13918                 body: [{
13919                     type: 'ExpressionStatement',
13920                     expression: {
13921                         type: 'CallExpression',
13922                         callee: {
13923                             type: 'Identifier',
13924                             name: 'cleanup',
13925                             range: [49, 56],
13926                             loc: {
13927                                 start: { line: 1, column: 49 },
13928                                 end: { line: 1, column: 56 }
13929                             }
13930                         },
13931                         'arguments': [{
13932                             type: 'Identifier',
13933                             name: 'stuff',
13934                             range: [57, 62],
13935                             loc: {
13936                                 start: { line: 1, column: 57 },
13937                                 end: { line: 1, column: 62 }
13938                             }
13939                         }],
13940                         range: [49, 63],
13941                         loc: {
13942                             start: { line: 1, column: 49 },
13943                             end: { line: 1, column: 63 }
13944                         }
13945                     },
13946                     range: [49, 64],
13947                     loc: {
13948                         start: { line: 1, column: 49 },
13949                         end: { line: 1, column: 64 }
13950                     }
13951                 }],
13952                 range: [47, 65],
13953                 loc: {
13954                     start: { line: 1, column: 47 },
13955                     end: { line: 1, column: 65 }
13956                 }
13957             },
13958             range: [0, 65],
13959             loc: {
13960                 start: { line: 1, column: 0 },
13961                 end: { line: 1, column: 65 }
13962             }
13963         }
13964
13965     },
13966
13967     'debugger statement': {
13968
13969         'debugger;': {
13970             type: 'DebuggerStatement',
13971             range: [0, 9],
13972             loc: {
13973                 start: { line: 1, column: 0 },
13974                 end: { line: 1, column: 9 }
13975             }
13976         }
13977
13978     },
13979
13980     'Function Definition': {
13981
13982         'function hello() { sayHi(); }': {
13983             type: 'FunctionDeclaration',
13984             id: {
13985                 type: 'Identifier',
13986                 name: 'hello',
13987                 range: [9, 14],
13988                 loc: {
13989                     start: { line: 1, column: 9 },
13990                     end: { line: 1, column: 14 }
13991                 }
13992             },
13993             params: [],
13994             defaults: [],
13995             body: {
13996                 type: 'BlockStatement',
13997                 body: [{
13998                     type: 'ExpressionStatement',
13999                     expression: {
14000                         type: 'CallExpression',
14001                         callee: {
14002                             type: 'Identifier',
14003                             name: 'sayHi',
14004                             range: [19, 24],
14005                             loc: {
14006                                 start: { line: 1, column: 19 },
14007                                 end: { line: 1, column: 24 }
14008                             }
14009                         },
14010                         'arguments': [],
14011                         range: [19, 26],
14012                         loc: {
14013                             start: { line: 1, column: 19 },
14014                             end: { line: 1, column: 26 }
14015                         }
14016                     },
14017                     range: [19, 27],
14018                     loc: {
14019                         start: { line: 1, column: 19 },
14020                         end: { line: 1, column: 27 }
14021                     }
14022                 }],
14023                 range: [17, 29],
14024                 loc: {
14025                     start: { line: 1, column: 17 },
14026                     end: { line: 1, column: 29 }
14027                 }
14028             },
14029             rest: null,
14030             generator: false,
14031             expression: false,
14032             range: [0, 29],
14033             loc: {
14034                 start: { line: 1, column: 0 },
14035                 end: { line: 1, column: 29 }
14036             }
14037         },
14038
14039         'function eval() { }': {
14040             type: 'FunctionDeclaration',
14041             id: {
14042                 type: 'Identifier',
14043                 name: 'eval',
14044                 range: [9, 13],
14045                 loc: {
14046                     start: { line: 1, column: 9 },
14047                     end: { line: 1, column: 13 }
14048                 }
14049             },
14050             params: [],
14051             defaults: [],
14052             body: {
14053                 type: 'BlockStatement',
14054                 body: [],
14055                 range: [16, 19],
14056                 loc: {
14057                     start: { line: 1, column: 16 },
14058                     end: { line: 1, column: 19 }
14059                 }
14060             },
14061             rest: null,
14062             generator: false,
14063             expression: false,
14064             range: [0, 19],
14065             loc: {
14066                 start: { line: 1, column: 0 },
14067                 end: { line: 1, column: 19 }
14068             }
14069         },
14070
14071         'function arguments() { }': {
14072             type: 'FunctionDeclaration',
14073             id: {
14074                 type: 'Identifier',
14075                 name: 'arguments',
14076                 range: [9, 18],
14077                 loc: {
14078                     start: { line: 1, column: 9 },
14079                     end: { line: 1, column: 18 }
14080                 }
14081             },
14082             params: [],
14083             defaults: [],
14084             body: {
14085                 type: 'BlockStatement',
14086                 body: [],
14087                 range: [21, 24],
14088                 loc: {
14089                     start: { line: 1, column: 21 },
14090                     end: { line: 1, column: 24 }
14091                 }
14092             },
14093             rest: null,
14094             generator: false,
14095             expression: false,
14096             range: [0, 24],
14097             loc: {
14098                 start: { line: 1, column: 0 },
14099                 end: { line: 1, column: 24 }
14100             }
14101         },
14102
14103         'function test(t, t) { }': {
14104             type: 'FunctionDeclaration',
14105             id: {
14106                 type: 'Identifier',
14107                 name: 'test',
14108                 range: [9, 13],
14109                 loc: {
14110                     start: { line: 1, column: 9 },
14111                     end: { line: 1, column: 13 }
14112                 }
14113             },
14114             params: [{
14115                 type: 'Identifier',
14116                 name: 't',
14117                 range: [14, 15],
14118                 loc: {
14119                     start: { line: 1, column: 14 },
14120                     end: { line: 1, column: 15 }
14121                 }
14122             }, {
14123                 type: 'Identifier',
14124                 name: 't',
14125                 range: [17, 18],
14126                 loc: {
14127                     start: { line: 1, column: 17 },
14128                     end: { line: 1, column: 18 }
14129                 }
14130             }],
14131             defaults: [],
14132             body: {
14133                 type: 'BlockStatement',
14134                 body: [],
14135                 range: [20, 23],
14136                 loc: {
14137                     start: { line: 1, column: 20 },
14138                     end: { line: 1, column: 23 }
14139                 }
14140             },
14141             rest: null,
14142             generator: false,
14143             expression: false,
14144             range: [0, 23],
14145             loc: {
14146                 start: { line: 1, column: 0 },
14147                 end: { line: 1, column: 23 }
14148             }
14149         },
14150
14151         '(function test(t, t) { })': {
14152             type: 'ExpressionStatement',
14153             expression: {
14154                 type: 'FunctionExpression',
14155                 id: {
14156                     type: 'Identifier',
14157                     name: 'test',
14158                     range: [10, 14],
14159                     loc: {
14160                         start: { line: 1, column: 10 },
14161                         end: { line: 1, column: 14 }
14162                     }
14163                 },
14164                 params: [{
14165                     type: 'Identifier',
14166                     name: 't',
14167                     range: [15, 16],
14168                     loc: {
14169                         start: { line: 1, column: 15 },
14170                         end: { line: 1, column: 16 }
14171                     }
14172                 }, {
14173                     type: 'Identifier',
14174                     name: 't',
14175                     range: [18, 19],
14176                     loc: {
14177                         start: { line: 1, column: 18 },
14178                         end: { line: 1, column: 19 }
14179                     }
14180                 }],
14181                 defaults: [],
14182                 body: {
14183                     type: 'BlockStatement',
14184                     body: [],
14185                     range: [21, 24],
14186                     loc: {
14187                         start: { line: 1, column: 21 },
14188                         end: { line: 1, column: 24 }
14189                     }
14190                 },
14191                 rest: null,
14192                 generator: false,
14193                 expression: false,
14194                 range: [1, 24],
14195                 loc: {
14196                     start: { line: 1, column: 1 },
14197                     end: { line: 1, column: 24 }
14198                 }
14199             },
14200             range: [0, 25],
14201             loc: {
14202                 start: { line: 1, column: 0 },
14203                 end: { line: 1, column: 25 }
14204             }
14205         },
14206
14207         'function eval() { function inner() { "use strict" } }': {
14208             type: 'FunctionDeclaration',
14209             id: {
14210                 type: 'Identifier',
14211                 name: 'eval',
14212                 range: [9, 13],
14213                 loc: {
14214                     start: { line: 1, column: 9 },
14215                     end: { line: 1, column: 13 }
14216                 }
14217             },
14218             params: [],
14219             defaults: [],
14220             body: {
14221                 type: 'BlockStatement',
14222                 body: [{
14223                     type: 'FunctionDeclaration',
14224                     id: {
14225                         type: 'Identifier',
14226                         name: 'inner',
14227                         range: [27, 32],
14228                         loc: {
14229                             start: { line: 1, column: 27 },
14230                             end: { line: 1, column: 32 }
14231                         }
14232                     },
14233                     params: [],
14234                     defaults: [],
14235                     body: {
14236                         type: 'BlockStatement',
14237                         body: [{
14238                             type: 'ExpressionStatement',
14239                             expression: {
14240                                 type: 'Literal',
14241                                 value: 'use strict',
14242                                 raw: '\"use strict\"',
14243                                 range: [37, 49],
14244                                 loc: {
14245                                     start: { line: 1, column: 37 },
14246                                     end: { line: 1, column: 49 }
14247                                 }
14248                             },
14249                             range: [37, 50],
14250                             loc: {
14251                                 start: { line: 1, column: 37 },
14252                                 end: { line: 1, column: 50 }
14253                             }
14254                         }],
14255                         range: [35, 51],
14256                         loc: {
14257                             start: { line: 1, column: 35 },
14258                             end: { line: 1, column: 51 }
14259                         }
14260                     },
14261                     rest: null,
14262                     generator: false,
14263                     expression: false,
14264                     range: [18, 51],
14265                     loc: {
14266                         start: { line: 1, column: 18 },
14267                         end: { line: 1, column: 51 }
14268                     }
14269                 }],
14270                 range: [16, 53],
14271                 loc: {
14272                     start: { line: 1, column: 16 },
14273                     end: { line: 1, column: 53 }
14274                 }
14275             },
14276             rest: null,
14277             generator: false,
14278             expression: false,
14279             range: [0, 53],
14280             loc: {
14281                 start: { line: 1, column: 0 },
14282                 end: { line: 1, column: 53 }
14283             }
14284         },
14285
14286         'function hello(a) { sayHi(); }': {
14287             type: 'FunctionDeclaration',
14288             id: {
14289                 type: 'Identifier',
14290                 name: 'hello',
14291                 range: [9, 14],
14292                 loc: {
14293                     start: { line: 1, column: 9 },
14294                     end: { line: 1, column: 14 }
14295                 }
14296             },
14297             params: [{
14298                 type: 'Identifier',
14299                 name: 'a',
14300                 range: [15, 16],
14301                 loc: {
14302                     start: { line: 1, column: 15 },
14303                     end: { line: 1, column: 16 }
14304                 }
14305             }],
14306             defaults: [],
14307             body: {
14308                 type: 'BlockStatement',
14309                 body: [{
14310                     type: 'ExpressionStatement',
14311                     expression: {
14312                         type: 'CallExpression',
14313                         callee: {
14314                             type: 'Identifier',
14315                             name: 'sayHi',
14316                             range: [20, 25],
14317                             loc: {
14318                                 start: { line: 1, column: 20 },
14319                                 end: { line: 1, column: 25 }
14320                             }
14321                         },
14322                         'arguments': [],
14323                         range: [20, 27],
14324                         loc: {
14325                             start: { line: 1, column: 20 },
14326                             end: { line: 1, column: 27 }
14327                         }
14328                     },
14329                     range: [20, 28],
14330                     loc: {
14331                         start: { line: 1, column: 20 },
14332                         end: { line: 1, column: 28 }
14333                     }
14334                 }],
14335                 range: [18, 30],
14336                 loc: {
14337                     start: { line: 1, column: 18 },
14338                     end: { line: 1, column: 30 }
14339                 }
14340             },
14341             rest: null,
14342             generator: false,
14343             expression: false,
14344             range: [0, 30],
14345             loc: {
14346                 start: { line: 1, column: 0 },
14347                 end: { line: 1, column: 30 }
14348             }
14349         },
14350
14351         'function hello(a, b) { sayHi(); }': {
14352             type: 'FunctionDeclaration',
14353             id: {
14354                 type: 'Identifier',
14355                 name: 'hello',
14356                 range: [9, 14],
14357                 loc: {
14358                     start: { line: 1, column: 9 },
14359                     end: { line: 1, column: 14 }
14360                 }
14361             },
14362             params: [{
14363                 type: 'Identifier',
14364                 name: 'a',
14365                 range: [15, 16],
14366                 loc: {
14367                     start: { line: 1, column: 15 },
14368                     end: { line: 1, column: 16 }
14369                 }
14370             }, {
14371                 type: 'Identifier',
14372                 name: 'b',
14373                 range: [18, 19],
14374                 loc: {
14375                     start: { line: 1, column: 18 },
14376                     end: { line: 1, column: 19 }
14377                 }
14378             }],
14379             defaults: [],
14380             body: {
14381                 type: 'BlockStatement',
14382                 body: [{
14383                     type: 'ExpressionStatement',
14384                     expression: {
14385                         type: 'CallExpression',
14386                         callee: {
14387                             type: 'Identifier',
14388                             name: 'sayHi',
14389                             range: [23, 28],
14390                             loc: {
14391                                 start: { line: 1, column: 23 },
14392                                 end: { line: 1, column: 28 }
14393                             }
14394                         },
14395                         'arguments': [],
14396                         range: [23, 30],
14397                         loc: {
14398                             start: { line: 1, column: 23 },
14399                             end: { line: 1, column: 30 }
14400                         }
14401                     },
14402                     range: [23, 31],
14403                     loc: {
14404                         start: { line: 1, column: 23 },
14405                         end: { line: 1, column: 31 }
14406                     }
14407                 }],
14408                 range: [21, 33],
14409                 loc: {
14410                     start: { line: 1, column: 21 },
14411                     end: { line: 1, column: 33 }
14412                 }
14413             },
14414             rest: null,
14415             generator: false,
14416             expression: false,
14417             range: [0, 33],
14418             loc: {
14419                 start: { line: 1, column: 0 },
14420                 end: { line: 1, column: 33 }
14421             }
14422         },
14423
14424         'var hi = function() { sayHi() };': {
14425             type: 'VariableDeclaration',
14426             declarations: [{
14427                 type: 'VariableDeclarator',
14428                 id: {
14429                     type: 'Identifier',
14430                     name: 'hi',
14431                     range: [4, 6],
14432                     loc: {
14433                         start: { line: 1, column: 4 },
14434                         end: { line: 1, column: 6 }
14435                     }
14436                 },
14437                 init: {
14438                     type: 'FunctionExpression',
14439                     id: null,
14440                     params: [],
14441                     defaults: [],
14442                     body: {
14443                         type: 'BlockStatement',
14444                         body: [{
14445                             type: 'ExpressionStatement',
14446                             expression: {
14447                                 type: 'CallExpression',
14448                                 callee: {
14449                                     type: 'Identifier',
14450                                     name: 'sayHi',
14451                                     range: [22, 27],
14452                                     loc: {
14453                                         start: { line: 1, column: 22 },
14454                                         end: { line: 1, column: 27 }
14455                                     }
14456                                 },
14457                                 'arguments': [],
14458                                 range: [22, 29],
14459                                 loc: {
14460                                     start: { line: 1, column: 22 },
14461                                     end: { line: 1, column: 29 }
14462                                 }
14463                             },
14464                             range: [22, 30],
14465                             loc: {
14466                                 start: { line: 1, column: 22 },
14467                                 end: { line: 1, column: 30 }
14468                             }
14469                         }],
14470                         range: [20, 31],
14471                         loc: {
14472                             start: { line: 1, column: 20 },
14473                             end: { line: 1, column: 31 }
14474                         }
14475                     },
14476                     rest: null,
14477                     generator: false,
14478                     expression: false,
14479                     range: [9, 31],
14480                     loc: {
14481                         start: { line: 1, column: 9 },
14482                         end: { line: 1, column: 31 }
14483                     }
14484                 },
14485                 range: [4, 31],
14486                 loc: {
14487                     start: { line: 1, column: 4 },
14488                     end: { line: 1, column: 31 }
14489                 }
14490             }],
14491             kind: 'var',
14492             range: [0, 32],
14493             loc: {
14494                 start: { line: 1, column: 0 },
14495                 end: { line: 1, column: 32 }
14496             }
14497         },
14498
14499         'var hi = function eval() { };': {
14500             type: 'VariableDeclaration',
14501             declarations: [{
14502                 type: 'VariableDeclarator',
14503                 id: {
14504                     type: 'Identifier',
14505                     name: 'hi',
14506                     range: [4, 6],
14507                     loc: {
14508                         start: { line: 1, column: 4 },
14509                         end: { line: 1, column: 6 }
14510                     }
14511                 },
14512                 init: {
14513                     type: 'FunctionExpression',
14514                     id: {
14515                         type: 'Identifier',
14516                         name: 'eval',
14517                         range: [18, 22],
14518                         loc: {
14519                             start: { line: 1, column: 18 },
14520                             end: { line: 1, column: 22 }
14521                         }
14522                     },
14523                     params: [],
14524                     defaults: [],
14525                     body: {
14526                         type: 'BlockStatement',
14527                         body: [],
14528                         range: [25, 28],
14529                         loc: {
14530                             start: { line: 1, column: 25 },
14531                             end: { line: 1, column: 28 }
14532                         }
14533                     },
14534                     rest: null,
14535                     generator: false,
14536                     expression: false,
14537                     range: [9, 28],
14538                     loc: {
14539                         start: { line: 1, column: 9 },
14540                         end: { line: 1, column: 28 }
14541                     }
14542                 },
14543                 range: [4, 28],
14544                 loc: {
14545                     start: { line: 1, column: 4 },
14546                     end: { line: 1, column: 28 }
14547                 }
14548             }],
14549             kind: 'var',
14550             range: [0, 29],
14551             loc: {
14552                 start: { line: 1, column: 0 },
14553                 end: { line: 1, column: 29 }
14554             }
14555         },
14556
14557         'var hi = function arguments() { };': {
14558             type: 'VariableDeclaration',
14559             declarations: [{
14560                 type: 'VariableDeclarator',
14561                 id: {
14562                     type: 'Identifier',
14563                     name: 'hi',
14564                     range: [4, 6],
14565                     loc: {
14566                         start: { line: 1, column: 4 },
14567                         end: { line: 1, column: 6 }
14568                     }
14569                 },
14570                 init: {
14571                     type: 'FunctionExpression',
14572                     id: {
14573                         type: 'Identifier',
14574                         name: 'arguments',
14575                         range: [18, 27],
14576                         loc: {
14577                             start: { line: 1, column: 18 },
14578                             end: { line: 1, column: 27 }
14579                         }
14580                     },
14581                     params: [],
14582                     defaults: [],
14583                     body: {
14584                         type: 'BlockStatement',
14585                         body: [],
14586                         range: [30, 33],
14587                         loc: {
14588                             start: { line: 1, column: 30 },
14589                             end: { line: 1, column: 33 }
14590                         }
14591                     },
14592                     rest: null,
14593                     generator: false,
14594                     expression: false,
14595                     range: [9, 33],
14596                     loc: {
14597                         start: { line: 1, column: 9 },
14598                         end: { line: 1, column: 33 }
14599                     }
14600                 },
14601                 range: [4, 33],
14602                 loc: {
14603                     start: { line: 1, column: 4 },
14604                     end: { line: 1, column: 33 }
14605                 }
14606             }],
14607             kind: 'var',
14608             range: [0, 34],
14609             loc: {
14610                 start: { line: 1, column: 0 },
14611                 end: { line: 1, column: 34 }
14612             }
14613         },
14614
14615         'var hello = function hi() { sayHi() };': {
14616             type: 'VariableDeclaration',
14617             declarations: [{
14618                 type: 'VariableDeclarator',
14619                 id: {
14620                     type: 'Identifier',
14621                     name: 'hello',
14622                     range: [4, 9],
14623                     loc: {
14624                         start: { line: 1, column: 4 },
14625                         end: { line: 1, column: 9 }
14626                     }
14627                 },
14628                 init: {
14629                     type: 'FunctionExpression',
14630                     id: {
14631                         type: 'Identifier',
14632                         name: 'hi',
14633                         range: [21, 23],
14634                         loc: {
14635                             start: { line: 1, column: 21 },
14636                             end: { line: 1, column: 23 }
14637                         }
14638                     },
14639                     params: [],
14640                     defaults: [],
14641                     body: {
14642                         type: 'BlockStatement',
14643                         body: [{
14644                             type: 'ExpressionStatement',
14645                             expression: {
14646                                 type: 'CallExpression',
14647                                 callee: {
14648                                     type: 'Identifier',
14649                                     name: 'sayHi',
14650                                     range: [28, 33],
14651                                     loc: {
14652                                         start: { line: 1, column: 28 },
14653                                         end: { line: 1, column: 33 }
14654                                     }
14655                                 },
14656                                 'arguments': [],
14657                                 range: [28, 35],
14658                                 loc: {
14659                                     start: { line: 1, column: 28 },
14660                                     end: { line: 1, column: 35 }
14661                                 }
14662                             },
14663                             range: [28, 36],
14664                             loc: {
14665                                 start: { line: 1, column: 28 },
14666                                 end: { line: 1, column: 36 }
14667                             }
14668                         }],
14669                         range: [26, 37],
14670                         loc: {
14671                             start: { line: 1, column: 26 },
14672                             end: { line: 1, column: 37 }
14673                         }
14674                     },
14675                     rest: null,
14676                     generator: false,
14677                     expression: false,
14678                     range: [12, 37],
14679                     loc: {
14680                         start: { line: 1, column: 12 },
14681                         end: { line: 1, column: 37 }
14682                     }
14683                 },
14684                 range: [4, 37],
14685                 loc: {
14686                     start: { line: 1, column: 4 },
14687                     end: { line: 1, column: 37 }
14688                 }
14689             }],
14690             kind: 'var',
14691             range: [0, 38],
14692             loc: {
14693                 start: { line: 1, column: 0 },
14694                 end: { line: 1, column: 38 }
14695             }
14696         },
14697
14698         '(function(){})': {
14699             type: 'ExpressionStatement',
14700             expression: {
14701                 type: 'FunctionExpression',
14702                 id: null,
14703                 params: [],
14704                 defaults: [],
14705                 body: {
14706                     type: 'BlockStatement',
14707                     body: [],
14708                     range: [11, 13],
14709                     loc: {
14710                         start: { line: 1, column: 11 },
14711                         end: { line: 1, column: 13 }
14712                     }
14713                 },
14714                 rest: null,
14715                 generator: false,
14716                 expression: false,
14717                 range: [1, 13],
14718                 loc: {
14719                     start: { line: 1, column: 1 },
14720                     end: { line: 1, column: 13 }
14721                 }
14722             },
14723             range: [0, 14],
14724             loc: {
14725                 start: { line: 1, column: 0 },
14726                 end: { line: 1, column: 14 }
14727             }
14728         }
14729
14730     },
14731
14732     'Automatic semicolon insertion': {
14733
14734         '{ x\n++y }': {
14735             type: 'BlockStatement',
14736             body: [{
14737                 type: 'ExpressionStatement',
14738                 expression: {
14739                     type: 'Identifier',
14740                     name: 'x',
14741                     range: [2, 3],
14742                     loc: {
14743                         start: { line: 1, column: 2 },
14744                         end: { line: 1, column: 3 }
14745                     }
14746                 },
14747                 range: [2, 4],
14748                 loc: {
14749                     start: { line: 1, column: 2 },
14750                     end: { line: 2, column: 0 }
14751                 }
14752             }, {
14753                 type: 'ExpressionStatement',
14754                 expression: {
14755                     type: 'UpdateExpression',
14756                     operator: '++',
14757                     argument: {
14758                         type: 'Identifier',
14759                         name: 'y',
14760                         range: [6, 7],
14761                         loc: {
14762                             start: { line: 2, column: 2 },
14763                             end: { line: 2, column: 3 }
14764                         }
14765                     },
14766                     prefix: true,
14767                     range: [4, 7],
14768                     loc: {
14769                         start: { line: 2, column: 0 },
14770                         end: { line: 2, column: 3 }
14771                     }
14772                 },
14773                 range: [4, 8],
14774                 loc: {
14775                     start: { line: 2, column: 0 },
14776                     end: { line: 2, column: 4 }
14777                 }
14778             }],
14779             range: [0, 9],
14780             loc: {
14781                 start: { line: 1, column: 0 },
14782                 end: { line: 2, column: 5 }
14783             }
14784         },
14785
14786         '{ x\n--y }': {
14787             type: 'BlockStatement',
14788             body: [{
14789                 type: 'ExpressionStatement',
14790                 expression: {
14791                     type: 'Identifier',
14792                     name: 'x',
14793                     range: [2, 3],
14794                     loc: {
14795                         start: { line: 1, column: 2 },
14796                         end: { line: 1, column: 3 }
14797                     }
14798                 },
14799                 range: [2, 4],
14800                 loc: {
14801                     start: { line: 1, column: 2 },
14802                     end: { line: 2, column: 0 }
14803                 }
14804             }, {
14805                 type: 'ExpressionStatement',
14806                 expression: {
14807                     type: 'UpdateExpression',
14808                     operator: '--',
14809                     argument: {
14810                         type: 'Identifier',
14811                         name: 'y',
14812                         range: [6, 7],
14813                         loc: {
14814                             start: { line: 2, column: 2 },
14815                             end: { line: 2, column: 3 }
14816                         }
14817                     },
14818                     prefix: true,
14819                     range: [4, 7],
14820                     loc: {
14821                         start: { line: 2, column: 0 },
14822                         end: { line: 2, column: 3 }
14823                     }
14824                 },
14825                 range: [4, 8],
14826                 loc: {
14827                     start: { line: 2, column: 0 },
14828                     end: { line: 2, column: 4 }
14829                 }
14830             }],
14831             range: [0, 9],
14832             loc: {
14833                 start: { line: 1, column: 0 },
14834                 end: { line: 2, column: 5 }
14835             }
14836         },
14837
14838         'var x /* comment */;': {
14839             type: 'VariableDeclaration',
14840             declarations: [{
14841                 type: 'VariableDeclarator',
14842                 id: {
14843                     type: 'Identifier',
14844                     name: 'x',
14845                     range: [4, 5],
14846                     loc: {
14847                         start: { line: 1, column: 4 },
14848                         end: { line: 1, column: 5 }
14849                     }
14850                 },
14851                 init: null,
14852                 range: [4, 5],
14853                 loc: {
14854                     start: { line: 1, column: 4 },
14855                     end: { line: 1, column: 5 }
14856                 }
14857             }],
14858             kind: 'var',
14859             range: [0, 20],
14860             loc: {
14861                 start: { line: 1, column: 0 },
14862                 end: { line: 1, column: 20 }
14863             }
14864         },
14865
14866         '{ var x = 14, y = 3\nz; }': {
14867             type: 'BlockStatement',
14868             body: [{
14869                 type: 'VariableDeclaration',
14870                 declarations: [{
14871                     type: 'VariableDeclarator',
14872                     id: {
14873                         type: 'Identifier',
14874                         name: 'x',
14875                         range: [6, 7],
14876                         loc: {
14877                             start: { line: 1, column: 6 },
14878                             end: { line: 1, column: 7 }
14879                         }
14880                     },
14881                     init: {
14882                         type: 'Literal',
14883                         value: 14,
14884                         raw: '14',
14885                         range: [10, 12],
14886                         loc: {
14887                             start: { line: 1, column: 10 },
14888                             end: { line: 1, column: 12 }
14889                         }
14890                     },
14891                     range: [6, 12],
14892                     loc: {
14893                         start: { line: 1, column: 6 },
14894                         end: { line: 1, column: 12 }
14895                     }
14896                 }, {
14897                     type: 'VariableDeclarator',
14898                     id: {
14899                         type: 'Identifier',
14900                         name: 'y',
14901                         range: [14, 15],
14902                         loc: {
14903                             start: { line: 1, column: 14 },
14904                             end: { line: 1, column: 15 }
14905                         }
14906                     },
14907                     init: {
14908                         type: 'Literal',
14909                         value: 3,
14910                         raw: '3',
14911                         range: [18, 19],
14912                         loc: {
14913                             start: { line: 1, column: 18 },
14914                             end: { line: 1, column: 19 }
14915                         }
14916                     },
14917                     range: [14, 19],
14918                     loc: {
14919                         start: { line: 1, column: 14 },
14920                         end: { line: 1, column: 19 }
14921                     }
14922                 }],
14923                 kind: 'var',
14924                 range: [2, 20],
14925                 loc: {
14926                     start: { line: 1, column: 2 },
14927                     end: { line: 2, column: 0 }
14928                 }
14929             }, {
14930                 type: 'ExpressionStatement',
14931                 expression: {
14932                     type: 'Identifier',
14933                     name: 'z',
14934                     range: [20, 21],
14935                     loc: {
14936                         start: { line: 2, column: 0 },
14937                         end: { line: 2, column: 1 }
14938                     }
14939                 },
14940                 range: [20, 22],
14941                 loc: {
14942                     start: { line: 2, column: 0 },
14943                     end: { line: 2, column: 2 }
14944                 }
14945             }],
14946             range: [0, 24],
14947             loc: {
14948                 start: { line: 1, column: 0 },
14949                 end: { line: 2, column: 4 }
14950             }
14951         },
14952
14953         'while (true) { continue\nthere; }': {
14954             type: 'WhileStatement',
14955             test: {
14956                 type: 'Literal',
14957                 value: true,
14958                 raw: 'true',
14959                 range: [7, 11],
14960                 loc: {
14961                     start: { line: 1, column: 7 },
14962                     end: { line: 1, column: 11 }
14963                 }
14964             },
14965             body: {
14966                 type: 'BlockStatement',
14967                 body: [{
14968                     type: 'ContinueStatement',
14969                     label: null,
14970                     range: [15, 23],
14971                     loc: {
14972                         start: { line: 1, column: 15 },
14973                         end: { line: 1, column: 23 }
14974                     }
14975                 }, {
14976                     type: 'ExpressionStatement',
14977                     expression: {
14978                         type: 'Identifier',
14979                         name: 'there',
14980                         range: [24, 29],
14981                         loc: {
14982                             start: { line: 2, column: 0 },
14983                             end: { line: 2, column: 5 }
14984                         }
14985                     },
14986                     range: [24, 30],
14987                     loc: {
14988                         start: { line: 2, column: 0 },
14989                         end: { line: 2, column: 6 }
14990                     }
14991                 }],
14992                 range: [13, 32],
14993                 loc: {
14994                     start: { line: 1, column: 13 },
14995                     end: { line: 2, column: 8 }
14996                 }
14997             },
14998             range: [0, 32],
14999             loc: {
15000                 start: { line: 1, column: 0 },
15001                 end: { line: 2, column: 8 }
15002             }
15003         },
15004
15005         'while (true) { continue // Comment\nthere; }': {
15006             type: 'WhileStatement',
15007             test: {
15008                 type: 'Literal',
15009                 value: true,
15010                 raw: 'true',
15011                 range: [7, 11],
15012                 loc: {
15013                     start: { line: 1, column: 7 },
15014                     end: { line: 1, column: 11 }
15015                 }
15016             },
15017             body: {
15018                 type: 'BlockStatement',
15019                 body: [{
15020                     type: 'ContinueStatement',
15021                     label: null,
15022                     range: [15, 23],
15023                     loc: {
15024                         start: { line: 1, column: 15 },
15025                         end: { line: 1, column: 23 }
15026                     }
15027                 }, {
15028                     type: 'ExpressionStatement',
15029                     expression: {
15030                         type: 'Identifier',
15031                         name: 'there',
15032                         range: [35, 40],
15033                         loc: {
15034                             start: { line: 2, column: 0 },
15035                             end: { line: 2, column: 5 }
15036                         }
15037                     },
15038                     range: [35, 41],
15039                     loc: {
15040                         start: { line: 2, column: 0 },
15041                         end: { line: 2, column: 6 }
15042                     }
15043                 }],
15044                 range: [13, 43],
15045                 loc: {
15046                     start: { line: 1, column: 13 },
15047                     end: { line: 2, column: 8 }
15048                 }
15049             },
15050             range: [0, 43],
15051             loc: {
15052                 start: { line: 1, column: 0 },
15053                 end: { line: 2, column: 8 }
15054             }
15055         },
15056
15057         'while (true) { continue /* Multiline\nComment */there; }': {
15058             type: 'WhileStatement',
15059             test: {
15060                 type: 'Literal',
15061                 value: true,
15062                 raw: 'true',
15063                 range: [7, 11],
15064                 loc: {
15065                     start: { line: 1, column: 7 },
15066                     end: { line: 1, column: 11 }
15067                 }
15068             },
15069             body: {
15070                 type: 'BlockStatement',
15071                 body: [{
15072                     type: 'ContinueStatement',
15073                     label: null,
15074                     range: [15, 23],
15075                     loc: {
15076                         start: { line: 1, column: 15 },
15077                         end: { line: 1, column: 23 }
15078                     }
15079                 }, {
15080                     type: 'ExpressionStatement',
15081                     expression: {
15082                         type: 'Identifier',
15083                         name: 'there',
15084                         range: [47, 52],
15085                         loc: {
15086                             start: { line: 2, column: 10 },
15087                             end: { line: 2, column: 15 }
15088                         }
15089                     },
15090                     range: [47, 53],
15091                     loc: {
15092                         start: { line: 2, column: 10 },
15093                         end: { line: 2, column: 16 }
15094                     }
15095                 }],
15096                 range: [13, 55],
15097                 loc: {
15098                     start: { line: 1, column: 13 },
15099                     end: { line: 2, column: 18 }
15100                 }
15101             },
15102             range: [0, 55],
15103             loc: {
15104                 start: { line: 1, column: 0 },
15105                 end: { line: 2, column: 18 }
15106             }
15107         },
15108
15109         'while (true) { break\nthere; }': {
15110             type: 'WhileStatement',
15111             test: {
15112                 type: 'Literal',
15113                 value: true,
15114                 raw: 'true',
15115                 range: [7, 11],
15116                 loc: {
15117                     start: { line: 1, column: 7 },
15118                     end: { line: 1, column: 11 }
15119                 }
15120             },
15121             body: {
15122                 type: 'BlockStatement',
15123                 body: [{
15124                     type: 'BreakStatement',
15125                     label: null,
15126                     range: [15, 20],
15127                     loc: {
15128                         start: { line: 1, column: 15 },
15129                         end: { line: 1, column: 20 }
15130                     }
15131                 }, {
15132                     type: 'ExpressionStatement',
15133                     expression: {
15134                         type: 'Identifier',
15135                         name: 'there',
15136                         range: [21, 26],
15137                         loc: {
15138                             start: { line: 2, column: 0 },
15139                             end: { line: 2, column: 5 }
15140                         }
15141                     },
15142                     range: [21, 27],
15143                     loc: {
15144                         start: { line: 2, column: 0 },
15145                         end: { line: 2, column: 6 }
15146                     }
15147                 }],
15148                 range: [13, 29],
15149                 loc: {
15150                     start: { line: 1, column: 13 },
15151                     end: { line: 2, column: 8 }
15152                 }
15153             },
15154             range: [0, 29],
15155             loc: {
15156                 start: { line: 1, column: 0 },
15157                 end: { line: 2, column: 8 }
15158             }
15159         },
15160
15161         'while (true) { break // Comment\nthere; }': {
15162             type: 'WhileStatement',
15163             test: {
15164                 type: 'Literal',
15165                 value: true,
15166                 raw: 'true',
15167                 range: [7, 11],
15168                 loc: {
15169                     start: { line: 1, column: 7 },
15170                     end: { line: 1, column: 11 }
15171                 }
15172             },
15173             body: {
15174                 type: 'BlockStatement',
15175                 body: [{
15176                     type: 'BreakStatement',
15177                     label: null,
15178                     range: [15, 20],
15179                     loc: {
15180                         start: { line: 1, column: 15 },
15181                         end: { line: 1, column: 20 }
15182                     }
15183                 }, {
15184                     type: 'ExpressionStatement',
15185                     expression: {
15186                         type: 'Identifier',
15187                         name: 'there',
15188                         range: [32, 37],
15189                         loc: {
15190                             start: { line: 2, column: 0 },
15191                             end: { line: 2, column: 5 }
15192                         }
15193                     },
15194                     range: [32, 38],
15195                     loc: {
15196                         start: { line: 2, column: 0 },
15197                         end: { line: 2, column: 6 }
15198                     }
15199                 }],
15200                 range: [13, 40],
15201                 loc: {
15202                     start: { line: 1, column: 13 },
15203                     end: { line: 2, column: 8 }
15204                 }
15205             },
15206             range: [0, 40],
15207             loc: {
15208                 start: { line: 1, column: 0 },
15209                 end: { line: 2, column: 8 }
15210             }
15211         },
15212
15213         'while (true) { break /* Multiline\nComment */there; }': {
15214             type: 'WhileStatement',
15215             test: {
15216                 type: 'Literal',
15217                 value: true,
15218                 raw: 'true',
15219                 range: [7, 11],
15220                 loc: {
15221                     start: { line: 1, column: 7 },
15222                     end: { line: 1, column: 11 }
15223                 }
15224             },
15225             body: {
15226                 type: 'BlockStatement',
15227                 body: [{
15228                     type: 'BreakStatement',
15229                     label: null,
15230                     range: [15, 20],
15231                     loc: {
15232                         start: { line: 1, column: 15 },
15233                         end: { line: 1, column: 20 }
15234                     }
15235                 }, {
15236                     type: 'ExpressionStatement',
15237                     expression: {
15238                         type: 'Identifier',
15239                         name: 'there',
15240                         range: [44, 49],
15241                         loc: {
15242                             start: { line: 2, column: 10 },
15243                             end: { line: 2, column: 15 }
15244                         }
15245                     },
15246                     range: [44, 50],
15247                     loc: {
15248                         start: { line: 2, column: 10 },
15249                         end: { line: 2, column: 16 }
15250                     }
15251                 }],
15252                 range: [13, 52],
15253                 loc: {
15254                     start: { line: 1, column: 13 },
15255                     end: { line: 2, column: 18 }
15256                 }
15257             },
15258             range: [0, 52],
15259             loc: {
15260                 start: { line: 1, column: 0 },
15261                 end: { line: 2, column: 18 }
15262             }
15263         },
15264
15265         '(function(){ return\nx; })': {
15266             type: 'ExpressionStatement',
15267             expression: {
15268                 type: 'FunctionExpression',
15269                 id: null,
15270                 params: [],
15271                 defaults: [],
15272                 body: {
15273                     type: 'BlockStatement',
15274                     body: [
15275                         {
15276                             type: 'ReturnStatement',
15277                             argument: null,
15278                             range: [13, 19],
15279                             loc: {
15280                                 start: { line: 1, column: 13 },
15281                                 end: { line: 1, column: 19 }
15282                             }
15283                         },
15284                         {
15285                             type: 'ExpressionStatement',
15286                             expression: {
15287                                 type: 'Identifier',
15288                                 name: 'x',
15289                                 range: [20, 21],
15290                                 loc: {
15291                                     start: { line: 2, column: 0 },
15292                                     end: { line: 2, column: 1 }
15293                                 }
15294                             },
15295                             range: [20, 22],
15296                             loc: {
15297                                 start: { line: 2, column: 0 },
15298                                 end: { line: 2, column: 2 }
15299                             }
15300                         }
15301                     ],
15302                     range: [11, 24],
15303                     loc: {
15304                         start: { line: 1, column: 11 },
15305                         end: { line: 2, column: 4 }
15306                     }
15307                 },
15308                 rest: null,
15309                 generator: false,
15310                 expression: false,
15311                 range: [1, 24],
15312                 loc: {
15313                     start: { line: 1, column: 1 },
15314                     end: { line: 2, column: 4 }
15315                 }
15316             },
15317             range: [0, 25],
15318             loc: {
15319                 start: { line: 1, column: 0 },
15320                 end: { line: 2, column: 5 }
15321             }
15322         },
15323
15324         '(function(){ return // Comment\nx; })': {
15325             type: 'ExpressionStatement',
15326             expression: {
15327                 type: 'FunctionExpression',
15328                 id: null,
15329                 params: [],
15330                 defaults: [],
15331                 body: {
15332                     type: 'BlockStatement',
15333                     body: [
15334                         {
15335                             type: 'ReturnStatement',
15336                             argument: null,
15337                             range: [13, 19],
15338                             loc: {
15339                                 start: { line: 1, column: 13 },
15340                                 end: { line: 1, column: 19 }
15341                             }
15342                         },
15343                         {
15344                             type: 'ExpressionStatement',
15345                             expression: {
15346                                 type: 'Identifier',
15347                                 name: 'x',
15348                                 range: [31, 32],
15349                                 loc: {
15350                                     start: { line: 2, column: 0 },
15351                                     end: { line: 2, column: 1 }
15352                                 }
15353                             },
15354                             range: [31, 33],
15355                             loc: {
15356                                 start: { line: 2, column: 0 },
15357                                 end: { line: 2, column: 2 }
15358                             }
15359                         }
15360                     ],
15361                     range: [11, 35],
15362                     loc: {
15363                         start: { line: 1, column: 11 },
15364                         end: { line: 2, column: 4 }
15365                     }
15366                 },
15367                 rest: null,
15368                 generator: false,
15369                 expression: false,
15370                 range: [1, 35],
15371                 loc: {
15372                     start: { line: 1, column: 1 },
15373                     end: { line: 2, column: 4 }
15374                 }
15375             },
15376             range: [0, 36],
15377             loc: {
15378                 start: { line: 1, column: 0 },
15379                 end: { line: 2, column: 5 }
15380             }
15381         },
15382
15383         '(function(){ return/* Multiline\nComment */x; })': {
15384             type: 'ExpressionStatement',
15385             expression: {
15386                 type: 'FunctionExpression',
15387                 id: null,
15388                 params: [],
15389                 defaults: [],
15390                 body: {
15391                     type: 'BlockStatement',
15392                     body: [
15393                         {
15394                             type: 'ReturnStatement',
15395                             argument: null,
15396                             range: [13, 19],
15397                             loc: {
15398                                 start: { line: 1, column: 13 },
15399                                 end: { line: 1, column: 19 }
15400                             }
15401                         },
15402                         {
15403                             type: 'ExpressionStatement',
15404                             expression: {
15405                                 type: 'Identifier',
15406                                 name: 'x',
15407                                 range: [42, 43],
15408                                 loc: {
15409                                     start: { line: 2, column: 10 },
15410                                     end: { line: 2, column: 11 }
15411                                 }
15412                             },
15413                             range: [42, 44],
15414                             loc: {
15415                                 start: { line: 2, column: 10 },
15416                                 end: { line: 2, column: 12 }
15417                             }
15418                         }
15419                     ],
15420                     range: [11, 46],
15421                     loc: {
15422                         start: { line: 1, column: 11 },
15423                         end: { line: 2, column: 14 }
15424                     }
15425                 },
15426                 rest: null,
15427                 generator: false,
15428                 expression: false,
15429                 range: [1, 46],
15430                 loc: {
15431                     start: { line: 1, column: 1 },
15432                     end: { line: 2, column: 14 }
15433                 }
15434             },
15435             range: [0, 47],
15436             loc: {
15437                 start: { line: 1, column: 0 },
15438                 end: { line: 2, column: 15 }
15439             }
15440         },
15441
15442         '{ throw error\nerror; }': {
15443             type: 'BlockStatement',
15444             body: [{
15445                 type: 'ThrowStatement',
15446                 argument: {
15447                     type: 'Identifier',
15448                     name: 'error',
15449                     range: [8, 13],
15450                     loc: {
15451                         start: { line: 1, column: 8 },
15452                         end: { line: 1, column: 13 }
15453                     }
15454                 },
15455                 range: [2, 14],
15456                 loc: {
15457                     start: { line: 1, column: 2 },
15458                     end: { line: 2, column: 0 }
15459                 }
15460             }, {
15461                 type: 'ExpressionStatement',
15462                 expression: {
15463                     type: 'Identifier',
15464                     name: 'error',
15465                     range: [14, 19],
15466                     loc: {
15467                         start: { line: 2, column: 0 },
15468                         end: { line: 2, column: 5 }
15469                     }
15470                 },
15471                 range: [14, 20],
15472                 loc: {
15473                     start: { line: 2, column: 0 },
15474                     end: { line: 2, column: 6 }
15475                 }
15476             }],
15477             range: [0, 22],
15478             loc: {
15479                 start: { line: 1, column: 0 },
15480                 end: { line: 2, column: 8 }
15481             }
15482         },
15483
15484         '{ throw error// Comment\nerror; }': {
15485             type: 'BlockStatement',
15486             body: [{
15487                 type: 'ThrowStatement',
15488                 argument: {
15489                     type: 'Identifier',
15490                     name: 'error',
15491                     range: [8, 13],
15492                     loc: {
15493                         start: { line: 1, column: 8 },
15494                         end: { line: 1, column: 13 }
15495                     }
15496                 },
15497                 range: [2, 24],
15498                 loc: {
15499                     start: { line: 1, column: 2 },
15500                     end: { line: 2, column: 0 }
15501                 }
15502             }, {
15503                 type: 'ExpressionStatement',
15504                 expression: {
15505                     type: 'Identifier',
15506                     name: 'error',
15507                     range: [24, 29],
15508                     loc: {
15509                         start: { line: 2, column: 0 },
15510                         end: { line: 2, column: 5 }
15511                     }
15512                 },
15513                 range: [24, 30],
15514                 loc: {
15515                     start: { line: 2, column: 0 },
15516                     end: { line: 2, column: 6 }
15517                 }
15518             }],
15519             range: [0, 32],
15520             loc: {
15521                 start: { line: 1, column: 0 },
15522                 end: { line: 2, column: 8 }
15523             }
15524         },
15525
15526         '{ throw error/* Multiline\nComment */error; }': {
15527             type: 'BlockStatement',
15528             body: [{
15529                 type: 'ThrowStatement',
15530                 argument: {
15531                     type: 'Identifier',
15532                     name: 'error',
15533                     range: [8, 13],
15534                     loc: {
15535                         start: { line: 1, column: 8 },
15536                         end: { line: 1, column: 13 }
15537                     }
15538                 },
15539                 range: [2, 36],
15540                 loc: {
15541                     start: { line: 1, column: 2 },
15542                     end: { line: 2, column: 10 }
15543                 }
15544             }, {
15545                 type: 'ExpressionStatement',
15546                 expression: {
15547                     type: 'Identifier',
15548                     name: 'error',
15549                     range: [36, 41],
15550                     loc: {
15551                         start: { line: 2, column: 10 },
15552                         end: { line: 2, column: 15 }
15553                     }
15554                 },
15555                 range: [36, 42],
15556                 loc: {
15557                     start: { line: 2, column: 10 },
15558                     end: { line: 2, column: 16 }
15559                 }
15560             }],
15561             range: [0, 44],
15562             loc: {
15563                 start: { line: 1, column: 0 },
15564                 end: { line: 2, column: 18 }
15565             }
15566         }
15567
15568     },
15569
15570     'Source elements': {
15571
15572         '': {
15573             type: 'Program',
15574             body: [],
15575             range: [0, 0],
15576             loc: {
15577                 start: { line: 0, column: 0 },
15578                 end: { line: 0, column: 0 }
15579             },
15580             tokens: []
15581         }
15582     },
15583
15584     'Invalid syntax': {
15585
15586         '{': {
15587             index: 1,
15588             lineNumber: 1,
15589             column: 2,
15590             message: 'Error: Line 1: Unexpected end of input'
15591         },
15592
15593         '}': {
15594             index: 0,
15595             lineNumber: 1,
15596             column: 1,
15597             message: 'Error: Line 1: Unexpected token }'
15598         },
15599
15600         '3ea': {
15601             index: 2,
15602             lineNumber: 1,
15603             column: 3,
15604             message: 'Error: Line 1: Unexpected token ILLEGAL'
15605         },
15606
15607         '3in []': {
15608             index: 1,
15609             lineNumber: 1,
15610             column: 2,
15611             message: 'Error: Line 1: Unexpected token ILLEGAL'
15612         },
15613
15614         '3e': {
15615             index: 2,
15616             lineNumber: 1,
15617             column: 3,
15618             message: 'Error: Line 1: Unexpected token ILLEGAL'
15619         },
15620
15621         '3e+': {
15622             index: 3,
15623             lineNumber: 1,
15624             column: 4,
15625             message: 'Error: Line 1: Unexpected token ILLEGAL'
15626         },
15627
15628         '3e-': {
15629             index: 3,
15630             lineNumber: 1,
15631             column: 4,
15632             message: 'Error: Line 1: Unexpected token ILLEGAL'
15633         },
15634
15635         '3x': {
15636             index: 1,
15637             lineNumber: 1,
15638             column: 2,
15639             message: 'Error: Line 1: Unexpected token ILLEGAL'
15640         },
15641
15642         '3x0': {
15643             index: 1,
15644             lineNumber: 1,
15645             column: 2,
15646             message: 'Error: Line 1: Unexpected token ILLEGAL'
15647         },
15648
15649         '0x': {
15650             index: 2,
15651             lineNumber: 1,
15652             column: 3,
15653             message: 'Error: Line 1: Unexpected token ILLEGAL'
15654         },
15655
15656         '09': {
15657             index: 1,
15658             lineNumber: 1,
15659             column: 2,
15660             message: 'Error: Line 1: Unexpected token ILLEGAL'
15661         },
15662
15663         '018': {
15664             index: 2,
15665             lineNumber: 1,
15666             column: 3,
15667             message: 'Error: Line 1: Unexpected token ILLEGAL'
15668         },
15669
15670         '01a': {
15671             index: 2,
15672             lineNumber: 1,
15673             column: 3,
15674             message: 'Error: Line 1: Unexpected token ILLEGAL'
15675         },
15676
15677         '3in[]': {
15678             index: 1,
15679             lineNumber: 1,
15680             column: 2,
15681             message: 'Error: Line 1: Unexpected token ILLEGAL'
15682         },
15683
15684         '0x3in[]': {
15685             index: 3,
15686             lineNumber: 1,
15687             column: 4,
15688             message: 'Error: Line 1: Unexpected token ILLEGAL'
15689         },
15690
15691         '"Hello\nWorld"': {
15692             index: 7,
15693             lineNumber: 1,
15694             column: 8,
15695             message: 'Error: Line 1: Unexpected token ILLEGAL'
15696         },
15697
15698         'x\\': {
15699             index: 2,
15700             lineNumber: 1,
15701             column: 3,
15702             message: 'Error: Line 1: Unexpected token ILLEGAL'
15703         },
15704
15705         'x\\u005c': {
15706             index: 7,
15707             lineNumber: 1,
15708             column: 8,
15709             message: 'Error: Line 1: Unexpected token ILLEGAL'
15710         },
15711
15712         'x\\u002a': {
15713             index: 7,
15714             lineNumber: 1,
15715             column: 8,
15716             message: 'Error: Line 1: Unexpected token ILLEGAL'
15717         },
15718
15719         'var x = /(s/g': {
15720             index: 13,
15721             lineNumber: 1,
15722             column: 14,
15723             message: 'Error: Line 1: Invalid regular expression'
15724         },
15725
15726         '/': {
15727             index: 1,
15728             lineNumber: 1,
15729             column: 2,
15730             message: 'Error: Line 1: Invalid regular expression: missing /'
15731         },
15732
15733         '/test': {
15734             index: 5,
15735             lineNumber: 1,
15736             column: 6,
15737             message: 'Error: Line 1: Invalid regular expression: missing /'
15738         },
15739
15740         'var x = /[a-z]/\\ux': {
15741             index: 18,
15742             lineNumber: 1,
15743             column: 19,
15744             message: 'Error: Line 1: Invalid regular expression'
15745         },
15746
15747         '3 = 4': {
15748             index: 1,
15749             lineNumber: 1,
15750             column: 2,
15751             message: 'Error: Line 1: Invalid left-hand side in assignment'
15752         },
15753
15754         'func() = 4': {
15755             index: 6,
15756             lineNumber: 1,
15757             column: 7,
15758             message: 'Error: Line 1: Invalid left-hand side in assignment'
15759         },
15760
15761         '(1 + 1) = 10': {
15762             index: 7,
15763             lineNumber: 1,
15764             column: 8,
15765             message: 'Error: Line 1: Invalid left-hand side in assignment'
15766         },
15767
15768         '1++': {
15769             index: 1,
15770             lineNumber: 1,
15771             column: 2,
15772             message: 'Error: Line 1: Invalid left-hand side in assignment'
15773         },
15774
15775         '1--': {
15776             index: 1,
15777             lineNumber: 1,
15778             column: 2,
15779             message: 'Error: Line 1: Invalid left-hand side in assignment'
15780         },
15781
15782         '++1': {
15783             index: 3,
15784             lineNumber: 1,
15785             column: 4,
15786             message: 'Error: Line 1: Invalid left-hand side in assignment'
15787         },
15788
15789         '--1': {
15790             index: 3,
15791             lineNumber: 1,
15792             column: 4,
15793             message: 'Error: Line 1: Invalid left-hand side in assignment'
15794         },
15795
15796         'for((1 + 1) in list) process(x);': {
15797             index: 11,
15798             lineNumber: 1,
15799             column: 12,
15800             message: 'Error: Line 1: Invalid left-hand side in for-in'
15801         },
15802
15803         '[': {
15804             index: 1,
15805             lineNumber: 1,
15806             column: 2,
15807             message: 'Error: Line 1: Unexpected end of input'
15808         },
15809
15810         '[,': {
15811             index: 2,
15812             lineNumber: 1,
15813             column: 3,
15814             message: 'Error: Line 1: Unexpected end of input'
15815         },
15816
15817         '1 + {': {
15818             index: 5,
15819             lineNumber: 1,
15820             column: 6,
15821             message: 'Error: Line 1: Unexpected end of input'
15822         },
15823
15824         '1 + { t:t ': {
15825             index: 10,
15826             lineNumber: 1,
15827             column: 11,
15828             message: 'Error: Line 1: Unexpected end of input'
15829         },
15830
15831         '1 + { t:t,': {
15832             index: 10,
15833             lineNumber: 1,
15834             column: 11,
15835             message: 'Error: Line 1: Unexpected end of input'
15836         },
15837
15838         'var x = /\n/': {
15839             index: 10,
15840             lineNumber: 1,
15841             column: 11,
15842             message: 'Error: Line 1: Invalid regular expression: missing /'
15843         },
15844
15845         'var x = "\n': {
15846             index: 10,
15847             lineNumber: 1,
15848             column: 11,
15849             message: 'Error: Line 1: Unexpected token ILLEGAL'
15850         },
15851
15852         'var if = 42': {
15853             index: 4,
15854             lineNumber: 1,
15855             column: 5,
15856             message: 'Error: Line 1: Unexpected token if'
15857         },
15858
15859         'i + 2 = 42': {
15860             index: 5,
15861             lineNumber: 1,
15862             column: 6,
15863             message: 'Error: Line 1: Invalid left-hand side in assignment'
15864         },
15865
15866         '+i = 42': {
15867             index: 2,
15868             lineNumber: 1,
15869             column: 3,
15870             message: 'Error: Line 1: Invalid left-hand side in assignment'
15871         },
15872
15873         '1 + (': {
15874             index: 5,
15875             lineNumber: 1,
15876             column: 6,
15877             message: 'Error: Line 1: Unexpected end of input'
15878         },
15879
15880         '\n\n\n{': {
15881             index: 4,
15882             lineNumber: 4,
15883             column: 2,
15884             message: 'Error: Line 4: Unexpected end of input'
15885         },
15886
15887         '\n/* Some multiline\ncomment */\n)': {
15888             index: 30,
15889             lineNumber: 4,
15890             column: 1,
15891             message: 'Error: Line 4: Unexpected token )'
15892         },
15893
15894         '{ set 1 }': {
15895             index: 6,
15896             lineNumber: 1,
15897             column: 7,
15898             message: 'Error: Line 1: Unexpected number'
15899         },
15900
15901         '{ get 2 }': {
15902             index: 6,
15903             lineNumber: 1,
15904             column: 7,
15905             message: 'Error: Line 1: Unexpected number'
15906         },
15907
15908         '({ set: s(if) { } })': {
15909             index: 10,
15910             lineNumber: 1,
15911             column: 11,
15912             message: 'Error: Line 1: Unexpected token if'
15913         },
15914
15915         '({ set s(.) { } })': {
15916             index: 9,
15917             lineNumber: 1,
15918             column: 10,
15919             message: 'Error: Line 1: Unexpected token .'
15920         },
15921
15922         '({ set s() { } })': {
15923             index: 9,
15924             lineNumber: 1,
15925             column: 10,
15926             message: 'Error: Line 1: Unexpected token )'
15927         },
15928
15929         '({ set: s() { } })': {
15930             index: 12,
15931             lineNumber: 1,
15932             column: 13,
15933             message: 'Error: Line 1: Unexpected token {'
15934         },
15935
15936         '({ set: s(a, b) { } })': {
15937             index: 16,
15938             lineNumber: 1,
15939             column: 17,
15940             message: 'Error: Line 1: Unexpected token {'
15941         },
15942
15943         '({ get: g(d) { } })': {
15944             index: 13,
15945             lineNumber: 1,
15946             column: 14,
15947             message: 'Error: Line 1: Unexpected token {'
15948         },
15949
15950         '({ get i() { }, i: 42 })': {
15951             index: 21,
15952             lineNumber: 1,
15953             column: 22,
15954             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
15955         },
15956
15957         '({ i: 42, get i() { } })': {
15958             index: 21,
15959             lineNumber: 1,
15960             column: 22,
15961             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
15962         },
15963
15964         '({ set i(x) { }, i: 42 })': {
15965             index: 22,
15966             lineNumber: 1,
15967             column: 23,
15968             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
15969         },
15970
15971         '({ i: 42, set i(x) { } })': {
15972             index: 22,
15973             lineNumber: 1,
15974             column: 23,
15975             message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
15976         },
15977
15978         '({ get i() { }, get i() { } })': {
15979             index: 27,
15980             lineNumber: 1,
15981             column: 28,
15982             message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
15983         },
15984
15985         '({ set i(x) { }, set i(x) { } })': {
15986             index: 29,
15987             lineNumber: 1,
15988             column: 30,
15989             message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
15990         },
15991
15992         'function t(if) { }': {
15993             index: 11,
15994             lineNumber: 1,
15995             column: 12,
15996             message: 'Error: Line 1: Unexpected token if'
15997         },
15998
15999         'function t(true) { }': {
16000             index: 11,
16001             lineNumber: 1,
16002             column: 12,
16003             message: 'Error: Line 1: Unexpected token true'
16004         },
16005
16006         'function t(false) { }': {
16007             index: 11,
16008             lineNumber: 1,
16009             column: 12,
16010             message: 'Error: Line 1: Unexpected token false'
16011         },
16012
16013         'function t(null) { }': {
16014             index: 11,
16015             lineNumber: 1,
16016             column: 12,
16017             message: 'Error: Line 1: Unexpected token null'
16018         },
16019
16020         'function null() { }': {
16021             index: 9,
16022             lineNumber: 1,
16023             column: 10,
16024             message: 'Error: Line 1: Unexpected token null'
16025         },
16026
16027         'function true() { }': {
16028             index: 9,
16029             lineNumber: 1,
16030             column: 10,
16031             message: 'Error: Line 1: Unexpected token true'
16032         },
16033
16034         'function false() { }': {
16035             index: 9,
16036             lineNumber: 1,
16037             column: 10,
16038             message: 'Error: Line 1: Unexpected token false'
16039         },
16040
16041         'function if() { }': {
16042             index: 9,
16043             lineNumber: 1,
16044             column: 10,
16045             message: 'Error: Line 1: Unexpected token if'
16046         },
16047
16048         'a b;': {
16049             index: 2,
16050             lineNumber: 1,
16051             column: 3,
16052             message: 'Error: Line 1: Unexpected identifier'
16053         },
16054
16055         'if.a;': {
16056             index: 2,
16057             lineNumber: 1,
16058             column: 3,
16059             message: 'Error: Line 1: Unexpected token .'
16060         },
16061
16062         'a if;': {
16063             index: 2,
16064             lineNumber: 1,
16065             column: 3,
16066             message: 'Error: Line 1: Unexpected token if'
16067         },
16068
16069         'a class;': {
16070             index: 2,
16071             lineNumber: 1,
16072             column: 3,
16073             message: 'Error: Line 1: Unexpected reserved word'
16074         },
16075
16076         'break\n': {
16077             index: 5,
16078             lineNumber: 1,
16079             column: 6,
16080             message: 'Error: Line 1: Illegal break statement'
16081         },
16082
16083         'break 1;': {
16084             index: 6,
16085             lineNumber: 1,
16086             column: 7,
16087             message: 'Error: Line 1: Unexpected number'
16088         },
16089
16090         'continue\n': {
16091             index: 8,
16092             lineNumber: 1,
16093             column: 9,
16094             message: 'Error: Line 1: Illegal continue statement'
16095         },
16096
16097         'continue 2;': {
16098             index: 9,
16099             lineNumber: 1,
16100             column: 10,
16101             message: 'Error: Line 1: Unexpected number'
16102         },
16103
16104         'throw': {
16105             index: 5,
16106             lineNumber: 1,
16107             column: 6,
16108             message: 'Error: Line 1: Unexpected end of input'
16109         },
16110
16111         'throw;': {
16112             index: 5,
16113             lineNumber: 1,
16114             column: 6,
16115             message: 'Error: Line 1: Unexpected token ;'
16116         },
16117
16118         'throw\n': {
16119             index: 5,
16120             lineNumber: 1,
16121             column: 6,
16122             message: 'Error: Line 1: Illegal newline after throw'
16123         },
16124
16125         'for (var i, i2 in {});': {
16126             index: 15,
16127             lineNumber: 1,
16128             column: 16,
16129             message: 'Error: Line 1: Unexpected token in'
16130         },
16131
16132         'for ((i in {}));': {
16133             index: 14,
16134             lineNumber: 1,
16135             column: 15,
16136             message: 'Error: Line 1: Unexpected token )'
16137         },
16138
16139         'for (i + 1 in {});': {
16140             index: 10,
16141             lineNumber: 1,
16142             column: 11,
16143             message: 'Error: Line 1: Invalid left-hand side in for-in'
16144         },
16145
16146         'for (+i in {});': {
16147             index: 7,
16148             lineNumber: 1,
16149             column: 8,
16150             message: 'Error: Line 1: Invalid left-hand side in for-in'
16151         },
16152
16153         'if(false)': {
16154             index: 9,
16155             lineNumber: 1,
16156             column: 10,
16157             message: 'Error: Line 1: Unexpected end of input'
16158         },
16159
16160         'if(false) doThis(); else': {
16161             index: 24,
16162             lineNumber: 1,
16163             column: 25,
16164             message: 'Error: Line 1: Unexpected end of input'
16165         },
16166
16167         'do': {
16168             index: 2,
16169             lineNumber: 1,
16170             column: 3,
16171             message: 'Error: Line 1: Unexpected end of input'
16172         },
16173
16174         'while(false)': {
16175             index: 12,
16176             lineNumber: 1,
16177             column: 13,
16178             message: 'Error: Line 1: Unexpected end of input'
16179         },
16180
16181         'for(;;)': {
16182             index: 7,
16183             lineNumber: 1,
16184             column: 8,
16185             message: 'Error: Line 1: Unexpected end of input'
16186         },
16187
16188         'with(x)': {
16189             index: 7,
16190             lineNumber: 1,
16191             column: 8,
16192             message: 'Error: Line 1: Unexpected end of input'
16193         },
16194
16195         'try { }': {
16196             index: 7,
16197             lineNumber: 1,
16198             column: 8,
16199             message: 'Error: Line 1: Missing catch or finally after try'
16200         },
16201
16202         'try {} catch (42) {} ': {
16203             index: 14,
16204             lineNumber: 1,
16205             column: 15,
16206             message: 'Error: Line 1: Unexpected number'
16207         },
16208
16209         'try {} catch (answer()) {} ': {
16210             index: 20,
16211             lineNumber: 1,
16212             column: 21,
16213             message: 'Error: Line 1: Unexpected token ('
16214         },
16215
16216         'try {} catch (-x) {} ': {
16217             index: 14,
16218             lineNumber: 1,
16219             column: 15,
16220             message: 'Error: Line 1: Unexpected token -'
16221         },
16222
16223
16224         '\u203F = 10': {
16225             index: 0,
16226             lineNumber: 1,
16227             column: 1,
16228             message: 'Error: Line 1: Unexpected token ILLEGAL'
16229         },
16230
16231         'const x = 12, y;': {
16232             index: 15,
16233             lineNumber: 1,
16234             column: 16,
16235             message: 'Error: Line 1: Unexpected token ;'
16236         },
16237
16238         'const x, y = 12;': {
16239             index: 7,
16240             lineNumber: 1,
16241             column: 8,
16242             message: 'Error: Line 1: Unexpected token ,'
16243         },
16244
16245         'const x;': {
16246             index: 7,
16247             lineNumber: 1,
16248             column: 8,
16249             message: 'Error: Line 1: Unexpected token ;'
16250         },
16251
16252         'if(true) let a = 1;': {
16253             index: 9,
16254             lineNumber: 1,
16255             column: 10,
16256             message: 'Error: Line 1: Unexpected token let'
16257         },
16258
16259         'if(true) const a = 1;': {
16260             index: 9,
16261             lineNumber: 1,
16262             column: 10,
16263             message: 'Error: Line 1: Unexpected token const'
16264         },
16265
16266         'switch (c) { default: default: }': {
16267             index: 30,
16268             lineNumber: 1,
16269             column: 31,
16270             message: 'Error: Line 1: More than one default clause in switch statement'
16271         },
16272
16273         'new X()."s"': {
16274             index: 8,
16275             lineNumber: 1,
16276             column: 9,
16277             message: 'Error: Line 1: Unexpected string'
16278         },
16279
16280         '/*': {
16281             index: 2,
16282             lineNumber: 1,
16283             column: 3,
16284             message: 'Error: Line 1: Unexpected token ILLEGAL'
16285         },
16286
16287         '/*\n\n\n': {
16288             index: 5,
16289             lineNumber: 4,
16290             column: 1,
16291             message: 'Error: Line 4: Unexpected token ILLEGAL'
16292         },
16293
16294         '/**': {
16295             index: 3,
16296             lineNumber: 1,
16297             column: 4,
16298             message: 'Error: Line 1: Unexpected token ILLEGAL'
16299         },
16300
16301         '/*\n\n*': {
16302             index: 5,
16303             lineNumber: 3,
16304             column: 2,
16305             message: 'Error: Line 3: Unexpected token ILLEGAL'
16306         },
16307
16308         '/*hello': {
16309             index: 7,
16310             lineNumber: 1,
16311             column: 8,
16312             message: 'Error: Line 1: Unexpected token ILLEGAL'
16313         },
16314
16315         '/*hello  *': {
16316             index: 10,
16317             lineNumber: 1,
16318             column: 11,
16319             message: 'Error: Line 1: Unexpected token ILLEGAL'
16320         },
16321
16322         '\n]': {
16323             index: 1,
16324             lineNumber: 2,
16325             column: 1,
16326             message: 'Error: Line 2: Unexpected token ]'
16327         },
16328
16329         '\r]': {
16330             index: 1,
16331             lineNumber: 2,
16332             column: 1,
16333             message: 'Error: Line 2: Unexpected token ]'
16334         },
16335
16336         '\r\n]': {
16337             index: 2,
16338             lineNumber: 2,
16339             column: 1,
16340             message: 'Error: Line 2: Unexpected token ]'
16341         },
16342
16343         '\n\r]': {
16344             index: 2,
16345             lineNumber: 3,
16346             column: 1,
16347             message: 'Error: Line 3: Unexpected token ]'
16348         },
16349
16350         '//\r\n]': {
16351             index: 4,
16352             lineNumber: 2,
16353             column: 1,
16354             message: 'Error: Line 2: Unexpected token ]'
16355         },
16356
16357         '//\n\r]': {
16358             index: 4,
16359             lineNumber: 3,
16360             column: 1,
16361             message: 'Error: Line 3: Unexpected token ]'
16362         },
16363
16364         '/a\\\n/': {
16365             index: 4,
16366             lineNumber: 1,
16367             column: 5,
16368             message: 'Error: Line 1: Invalid regular expression: missing /'
16369         },
16370         
16371         '//\r \n]': {
16372             index: 5,
16373             lineNumber: 3,
16374             column: 1,
16375             message: 'Error: Line 3: Unexpected token ]'
16376         },
16377
16378         '/*\r\n*/]': {
16379             index: 6,
16380             lineNumber: 2,
16381             column: 3,
16382             message: 'Error: Line 2: Unexpected token ]'
16383         },
16384
16385         '/*\n\r*/]': {
16386             index: 6,
16387             lineNumber: 3,
16388             column: 3,
16389             message: 'Error: Line 3: Unexpected token ]'
16390         },
16391
16392         '/*\r \n*/]': {
16393             index: 7,
16394             lineNumber: 3,
16395             column: 3,
16396             message: 'Error: Line 3: Unexpected token ]'
16397         },
16398
16399         '\\\\': {
16400             index: 1,
16401             lineNumber: 1,
16402             column: 2,
16403             message: 'Error: Line 1: Unexpected token ILLEGAL'
16404         },
16405
16406         '\\u005c': {
16407             index: 6,
16408             lineNumber: 1,
16409             column: 7,
16410             message: 'Error: Line 1: Unexpected token ILLEGAL'
16411         },
16412
16413
16414         '\\x': {
16415             index: 1,
16416             lineNumber: 1,
16417             column: 2,
16418             message: 'Error: Line 1: Unexpected token ILLEGAL'
16419         },
16420
16421         '\\u0000': {
16422             index: 6,
16423             lineNumber: 1,
16424             column: 7,
16425             message: 'Error: Line 1: Unexpected token ILLEGAL'
16426         },
16427
16428         '\u200C = []': {
16429             index: 0,
16430             lineNumber: 1,
16431             column: 1,
16432             message: 'Error: Line 1: Unexpected token ILLEGAL'
16433         },
16434
16435         '\u200D = []': {
16436             index: 0,
16437             lineNumber: 1,
16438             column: 1,
16439             message: 'Error: Line 1: Unexpected token ILLEGAL'
16440         },
16441
16442         '"\\': {
16443             index: 3,
16444             lineNumber: 1,
16445             column: 4,
16446             message: 'Error: Line 1: Unexpected token ILLEGAL'
16447         },
16448
16449         '"\\u': {
16450             index: 3,
16451             lineNumber: 1,
16452             column: 4,
16453             message: 'Error: Line 1: Unexpected token ILLEGAL'
16454         },
16455
16456         'try { } catch() {}': {
16457             index: 14,
16458             lineNumber: 1,
16459             column: 15,
16460             message: 'Error: Line 1: Unexpected token )'
16461         },
16462
16463         'return': {
16464             index: 6,
16465             lineNumber: 1,
16466             column: 7,
16467             message: 'Error: Line 1: Illegal return statement'
16468         },
16469
16470         'break': {
16471             index: 5,
16472             lineNumber: 1,
16473             column: 6,
16474             message: 'Error: Line 1: Illegal break statement'
16475         },
16476
16477         'continue': {
16478             index: 8,
16479             lineNumber: 1,
16480             column: 9,
16481             message: 'Error: Line 1: Illegal continue statement'
16482         },
16483
16484         'switch (x) { default: continue; }': {
16485             index: 31,
16486             lineNumber: 1,
16487             column: 32,
16488             message: 'Error: Line 1: Illegal continue statement'
16489         },
16490
16491         'do { x } *': {
16492             index: 9,
16493             lineNumber: 1,
16494             column: 10,
16495             message: 'Error: Line 1: Unexpected token *'
16496         },
16497
16498         'while (true) { break x; }': {
16499             index: 22,
16500             lineNumber: 1,
16501             column: 23,
16502             message: 'Error: Line 1: Undefined label \'x\''
16503         },
16504
16505         'while (true) { continue x; }': {
16506             index: 25,
16507             lineNumber: 1,
16508             column: 26,
16509             message: 'Error: Line 1: Undefined label \'x\''
16510         },
16511
16512         'x: while (true) { (function () { break x; }); }': {
16513             index: 40,
16514             lineNumber: 1,
16515             column: 41,
16516             message: 'Error: Line 1: Undefined label \'x\''
16517         },
16518
16519         'x: while (true) { (function () { continue x; }); }': {
16520             index: 43,
16521             lineNumber: 1,
16522             column: 44,
16523             message: 'Error: Line 1: Undefined label \'x\''
16524         },
16525
16526         'x: while (true) { (function () { break; }); }': {
16527             index: 39,
16528             lineNumber: 1,
16529             column: 40,
16530             message: 'Error: Line 1: Illegal break statement'
16531         },
16532
16533         'x: while (true) { (function () { continue; }); }': {
16534             index: 42,
16535             lineNumber: 1,
16536             column: 43,
16537             message: 'Error: Line 1: Illegal continue statement'
16538         },
16539
16540         'x: while (true) { x: while (true) { } }': {
16541             index: 20,
16542             lineNumber: 1,
16543             column: 21,
16544             message: 'Error: Line 1: Label \'x\' has already been declared'
16545         },
16546
16547         '(function () { \'use strict\'; delete i; }())': {
16548             index: 37,
16549             lineNumber: 1,
16550             column: 38,
16551             message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
16552         },
16553
16554         '(function () { \'use strict\'; with (i); }())': {
16555             index: 28,
16556             lineNumber: 1,
16557             column: 29,
16558             message: 'Error: Line 1: Strict mode code may not include a with statement'
16559         },
16560
16561         'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': {
16562             index: 47,
16563             lineNumber: 1,
16564             column: 48,
16565             message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
16566         },
16567
16568         'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': {
16569             index: 73,
16570             lineNumber: 1,
16571             column: 74,
16572             message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
16573         },
16574
16575         'function hello() {\'use strict\'; var eval = 10; }': {
16576             index: 40,
16577             lineNumber: 1,
16578             column: 41,
16579             message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
16580         },
16581
16582         'function hello() {\'use strict\'; var arguments = 10; }': {
16583             index: 45,
16584             lineNumber: 1,
16585             column: 46,
16586             message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
16587         },
16588
16589         'function hello() {\'use strict\'; try { } catch (eval) { } }': {
16590             index: 51,
16591             lineNumber: 1,
16592             column: 52,
16593             message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
16594         },
16595
16596         'function hello() {\'use strict\'; try { } catch (arguments) { } }': {
16597             index: 56,
16598             lineNumber: 1,
16599             column: 57,
16600             message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
16601         },
16602
16603         'function hello() {\'use strict\'; eval = 10; }': {
16604             index: 32,
16605             lineNumber: 1,
16606             column: 33,
16607             message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
16608         },
16609
16610         'function hello() {\'use strict\'; arguments = 10; }': {
16611             index: 32,
16612             lineNumber: 1,
16613             column: 33,
16614             message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
16615         },
16616
16617         'function hello() {\'use strict\'; ++eval; }': {
16618             index: 38,
16619             lineNumber: 1,
16620             column: 39,
16621             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
16622         },
16623
16624         'function hello() {\'use strict\'; --eval; }': {
16625             index: 38,
16626             lineNumber: 1,
16627             column: 39,
16628             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
16629         },
16630
16631         'function hello() {\'use strict\'; ++arguments; }': {
16632             index: 43,
16633             lineNumber: 1,
16634             column: 44,
16635             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
16636         },
16637
16638         'function hello() {\'use strict\'; --arguments; }': {
16639             index: 43,
16640             lineNumber: 1,
16641             column: 44,
16642             message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
16643         },
16644
16645         'function hello() {\'use strict\'; eval++; }': {
16646             index: 36,
16647             lineNumber: 1,
16648             column: 37,
16649             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
16650         },
16651
16652         'function hello() {\'use strict\'; eval--; }': {
16653             index: 36,
16654             lineNumber: 1,
16655             column: 37,
16656             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
16657         },
16658
16659         'function hello() {\'use strict\'; arguments++; }': {
16660             index: 41,
16661             lineNumber: 1,
16662             column: 42,
16663             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
16664         },
16665
16666         'function hello() {\'use strict\'; arguments--; }': {
16667             index: 41,
16668             lineNumber: 1,
16669             column: 42,
16670             message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
16671         },
16672
16673         'function hello() {\'use strict\'; function eval() { } }': {
16674             index: 41,
16675             lineNumber: 1,
16676             column: 42,
16677             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16678         },
16679
16680         'function hello() {\'use strict\'; function arguments() { } }': {
16681             index: 41,
16682             lineNumber: 1,
16683             column: 42,
16684             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16685         },
16686
16687         'function eval() {\'use strict\'; }': {
16688             index: 9,
16689             lineNumber: 1,
16690             column: 10,
16691             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16692         },
16693
16694         'function arguments() {\'use strict\'; }': {
16695             index: 9,
16696             lineNumber: 1,
16697             column: 10,
16698             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16699         },
16700
16701         'function hello() {\'use strict\'; (function eval() { }()) }': {
16702             index: 42,
16703             lineNumber: 1,
16704             column: 43,
16705             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16706         },
16707
16708         'function hello() {\'use strict\'; (function arguments() { }()) }': {
16709             index: 42,
16710             lineNumber: 1,
16711             column: 43,
16712             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16713         },
16714
16715         '(function eval() {\'use strict\'; })()': {
16716             index: 10,
16717             lineNumber: 1,
16718             column: 11,
16719             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16720         },
16721
16722         '(function arguments() {\'use strict\'; })()': {
16723             index: 10,
16724             lineNumber: 1,
16725             column: 11,
16726             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16727         },
16728
16729         'function hello() {\'use strict\'; ({ s: function eval() { } }); }': {
16730             index: 47,
16731             lineNumber: 1,
16732             column: 48,
16733             message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
16734         },
16735
16736         '(function package() {\'use strict\'; })()': {
16737             index: 10,
16738             lineNumber: 1,
16739             column: 11,
16740             message: 'Error: Line 1: Use of future reserved word in strict mode'
16741         },
16742
16743         'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': {
16744             index: 48,
16745             lineNumber: 1,
16746             column: 49,
16747             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16748         },
16749
16750         'function hello() {\'use strict\'; ({ set s(eval) { } }); }': {
16751             index: 41,
16752             lineNumber: 1,
16753             column: 42,
16754             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16755         },
16756
16757         'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': {
16758             index: 49,
16759             lineNumber: 1,
16760             column: 50,
16761             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16762         },
16763
16764         'function hello(eval) {\'use strict\';}': {
16765             index: 15,
16766             lineNumber: 1,
16767             column: 16,
16768             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16769         },
16770
16771         'function hello(arguments) {\'use strict\';}': {
16772             index: 15,
16773             lineNumber: 1,
16774             column: 16,
16775             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16776         },
16777
16778         'function hello() { \'use strict\'; function inner(eval) {} }': {
16779             index: 48,
16780             lineNumber: 1,
16781             column: 49,
16782             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16783         },
16784
16785         'function hello() { \'use strict\'; function inner(arguments) {} }': {
16786             index: 48,
16787             lineNumber: 1,
16788             column: 49,
16789             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16790         },
16791
16792         ' "\\1"; \'use strict\';': {
16793             index: 1,
16794             lineNumber: 1,
16795             column: 2,
16796             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16797         },
16798
16799         'function hello() { \'use strict\'; "\\1"; }': {
16800             index: 33,
16801             lineNumber: 1,
16802             column: 34,
16803             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16804         },
16805
16806         'function hello() { \'use strict\'; 021; }': {
16807             index: 33,
16808             lineNumber: 1,
16809             column: 34,
16810             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16811         },
16812
16813         'function hello() { \'use strict\'; ({ "\\1": 42 }); }': {
16814             index: 36,
16815             lineNumber: 1,
16816             column: 37,
16817             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16818         },
16819
16820         'function hello() { \'use strict\'; ({ 021: 42 }); }': {
16821             index: 36,
16822             lineNumber: 1,
16823             column: 37,
16824             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16825         },
16826
16827         'function hello() { "octal directive\\1"; "use strict"; }': {
16828             index: 19,
16829             lineNumber: 1,
16830             column: 20,
16831             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16832         },
16833
16834         'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': {
16835             index: 19,
16836             lineNumber: 1,
16837             column: 20,
16838             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16839         },
16840
16841         'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': {
16842             index: 52,
16843             lineNumber: 1,
16844             column: 53,
16845             message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
16846         },
16847
16848         'function hello() { "use strict"; var implements; }': {
16849             index: 37,
16850             lineNumber: 1,
16851             column: 38,
16852             message: 'Error: Line 1: Use of future reserved word in strict mode'
16853         },
16854
16855         'function hello() { "use strict"; var interface; }': {
16856             index: 37,
16857             lineNumber: 1,
16858             column: 38,
16859             message: 'Error: Line 1: Use of future reserved word in strict mode'
16860         },
16861
16862         'function hello() { "use strict"; var package; }': {
16863             index: 37,
16864             lineNumber: 1,
16865             column: 38,
16866             message: 'Error: Line 1: Use of future reserved word in strict mode'
16867         },
16868
16869         'function hello() { "use strict"; var private; }': {
16870             index: 37,
16871             lineNumber: 1,
16872             column: 38,
16873             message: 'Error: Line 1: Use of future reserved word in strict mode'
16874         },
16875
16876         'function hello() { "use strict"; var protected; }': {
16877             index: 37,
16878             lineNumber: 1,
16879             column: 38,
16880             message: 'Error: Line 1: Use of future reserved word in strict mode'
16881         },
16882
16883         'function hello() { "use strict"; var public; }': {
16884             index: 37,
16885             lineNumber: 1,
16886             column: 38,
16887             message: 'Error: Line 1: Use of future reserved word in strict mode'
16888         },
16889
16890         'function hello() { "use strict"; var static; }': {
16891             index: 37,
16892             lineNumber: 1,
16893             column: 38,
16894             message: 'Error: Line 1: Use of future reserved word in strict mode'
16895         },
16896
16897         'function hello() { "use strict"; var yield; }': {
16898             index: 37,
16899             lineNumber: 1,
16900             column: 38,
16901             message: 'Error: Line 1: Use of future reserved word in strict mode'
16902         },
16903
16904         'function hello() { "use strict"; var let; }': {
16905             index: 37,
16906             lineNumber: 1,
16907             column: 38,
16908             message: 'Error: Line 1: Use of future reserved word in strict mode'
16909         },
16910
16911         'function hello(static) { "use strict"; }': {
16912             index: 15,
16913             lineNumber: 1,
16914             column: 16,
16915             message: 'Error: Line 1: Use of future reserved word in strict mode'
16916         },
16917
16918         'function static() { "use strict"; }': {
16919             index: 9,
16920             lineNumber: 1,
16921             column: 10,
16922             message: 'Error: Line 1: Use of future reserved word in strict mode'
16923         },
16924
16925         'var yield': {
16926             index: 4,
16927             lineNumber: 1,
16928             column: 5,
16929             message: 'Error: Line 1: Unexpected token yield'
16930         },
16931
16932         'var let': {
16933             index: 4,
16934             lineNumber: 1,
16935             column: 5,
16936             message: 'Error: Line 1: Unexpected token let'
16937         },
16938
16939         '"use strict"; function static() { }': {
16940             index: 23,
16941             lineNumber: 1,
16942             column: 24,
16943             message: 'Error: Line 1: Use of future reserved word in strict mode'
16944         },
16945
16946         'function a(t, t) { "use strict"; }': {
16947             index: 14,
16948             lineNumber: 1,
16949             column: 15,
16950             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
16951         },
16952
16953         'function a(eval) { "use strict"; }': {
16954             index: 11,
16955             lineNumber: 1,
16956             column: 12,
16957             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16958         },
16959
16960         'function a(package) { "use strict"; }': {
16961             index: 11,
16962             lineNumber: 1,
16963             column: 12,
16964             message: 'Error: Line 1: Use of future reserved word in strict mode'
16965         },
16966
16967         'function a() { "use strict"; function b(t, t) { }; }': {
16968             index: 43,
16969             lineNumber: 1,
16970             column: 44,
16971             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
16972         },
16973
16974         '(function a(t, t) { "use strict"; })': {
16975             index: 15,
16976             lineNumber: 1,
16977             column: 16,
16978             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
16979         },
16980
16981         'function a() { "use strict"; (function b(t, t) { }); }': {
16982             index: 44,
16983             lineNumber: 1,
16984             column: 45,
16985             message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
16986         },
16987
16988         '(function a(eval) { "use strict"; })': {
16989             index: 12,
16990             lineNumber: 1,
16991             column: 13,
16992             message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
16993         },
16994
16995         '(function a(package) { "use strict"; })': {
16996             index: 12,
16997             lineNumber: 1,
16998             column: 13,
16999             message: 'Error: Line 1: Use of future reserved word in strict mode'
17000         },
17001
17002         'var': {
17003             index: 3,
17004             lineNumber: 1,
17005             column: 4,
17006             message: 'Error: Line 1: Unexpected end of input'
17007         },
17008
17009         'let': {
17010             index: 3,
17011             lineNumber: 1,
17012             column: 4,
17013             message: 'Error: Line 1: Unexpected end of input'
17014         },
17015
17016         'const': {
17017             index: 5,
17018             lineNumber: 1,
17019             column: 6,
17020             message: 'Error: Line 1: Unexpected end of input'
17021         }
17022
17023     },
17024
17025     'API': {
17026         'parse()': {
17027             call: 'parse',
17028             args: [],
17029             result: {
17030                 type: 'Program',
17031                 body: [{
17032                     type: 'ExpressionStatement',
17033                     expression: {
17034                         type: 'Identifier',
17035                         name: 'undefined'
17036                     }
17037                 }]
17038             }
17039         },
17040
17041         'parse(null)': {
17042             call: 'parse',
17043             args: [null],
17044             result: {
17045                 type: 'Program',
17046                 body: [{
17047                     type: 'ExpressionStatement',
17048                     expression: {
17049                         type: 'Literal',
17050                         value: null
17051                     }
17052                 }]
17053             }
17054         },
17055
17056         'parse(42)': {
17057             call: 'parse',
17058             args: [42],
17059             result: {
17060                 type: 'Program',
17061                 body: [{
17062                     type: 'ExpressionStatement',
17063                     expression: {
17064                         type: 'Literal',
17065                         value: 42
17066                     }
17067                 }]
17068             }
17069         },
17070
17071         'parse(true)': {
17072             call: 'parse',
17073             args: [true],
17074             result: {
17075                 type: 'Program',
17076                 body: [{
17077                     type: 'ExpressionStatement',
17078                     expression: {
17079                         type: 'Literal',
17080                         value: true
17081                     }
17082                 }]
17083             }
17084         },
17085
17086         'parse(undefined)': {
17087             call: 'parse',
17088             args: [void 0],
17089             result: {
17090                 type: 'Program',
17091                 body: [{
17092                     type: 'ExpressionStatement',
17093                     expression: {
17094                         type: 'Identifier',
17095                         name: 'undefined'
17096                     }
17097                 }]
17098             }
17099         },
17100
17101         'parse(new String("test"))': {
17102             call: 'parse',
17103             args: [new String('test')],
17104             result: {
17105                 type: 'Program',
17106                 body: [{
17107                     type: 'ExpressionStatement',
17108                     expression: {
17109                         type: 'Identifier',
17110                         name: 'test'
17111                     }
17112                 }]
17113             }
17114         },
17115
17116         'parse(new Number(42))': {
17117             call: 'parse',
17118             args: [new Number(42)],
17119             result: {
17120                 type: 'Program',
17121                 body: [{
17122                     type: 'ExpressionStatement',
17123                     expression: {
17124                         type: 'Literal',
17125                         value: 42
17126                     }
17127                 }]
17128             }
17129         },
17130
17131         'parse(new Boolean(true))': {
17132             call: 'parse',
17133             args: [new Boolean(true)],
17134             result: {
17135                 type: 'Program',
17136                 body: [{
17137                     type: 'ExpressionStatement',
17138                     expression: {
17139                         type: 'Literal',
17140                         value: true
17141                     }
17142                 }]
17143             }
17144         },
17145
17146         'Syntax': {
17147             property: 'Syntax',
17148             result: {
17149                 AssignmentExpression: 'AssignmentExpression',
17150                 ArrayExpression: 'ArrayExpression',
17151                 BlockStatement: 'BlockStatement',
17152                 BinaryExpression: 'BinaryExpression',
17153                 BreakStatement: 'BreakStatement',
17154                 CallExpression: 'CallExpression',
17155                 CatchClause: 'CatchClause',
17156                 ConditionalExpression: 'ConditionalExpression',
17157                 ContinueStatement: 'ContinueStatement',
17158                 DoWhileStatement: 'DoWhileStatement',
17159                 DebuggerStatement: 'DebuggerStatement',
17160                 EmptyStatement: 'EmptyStatement',
17161                 ExpressionStatement: 'ExpressionStatement',
17162                 ForStatement: 'ForStatement',
17163                 ForInStatement: 'ForInStatement',
17164                 FunctionDeclaration: 'FunctionDeclaration',
17165                 FunctionExpression: 'FunctionExpression',
17166                 Identifier: 'Identifier',
17167                 IfStatement: 'IfStatement',
17168                 Literal: 'Literal',
17169                 LabeledStatement: 'LabeledStatement',
17170                 LogicalExpression: 'LogicalExpression',
17171                 MemberExpression: 'MemberExpression',
17172                 NewExpression: 'NewExpression',
17173                 ObjectExpression: 'ObjectExpression',
17174                 Program: 'Program',
17175                 Property: 'Property',
17176                 ReturnStatement: 'ReturnStatement',
17177                 SequenceExpression: 'SequenceExpression',
17178                 SwitchStatement: 'SwitchStatement',
17179                 SwitchCase: 'SwitchCase',
17180                 ThisExpression: 'ThisExpression',
17181                 ThrowStatement: 'ThrowStatement',
17182                 TryStatement: 'TryStatement',
17183                 UnaryExpression: 'UnaryExpression',
17184                 UpdateExpression: 'UpdateExpression',
17185                 VariableDeclaration: 'VariableDeclaration',
17186                 VariableDeclarator: 'VariableDeclarator',
17187                 WhileStatement: 'WhileStatement',
17188                 WithStatement: 'WithStatement'
17189             }
17190         }
17191
17192     },
17193
17194     'Tolerant parse': {
17195         'return': {
17196             type: 'Program',
17197             body: [{
17198                 type: 'ReturnStatement',
17199                 'argument': null,
17200                 range: [0, 6],
17201                 loc: {
17202                     start: { line: 1, column: 0 },
17203                     end: { line: 1, column: 6 }
17204                 }
17205             }],
17206             range: [0, 6],
17207             loc: {
17208                 start: { line: 1, column: 0 },
17209                 end: { line: 1, column: 6 }
17210             },
17211             errors: [{
17212                 index: 6,
17213                 lineNumber: 1,
17214                 column: 7,
17215                 message: 'Error: Line 1: Illegal return statement'
17216             }]
17217         },
17218
17219         '(function () { \'use strict\'; with (i); }())': {
17220             type: 'Program',
17221             body: [{
17222                 type: 'ExpressionStatement',
17223                 expression: {
17224                     type: 'CallExpression',
17225                     callee: {
17226                         type: 'FunctionExpression',
17227                         id: null,
17228                         params: [],
17229                         defaults: [],
17230                         body: {
17231                             type: 'BlockStatement',
17232                             body: [{
17233                                 type: 'ExpressionStatement',
17234                                 expression: {
17235                                     type: 'Literal',
17236                                     value: 'use strict',
17237                                     raw: '\'use strict\'',
17238                                     range: [15, 27],
17239                                     loc: {
17240                                         start: { line: 1, column: 15 },
17241                                         end: { line: 1, column: 27 }
17242                                     }
17243                                 },
17244                                 range: [15, 28],
17245                                 loc: {
17246                                     start: { line: 1, column: 15 },
17247                                     end: { line: 1, column: 28 }
17248                                 }
17249                             }, {
17250                                 type: 'WithStatement',
17251                                 object: {
17252                                     type: 'Identifier',
17253                                     name: 'i',
17254                                     range: [35, 36],
17255                                     loc: {
17256                                         start: { line: 1, column: 35 },
17257                                         end: { line: 1, column: 36 }
17258                                     }
17259                                 },
17260                                 body: {
17261                                     type: 'EmptyStatement',
17262                                     range: [37, 38],
17263                                     loc: {
17264                                         start: { line: 1, column: 37 },
17265                                         end: { line: 1, column: 38 }
17266                                     }
17267                                 },
17268                                 range: [29, 38],
17269                                 loc: {
17270                                     start: { line: 1, column: 29 },
17271                                     end: { line: 1, column: 38 }
17272                                 }
17273                             }],
17274                             range: [13, 40],
17275                             loc: {
17276                                 start: { line: 1, column: 13 },
17277                                 end: { line: 1, column: 40 }
17278                             }
17279                         },
17280                         rest: null,
17281                         generator: false,
17282                         expression: false,
17283                         range: [1, 40],
17284                         loc: {
17285                             start: { line: 1, column: 1 },
17286                             end: { line: 1, column: 40 }
17287                         }
17288                     },
17289                     'arguments': [],
17290                     range: [1, 42],
17291                     loc: {
17292                         start: { line: 1, column: 1 },
17293                         end: { line: 1, column: 42 }
17294                     }
17295                 },
17296                 range: [0, 43],
17297                 loc: {
17298                     start: { line: 1, column: 0 },
17299                     end: { line: 1, column: 43 }
17300                 }
17301             }],
17302             range: [0, 43],
17303             loc: {
17304                 start: { line: 1, column: 0 },
17305                 end: { line: 1, column: 43 }
17306             },
17307             errors: [{
17308                 index: 29,
17309                 lineNumber: 1,
17310                 column: 30,
17311                 message: 'Error: Line 1: Strict mode code may not include a with statement'
17312             }]
17313         },
17314
17315         '(function () { \'use strict\'; 021 }())': {
17316             type: 'Program',
17317             body: [{
17318                 type: 'ExpressionStatement',
17319                 expression: {
17320                     type: 'CallExpression',
17321                     callee: {
17322                         type: 'FunctionExpression',
17323                         id: null,
17324                         params: [],
17325                         defaults: [],
17326                         body: {
17327                             type: 'BlockStatement',
17328                             body: [{
17329                                 type: 'ExpressionStatement',
17330                                 expression: {
17331                                     type: 'Literal',
17332                                     value: 'use strict',
17333                                     raw: '\'use strict\'',
17334                                     range: [15, 27],
17335                                     loc: {
17336                                         start: { line: 1, column: 15 },
17337                                         end: { line: 1, column: 27 }
17338                                     }
17339                                 },
17340                                 range: [15, 28],
17341                                 loc: {
17342                                     start: { line: 1, column: 15 },
17343                                     end: { line: 1, column: 28 }
17344                                 }
17345                             }, {
17346                                 type: 'ExpressionStatement',
17347                                 expression: {
17348                                     type: 'Literal',
17349                                     value: 17,
17350                                     raw: "021",
17351                                     range: [29, 32],
17352                                     loc: {
17353                                         start: { line: 1, column: 29 },
17354                                         end: { line: 1, column: 32 }
17355                                     }
17356                                 },
17357                                 range: [29, 33],
17358                                 loc: {
17359                                     start: { line: 1, column: 29 },
17360                                     end: { line: 1, column: 33 }
17361                                 }
17362                             }],
17363                             range: [13, 34],
17364                             loc: {
17365                                 start: { line: 1, column: 13 },
17366                                 end: { line: 1, column: 34 }
17367                             }
17368                         },
17369                         rest: null,
17370                         generator: false,
17371                         expression: false,
17372                         range: [1, 34],
17373                         loc: {
17374                             start: { line: 1, column: 1 },
17375                             end: { line: 1, column: 34 }
17376                         }
17377                     },
17378                     'arguments': [],
17379                     range: [1, 36],
17380                     loc: {
17381                         start: { line: 1, column: 1 },
17382                         end: { line: 1, column: 36 }
17383                     }
17384                 },
17385                 range: [0, 37],
17386                 loc: {
17387                     start: { line: 1, column: 0 },
17388                     end: { line: 1, column: 37 }
17389                 }
17390             }],
17391             range: [0, 37],
17392             loc: {
17393                 start: { line: 1, column: 0 },
17394                 end: { line: 1, column: 37 }
17395             },
17396             errors: [{
17397                 index: 29,
17398                 lineNumber: 1,
17399                 column: 30,
17400                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
17401             }]
17402         },
17403
17404         '"use strict"; delete x': {
17405             type: 'Program',
17406             body: [{
17407                 type: 'ExpressionStatement',
17408                 expression: {
17409                     type: 'Literal',
17410                     value: 'use strict',
17411                     raw: '"use strict"',
17412                     range: [0, 12],
17413                     loc: {
17414                         start: { line: 1, column: 0 },
17415                         end: { line: 1, column: 12 }
17416                     }
17417                 },
17418                 range: [0, 13],
17419                 loc: {
17420                     start: { line: 1, column: 0 },
17421                     end: { line: 1, column: 13 }
17422                 }
17423             }, {
17424                 type: 'ExpressionStatement',
17425                 expression: {
17426                     type: 'UnaryExpression',
17427                     operator: 'delete',
17428                     argument: {
17429                         type: 'Identifier',
17430                         name: 'x',
17431                         range: [21, 22],
17432                         loc: {
17433                             start: { line: 1, column: 21 },
17434                             end: { line: 1, column: 22 }
17435                         }
17436                     },
17437                     prefix: true,
17438                     range: [14, 22],
17439                     loc: {
17440                         start: { line: 1, column: 14 },
17441                         end: { line: 1, column: 22 }
17442                     }
17443                 },
17444                 range: [14, 22],
17445                 loc: {
17446                     start: { line: 1, column: 14 },
17447                     end: { line: 1, column: 22 }
17448                 }
17449             }],
17450             range: [0, 22],
17451             loc: {
17452                 start: { line: 1, column: 0 },
17453                 end: { line: 1, column: 22 }
17454             },
17455             errors: [{
17456                 index: 22,
17457                 lineNumber: 1,
17458                 column: 23,
17459                 message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
17460             }]
17461         },
17462
17463         '"use strict"; try {} catch (eval) {}': {
17464             type: 'Program',
17465             body: [{
17466                 type: 'ExpressionStatement',
17467                 expression: {
17468                     type: 'Literal',
17469                     value: 'use strict',
17470                     raw: '"use strict"',
17471                     range: [0, 12],
17472                     loc: {
17473                         start: { line: 1, column: 0 },
17474                         end: { line: 1, column: 12 }
17475                     }
17476                 },
17477                 range: [0, 13],
17478                 loc: {
17479                     start: { line: 1, column: 0 },
17480                     end: { line: 1, column: 13 }
17481                 }
17482             }, {
17483                 type: 'TryStatement',
17484                 block: {
17485                     type: 'BlockStatement',
17486                     body: [],
17487                     range: [18, 20],
17488                     loc: {
17489                         start: { line: 1, column: 18 },
17490                         end: { line: 1, column: 20 }
17491                     }
17492                 },
17493                 guardedHandlers: [],
17494                 handlers: [{
17495                     type: 'CatchClause',
17496                     param: {
17497                         type: 'Identifier',
17498                         name: 'eval',
17499                         range: [28, 32],
17500                         loc: {
17501                             start: { line: 1, column: 28 },
17502                             end: { line: 1, column: 32 }
17503                         }
17504                     },
17505                     body: {
17506                         type: 'BlockStatement',
17507                         body: [],
17508                         range: [34, 36],
17509                         loc: {
17510                             start: { line: 1, column: 34 },
17511                             end: { line: 1, column: 36 }
17512                         }
17513                     },
17514                     range: [21, 36],
17515                     loc: {
17516                         start: { line: 1, column: 21 },
17517                         end: { line: 1, column: 36 }
17518                     }
17519                 }],
17520                 finalizer: null,
17521                 range: [14, 36],
17522                 loc: {
17523                     start: { line: 1, column: 14 },
17524                     end: { line: 1, column: 36 }
17525                 }
17526             }],
17527             range: [0, 36],
17528             loc: {
17529                 start: { line: 1, column: 0 },
17530                 end: { line: 1, column: 36 }
17531             },
17532             errors: [{
17533                 index: 32,
17534                 lineNumber: 1,
17535                 column: 33,
17536                 message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
17537             }]
17538         },
17539
17540         '"use strict"; try {} catch (arguments) {}': {
17541             type: 'Program',
17542             body: [{
17543                 type: 'ExpressionStatement',
17544                 expression: {
17545                     type: 'Literal',
17546                     value: 'use strict',
17547                     raw: '"use strict"',
17548                     range: [0, 12],
17549                     loc: {
17550                         start: { line: 1, column: 0 },
17551                         end: { line: 1, column: 12 }
17552                     }
17553                 },
17554                 range: [0, 13],
17555                 loc: {
17556                     start: { line: 1, column: 0 },
17557                     end: { line: 1, column: 13 }
17558                 }
17559             }, {
17560                 type: 'TryStatement',
17561                 block: {
17562                     type: 'BlockStatement',
17563                     body: [],
17564                     range: [18, 20],
17565                     loc: {
17566                         start: { line: 1, column: 18 },
17567                         end: { line: 1, column: 20 }
17568                     }
17569                 },
17570                 guardedHandlers: [],
17571                 handlers: [{
17572                     type: 'CatchClause',
17573                     param: {
17574                         type: 'Identifier',
17575                         name: 'arguments',
17576                         range: [28, 37],
17577                         loc: {
17578                             start: { line: 1, column: 28 },
17579                             end: { line: 1, column: 37 }
17580                         }
17581                     },
17582                     body: {
17583                         type: 'BlockStatement',
17584                         body: [],
17585                         range: [39, 41],
17586                         loc: {
17587                             start: { line: 1, column: 39 },
17588                             end: { line: 1, column: 41 }
17589                         }
17590                     },
17591                     range: [21, 41],
17592                     loc: {
17593                         start: { line: 1, column: 21 },
17594                         end: { line: 1, column: 41 }
17595                     }
17596                 }],
17597                 finalizer: null,
17598                 range: [14, 41],
17599                 loc: {
17600                     start: { line: 1, column: 14 },
17601                     end: { line: 1, column: 41 }
17602                 }
17603             }],
17604             range: [0, 41],
17605             loc: {
17606                 start: { line: 1, column: 0 },
17607                 end: { line: 1, column: 41 }
17608             },
17609             errors: [{
17610                 index: 37,
17611                 lineNumber: 1,
17612                 column: 38,
17613                 message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
17614             }]
17615         },
17616
17617         '"use strict"; var eval;': {
17618             type: 'Program',
17619             body: [{
17620                 type: 'ExpressionStatement',
17621                 expression: {
17622                     type: 'Literal',
17623                     value: 'use strict',
17624                     raw: '"use strict"',
17625                     range: [0, 12],
17626                     loc: {
17627                         start: { line: 1, column: 0 },
17628                         end: { line: 1, column: 12 }
17629                     }
17630                 },
17631                 range: [0, 13],
17632                 loc: {
17633                     start: { line: 1, column: 0 },
17634                     end: { line: 1, column: 13 }
17635                 }
17636             }, {
17637                 type: 'VariableDeclaration',
17638                 declarations: [{
17639                     type: 'VariableDeclarator',
17640                     id: {
17641                         type: 'Identifier',
17642                         name: 'eval',
17643                         range: [18, 22],
17644                         loc: {
17645                             start: { line: 1, column: 18 },
17646                             end: { line: 1, column: 22 }
17647                         }
17648                     },
17649                     init: null,
17650                     range: [18, 22],
17651                     loc: {
17652                         start: { line: 1, column: 18 },
17653                         end: { line: 1, column: 22 }
17654                     }
17655                 }],
17656                 kind: 'var',
17657                 range: [14, 23],
17658                 loc: {
17659                     start: { line: 1, column: 14 },
17660                     end: { line: 1, column: 23 }
17661                 }
17662             }],
17663             range: [0, 23],
17664             loc: {
17665                 start: { line: 1, column: 0 },
17666                 end: { line: 1, column: 23 }
17667             },
17668             errors: [{
17669                 index: 22,
17670                 lineNumber: 1,
17671                 column: 23,
17672                 message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
17673             }]
17674         },
17675
17676         '"use strict"; var arguments;': {
17677             type: 'Program',
17678             body: [{
17679                 type: 'ExpressionStatement',
17680                 expression: {
17681                     type: 'Literal',
17682                     value: 'use strict',
17683                     raw: '"use strict"',
17684                     range: [0, 12],
17685                     loc: {
17686                         start: { line: 1, column: 0 },
17687                         end: { line: 1, column: 12 }
17688                     }
17689                 },
17690                 range: [0, 13],
17691                 loc: {
17692                     start: { line: 1, column: 0 },
17693                     end: { line: 1, column: 13 }
17694                 }
17695             }, {
17696                 type: 'VariableDeclaration',
17697                 declarations: [{
17698                     type: 'VariableDeclarator',
17699                     id: {
17700                         type: 'Identifier',
17701                         name: 'arguments',
17702                         range: [18, 27],
17703                         loc: {
17704                             start: { line: 1, column: 18 },
17705                             end: { line: 1, column: 27 }
17706                         }
17707                     },
17708                     init: null,
17709                     range: [18, 27],
17710                     loc: {
17711                         start: { line: 1, column: 18 },
17712                         end: { line: 1, column: 27 }
17713                     }
17714                 }],
17715                 kind: 'var',
17716                 range: [14, 28],
17717                 loc: {
17718                     start: { line: 1, column: 14 },
17719                     end: { line: 1, column: 28 }
17720                 }
17721             }],
17722             range: [0, 28],
17723             loc: {
17724                 start: { line: 1, column: 0 },
17725                 end: { line: 1, column: 28 }
17726             },
17727             errors: [{
17728                 index: 27,
17729                 lineNumber: 1,
17730                 column: 28,
17731                 message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
17732             }]
17733         },
17734
17735         '"use strict"; eval = 0;': {
17736             type: 'Program',
17737             body: [{
17738                 type: 'ExpressionStatement',
17739                 expression: {
17740                     type: 'Literal',
17741                     value: 'use strict',
17742                     raw: '"use strict"',
17743                     range: [0, 12],
17744                     loc: {
17745                         start: { line: 1, column: 0 },
17746                         end: { line: 1, column: 12 }
17747                     }
17748                 },
17749                 range: [0, 13],
17750                 loc: {
17751                     start: { line: 1, column: 0 },
17752                     end: { line: 1, column: 13 }
17753                 }
17754             }, {
17755                 type: 'ExpressionStatement',
17756                 expression: {
17757                     type: 'AssignmentExpression',
17758                     operator: '=',
17759                     left: {
17760                         type: 'Identifier',
17761                         name: 'eval',
17762                         range: [14, 18],
17763                         loc: {
17764                             start: { line: 1, column: 14 },
17765                             end: { line: 1, column: 18 }
17766                         }
17767                     },
17768                     right: {
17769                         type: 'Literal',
17770                         value: 0,
17771                         raw: '0',
17772                         range: [21, 22],
17773                         loc: {
17774                             start: { line: 1, column: 21 },
17775                             end: { line: 1, column: 22 }
17776                         }
17777                     },
17778                     range: [14, 22],
17779                     loc: {
17780                         start: { line: 1, column: 14 },
17781                         end: { line: 1, column: 22 }
17782                     }
17783                 },
17784                 range: [14, 23],
17785                 loc: {
17786                     start: { line: 1, column: 14 },
17787                     end: { line: 1, column: 23 }
17788                 }
17789             }],
17790             range: [0, 23],
17791             loc: {
17792                 start: { line: 1, column: 0 },
17793                 end: { line: 1, column: 23 }
17794             },
17795             errors: [{
17796                 index: 14,
17797                 lineNumber: 1,
17798                 column: 15,
17799                 message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
17800             }]
17801         },
17802
17803         '"use strict"; eval++;': {
17804             type: 'Program',
17805             body: [{
17806                 type: 'ExpressionStatement',
17807                 expression: {
17808                     type: 'Literal',
17809                     value: 'use strict',
17810                     raw: '"use strict"',
17811                     range: [0, 12],
17812                     loc: {
17813                         start: { line: 1, column: 0 },
17814                         end: { line: 1, column: 12 }
17815                     }
17816                 },
17817                 range: [0, 13],
17818                 loc: {
17819                     start: { line: 1, column: 0 },
17820                     end: { line: 1, column: 13 }
17821                 }
17822             }, {
17823                 type: 'ExpressionStatement',
17824                 expression: {
17825                     type: 'UpdateExpression',
17826                     operator: '++',
17827                     argument: {
17828                         type: 'Identifier',
17829                         name: 'eval',
17830                         range: [14, 18],
17831                         loc: {
17832                             start: { line: 1, column: 14 },
17833                             end: { line: 1, column: 18 }
17834                         }
17835                     },
17836                     prefix: false,
17837                     range: [14, 20],
17838                     loc: {
17839                         start: { line: 1, column: 14 },
17840                         end: { line: 1, column: 20 }
17841                     }
17842                 },
17843                 range: [14, 21],
17844                 loc: {
17845                     start: { line: 1, column: 14 },
17846                     end: { line: 1, column: 21 }
17847                 }
17848             }],
17849             range: [0, 21],
17850             loc: {
17851                 start: { line: 1, column: 0 },
17852                 end: { line: 1, column: 21 }
17853             },
17854             errors: [{
17855                 index: 18,
17856                 lineNumber: 1,
17857                 column: 19,
17858                 message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
17859             }]
17860         },
17861
17862         '"use strict"; --eval;': {
17863             type: 'Program',
17864             body: [{
17865                 type: 'ExpressionStatement',
17866                 expression: {
17867                     type: 'Literal',
17868                     value: 'use strict',
17869                     raw: '"use strict"',
17870                     range: [0, 12],
17871                     loc: {
17872                         start: { line: 1, column: 0 },
17873                         end: { line: 1, column: 12 }
17874                     }
17875                 },
17876                 range: [0, 13],
17877                 loc: {
17878                     start: { line: 1, column: 0 },
17879                     end: { line: 1, column: 13 }
17880                 }
17881             }, {
17882                 type: 'ExpressionStatement',
17883                 expression: {
17884                     type: 'UpdateExpression',
17885                     operator: '--',
17886                     argument: {
17887                         type: 'Identifier',
17888                         name: 'eval',
17889                         range: [16, 20],
17890                         loc: {
17891                             start: { line: 1, column: 16 },
17892                             end: { line: 1, column: 20 }
17893                         }
17894                     },
17895                     prefix: true,
17896                     range: [14, 20],
17897                     loc: {
17898                         start: { line: 1, column: 14 },
17899                         end: { line: 1, column: 20 }
17900                     }
17901                 },
17902                 range: [14, 21],
17903                 loc: {
17904                     start: { line: 1, column: 14 },
17905                     end: { line: 1, column: 21 }
17906                 }
17907             }],
17908             range: [0, 21],
17909             loc: {
17910                 start: { line: 1, column: 0 },
17911                 end: { line: 1, column: 21 }
17912             },
17913             errors: [{
17914                 index: 20,
17915                 lineNumber: 1,
17916                 column: 21,
17917                 message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
17918             }]
17919         },
17920
17921         '"use strict"; arguments = 0;': {
17922             type: 'Program',
17923             body: [{
17924                 type: 'ExpressionStatement',
17925                 expression: {
17926                     type: 'Literal',
17927                     value: 'use strict',
17928                     raw: '"use strict"',
17929                     range: [0, 12],
17930                     loc: {
17931                         start: { line: 1, column: 0 },
17932                         end: { line: 1, column: 12 }
17933                     }
17934                 },
17935                 range: [0, 13],
17936                 loc: {
17937                     start: { line: 1, column: 0 },
17938                     end: { line: 1, column: 13 }
17939                 }
17940             }, {
17941                 type: 'ExpressionStatement',
17942                 expression: {
17943                     type: 'AssignmentExpression',
17944                     operator: '=',
17945                     left: {
17946                         type: 'Identifier',
17947                         name: 'arguments',
17948                         range: [14, 23],
17949                         loc: {
17950                             start: { line: 1, column: 14 },
17951                             end: { line: 1, column: 23 }
17952                         }
17953                     },
17954                     right: {
17955                         type: 'Literal',
17956                         value: 0,
17957                         raw: '0',
17958                         range: [26, 27],
17959                         loc: {
17960                             start: { line: 1, column: 26 },
17961                             end: { line: 1, column: 27 }
17962                         }
17963                     },
17964                     range: [14, 27],
17965                     loc: {
17966                         start: { line: 1, column: 14 },
17967                         end: { line: 1, column: 27 }
17968                     }
17969                 },
17970                 range: [14, 28],
17971                 loc: {
17972                     start: { line: 1, column: 14 },
17973                     end: { line: 1, column: 28 }
17974                 }
17975             }],
17976             range: [0, 28],
17977             loc: {
17978                 start: { line: 1, column: 0 },
17979                 end: { line: 1, column: 28 }
17980             },
17981             errors: [{
17982                 index: 14,
17983                 lineNumber: 1,
17984                 column: 15,
17985                 message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
17986             }]
17987         },
17988
17989         '"use strict"; arguments--;': {
17990             type: 'Program',
17991             body: [{
17992                 type: 'ExpressionStatement',
17993                 expression: {
17994                     type: 'Literal',
17995                     value: 'use strict',
17996                     raw: '"use strict"',
17997                     range: [0, 12],
17998                     loc: {
17999                         start: { line: 1, column: 0 },
18000                         end: { line: 1, column: 12 }
18001                     }
18002                 },
18003                 range: [0, 13],
18004                 loc: {
18005                     start: { line: 1, column: 0 },
18006                     end: { line: 1, column: 13 }
18007                 }
18008             }, {
18009                 type: 'ExpressionStatement',
18010                 expression: {
18011                     type: 'UpdateExpression',
18012                     operator: '--',
18013                     argument: {
18014                         type: 'Identifier',
18015                         name: 'arguments',
18016                         range: [14, 23],
18017                         loc: {
18018                             start: { line: 1, column: 14 },
18019                             end: { line: 1, column: 23 }
18020                         }
18021                     },
18022                     prefix: false,
18023                     range: [14, 25],
18024                     loc: {
18025                         start: { line: 1, column: 14 },
18026                         end: { line: 1, column: 25 }
18027                     }
18028                 },
18029                 range: [14, 26],
18030                 loc: {
18031                     start: { line: 1, column: 14 },
18032                     end: { line: 1, column: 26 }
18033                 }
18034             }],
18035             range: [0, 26],
18036             loc: {
18037                 start: { line: 1, column: 0 },
18038                 end: { line: 1, column: 26 }
18039             },
18040             errors: [{
18041                 index: 23,
18042                 lineNumber: 1,
18043                 column: 24,
18044                 message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
18045             }]
18046         },
18047
18048         '"use strict"; ++arguments;': {
18049             type: 'Program',
18050             body: [{
18051                 type: 'ExpressionStatement',
18052                 expression: {
18053                     type: 'Literal',
18054                     value: 'use strict',
18055                     raw: '"use strict"',
18056                     range: [0, 12],
18057                     loc: {
18058                         start: { line: 1, column: 0 },
18059                         end: { line: 1, column: 12 }
18060                     }
18061                 },
18062                 range: [0, 13],
18063                 loc: {
18064                     start: { line: 1, column: 0 },
18065                     end: { line: 1, column: 13 }
18066                 }
18067             }, {
18068                 type: 'ExpressionStatement',
18069                 expression: {
18070                     type: 'UpdateExpression',
18071                     operator: '++',
18072                     argument: {
18073                         type: 'Identifier',
18074                         name: 'arguments',
18075                         range: [16, 25],
18076                         loc: {
18077                             start: { line: 1, column: 16 },
18078                             end: { line: 1, column: 25 }
18079                         }
18080                     },
18081                     prefix: true,
18082                     range: [14, 25],
18083                     loc: {
18084                         start: { line: 1, column: 14 },
18085                         end: { line: 1, column: 25 }
18086                     }
18087                 },
18088                 range: [14, 26],
18089                 loc: {
18090                     start: { line: 1, column: 14 },
18091                     end: { line: 1, column: 26 }
18092                 }
18093             }],
18094             range: [0, 26],
18095             loc: {
18096                 start: { line: 1, column: 0 },
18097                 end: { line: 1, column: 26 }
18098             },
18099             errors: [{
18100                 index: 25,
18101                 lineNumber: 1,
18102                 column: 26,
18103                 message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
18104             }]
18105         },
18106
18107
18108         '"use strict";x={y:1,y:1}': {
18109             type: 'Program',
18110             body: [{
18111                 type: 'ExpressionStatement',
18112                 expression: {
18113                     type: 'Literal',
18114                     value: 'use strict',
18115                     raw: '"use strict"',
18116                     range: [0, 12],
18117                     loc: {
18118                         start: { line: 1, column: 0 },
18119                         end: { line: 1, column: 12 }
18120                     }
18121                 },
18122                 range: [0, 13],
18123                 loc: {
18124                     start: { line: 1, column: 0 },
18125                     end: { line: 1, column: 13 }
18126                 }
18127             }, {
18128                 type: 'ExpressionStatement',
18129                 expression: {
18130                     type: 'AssignmentExpression',
18131                     operator: '=',
18132                     left: {
18133                         type: 'Identifier',
18134                         name: 'x',
18135                         range: [13, 14],
18136                         loc: {
18137                             start: { line: 1, column: 13 },
18138                             end: { line: 1, column: 14 }
18139                         }
18140                     },
18141                     right: {
18142                         type: 'ObjectExpression',
18143                         properties: [{
18144                             type: 'Property',
18145                             key: {
18146                                 type: 'Identifier',
18147                                 name: 'y',
18148                                 range: [16, 17],
18149                                 loc: {
18150                                     start: { line: 1, column: 16 },
18151                                     end: { line: 1, column: 17 }
18152                                 }
18153                             },
18154                             value: {
18155                                 type: 'Literal',
18156                                 value: 1,
18157                                 raw: '1',
18158                                 range: [18, 19],
18159                                 loc: {
18160                                     start: { line: 1, column: 18 },
18161                                     end: { line: 1, column: 19 }
18162                                 }
18163                             },
18164                             kind: 'init',
18165                             range: [16, 19],
18166                             loc: {
18167                                 start: { line: 1, column: 16 },
18168                                 end: { line: 1, column: 19 }
18169                             }
18170                         }, {
18171                             type: 'Property',
18172                             key: {
18173                                 type: 'Identifier',
18174                                 name: 'y',
18175                                 range: [20, 21],
18176                                 loc: {
18177                                     start: { line: 1, column: 20 },
18178                                     end: { line: 1, column: 21 }
18179                                 }
18180                             },
18181                             value: {
18182                                 type: 'Literal',
18183                                 value: 1,
18184                                 raw: '1',
18185                                 range: [22, 23],
18186                                 loc: {
18187                                     start: { line: 1, column: 22 },
18188                                     end: { line: 1, column: 23 }
18189                                 }
18190                             },
18191                             kind: 'init',
18192                             range: [20, 23],
18193                             loc: {
18194                                 start: { line: 1, column: 20 },
18195                                 end: { line: 1, column: 23 }
18196                             }
18197                         }],
18198                         range: [15, 24],
18199                         loc: {
18200                             start: { line: 1, column: 15 },
18201                             end: { line: 1, column: 24 }
18202                         }
18203                     },
18204                     range: [13, 24],
18205                     loc: {
18206                         start: { line: 1, column: 13 },
18207                         end: { line: 1, column: 24 }
18208                     }
18209                 },
18210                 range: [13, 24],
18211                 loc: {
18212                     start: { line: 1, column: 13 },
18213                     end: { line: 1, column: 24 }
18214                 }
18215             }],
18216             range: [0, 24],
18217             loc: {
18218                 start: { line: 1, column: 0 },
18219                 end: { line: 1, column: 24 }
18220             },
18221             errors: [{
18222                 index: 23,
18223                 lineNumber: 1,
18224                 column: 24,
18225                 message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
18226             }]
18227         },
18228
18229         '"use strict"; function eval() {};': {
18230             type: 'Program',
18231             body: [{
18232                 type: 'ExpressionStatement',
18233                 expression: {
18234                     type: 'Literal',
18235                     value: 'use strict',
18236                     raw: '"use strict"',
18237                     range: [0, 12],
18238                     loc: {
18239                         start: { line: 1, column: 0 },
18240                         end: { line: 1, column: 12 }
18241                     }
18242                 },
18243                 range: [0, 13],
18244                 loc: {
18245                     start: { line: 1, column: 0 },
18246                     end: { line: 1, column: 13 }
18247                 }
18248             }, {
18249                 type: 'FunctionDeclaration',
18250                 id: {
18251                     type: 'Identifier',
18252                     name: 'eval',
18253                     range: [23, 27],
18254                     loc: {
18255                         start: { line: 1, column: 23 },
18256                         end: { line: 1, column: 27 }
18257                     }
18258                 },
18259                 params: [],
18260                 defaults: [],
18261                 body: {
18262                     type: 'BlockStatement',
18263                     body: [],
18264                     range: [30, 32],
18265                     loc: {
18266                         start: { line: 1, column: 30 },
18267                         end: { line: 1, column: 32 }
18268                     }
18269                 },
18270                 rest: null,
18271                 generator: false,
18272                 expression: false,
18273                 range: [14, 32],
18274                 loc: {
18275                     start: { line: 1, column: 14 },
18276                     end: { line: 1, column: 32 }
18277                 }
18278             }, {
18279                 type: 'EmptyStatement',
18280                 range: [32, 33],
18281                 loc: {
18282                     start: { line: 1, column: 32 },
18283                     end: { line: 1, column: 33 }
18284                 }
18285             }],
18286             range: [0, 33],
18287             loc: {
18288                 start: { line: 1, column: 0 },
18289                 end: { line: 1, column: 33 }
18290             },
18291             errors: [{
18292                 index: 23,
18293                 lineNumber: 1,
18294                 column: 24,
18295                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
18296             }]
18297         },
18298
18299         '"use strict"; function arguments() {};': {
18300             type: 'Program',
18301             body: [{
18302                 type: 'ExpressionStatement',
18303                 expression: {
18304                     type: 'Literal',
18305                     value: 'use strict',
18306                     raw: '"use strict"',
18307                     range: [0, 12],
18308                     loc: {
18309                         start: { line: 1, column: 0 },
18310                         end: { line: 1, column: 12 }
18311                     }
18312                 },
18313                 range: [0, 13],
18314                 loc: {
18315                     start: { line: 1, column: 0 },
18316                     end: { line: 1, column: 13 }
18317                 }
18318             }, {
18319                 type: 'FunctionDeclaration',
18320                 id: {
18321                     type: 'Identifier',
18322                     name: 'arguments',
18323                     range: [23, 32],
18324                     loc: {
18325                         start: { line: 1, column: 23 },
18326                         end: { line: 1, column: 32 }
18327                     }
18328                 },
18329                 params: [],
18330                 defaults: [],
18331                 body: {
18332                     type: 'BlockStatement',
18333                     body: [],
18334                     range: [35, 37],
18335                     loc: {
18336                         start: { line: 1, column: 35 },
18337                         end: { line: 1, column: 37 }
18338                     }
18339                 },
18340                 rest: null,
18341                 generator: false,
18342                 expression: false,
18343                 range: [14, 37],
18344                 loc: {
18345                     start: { line: 1, column: 14 },
18346                     end: { line: 1, column: 37 }
18347                 }
18348             }, {
18349                 type: 'EmptyStatement',
18350                 range: [37, 38],
18351                 loc: {
18352                     start: { line: 1, column: 37 },
18353                     end: { line: 1, column: 38 }
18354                 }
18355             }],
18356             range: [0, 38],
18357             loc: {
18358                 start: { line: 1, column: 0 },
18359                 end: { line: 1, column: 38 }
18360             },
18361             errors: [{
18362                 index: 23,
18363                 lineNumber: 1,
18364                 column: 24,
18365                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
18366             }]
18367         },
18368
18369         '"use strict"; function interface() {};': {
18370             type: 'Program',
18371             body: [{
18372                 type: 'ExpressionStatement',
18373                 expression: {
18374                     type: 'Literal',
18375                     value: 'use strict',
18376                     raw: '"use strict"',
18377                     range: [0, 12],
18378                     loc: {
18379                         start: { line: 1, column: 0 },
18380                         end: { line: 1, column: 12 }
18381                     }
18382                 },
18383                 range: [0, 13],
18384                 loc: {
18385                     start: { line: 1, column: 0 },
18386                     end: { line: 1, column: 13 }
18387                 }
18388             }, {
18389                 type: 'FunctionDeclaration',
18390                 id: {
18391                     type: 'Identifier',
18392                     name: 'interface',
18393                     range: [23, 32],
18394                     loc: {
18395                         start: { line: 1, column: 23 },
18396                         end: { line: 1, column: 32 }
18397                     }
18398                 },
18399                 params: [],
18400                 defaults: [],
18401                 body: {
18402                     type: 'BlockStatement',
18403                     body: [],
18404                     range: [35, 37],
18405                     loc: {
18406                         start: { line: 1, column: 35 },
18407                         end: { line: 1, column: 37 }
18408                     }
18409                 },
18410                 rest: null,
18411                 generator: false,
18412                 expression: false,
18413                 range: [14, 37],
18414                 loc: {
18415                     start: { line: 1, column: 14 },
18416                     end: { line: 1, column: 37 }
18417                 }
18418             }, {
18419                 type: 'EmptyStatement',
18420                 range: [37, 38],
18421                 loc: {
18422                     start: { line: 1, column: 37 },
18423                     end: { line: 1, column: 38 }
18424                 }
18425             }],
18426             range: [0, 38],
18427             loc: {
18428                 start: { line: 1, column: 0 },
18429                 end: { line: 1, column: 38 }
18430             },
18431             errors: [{
18432                 index: 23,
18433                 lineNumber: 1,
18434                 column: 24,
18435                 message: 'Error: Line 1: Use of future reserved word in strict mode'
18436             }]
18437         },
18438
18439         '"use strict"; (function eval() {});': {
18440             type: 'Program',
18441             body: [{
18442                 type: 'ExpressionStatement',
18443                 expression: {
18444                     type: 'Literal',
18445                     value: 'use strict',
18446                     raw: '"use strict"',
18447                     range: [0, 12],
18448                     loc: {
18449                         start: { line: 1, column: 0 },
18450                         end: { line: 1, column: 12 }
18451                     }
18452                 },
18453                 range: [0, 13],
18454                 loc: {
18455                     start: { line: 1, column: 0 },
18456                     end: { line: 1, column: 13 }
18457                 }
18458             }, {
18459                 type: 'ExpressionStatement',
18460                 expression: {
18461                     type: 'FunctionExpression',
18462                     id: {
18463                         type: 'Identifier',
18464                         name: 'eval',
18465                         range: [24, 28],
18466                         loc: {
18467                             start: { line: 1, column: 24 },
18468                             end: { line: 1, column: 28 }
18469                         }
18470                     },
18471                     params: [],
18472                     defaults: [],
18473                     body: {
18474                         type: 'BlockStatement',
18475                         body: [],
18476                         range: [31, 33],
18477                         loc: {
18478                             start: { line: 1, column: 31 },
18479                             end: { line: 1, column: 33 }
18480                         }
18481                     },
18482                     rest: null,
18483                     generator: false,
18484                     expression: false,
18485                     range: [15, 33],
18486                     loc: {
18487                         start: { line: 1, column: 15 },
18488                         end: { line: 1, column: 33 }
18489                     }
18490                 },
18491                 range: [14, 35],
18492                 loc: {
18493                     start: { line: 1, column: 14 },
18494                     end: { line: 1, column: 35 }
18495                 }
18496             }],
18497             range: [0, 35],
18498             loc: {
18499                 start: { line: 1, column: 0 },
18500                 end: { line: 1, column: 35 }
18501             },
18502             errors: [{
18503                 index: 24,
18504                 lineNumber: 1,
18505                 column: 25,
18506                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
18507             }]
18508         },
18509
18510         '"use strict"; (function arguments() {});': {
18511             type: 'Program',
18512             body: [{
18513                 type: 'ExpressionStatement',
18514                 expression: {
18515                     type: 'Literal',
18516                     value: 'use strict',
18517                     raw: '"use strict"',
18518                     range: [0, 12],
18519                     loc: {
18520                         start: { line: 1, column: 0 },
18521                         end: { line: 1, column: 12 }
18522                     }
18523                 },
18524                 range: [0, 13],
18525                 loc: {
18526                     start: { line: 1, column: 0 },
18527                     end: { line: 1, column: 13 }
18528                 }
18529             }, {
18530                 type: 'ExpressionStatement',
18531                 expression: {
18532                     type: 'FunctionExpression',
18533                     id: {
18534                         type: 'Identifier',
18535                         name: 'arguments',
18536                         range: [24, 33],
18537                         loc: {
18538                             start: { line: 1, column: 24 },
18539                             end: { line: 1, column: 33 }
18540                         }
18541                     },
18542                     params: [],
18543                     defaults: [],
18544                     body: {
18545                         type: 'BlockStatement',
18546                         body: [],
18547                         range: [36, 38],
18548                         loc: {
18549                             start: { line: 1, column: 36 },
18550                             end: { line: 1, column: 38 }
18551                         }
18552                     },
18553                     rest: null,
18554                     generator: false,
18555                     expression: false,
18556                     range: [15, 38],
18557                     loc: {
18558                         start: { line: 1, column: 15 },
18559                         end: { line: 1, column: 38 }
18560                     }
18561                 },
18562                 range: [14, 40],
18563                 loc: {
18564                     start: { line: 1, column: 14 },
18565                     end: { line: 1, column: 40 }
18566                 }
18567             }],
18568             range: [0, 40],
18569             loc: {
18570                 start: { line: 1, column: 0 },
18571                 end: { line: 1, column: 40 }
18572             },
18573             errors: [{
18574                 index: 24,
18575                 lineNumber: 1,
18576                 column: 25,
18577                 message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
18578             }]
18579         },
18580
18581         '"use strict"; (function interface() {});': {
18582             type: 'Program',
18583             body: [{
18584                 type: 'ExpressionStatement',
18585                 expression: {
18586                     type: 'Literal',
18587                     value: 'use strict',
18588                     raw: '"use strict"',
18589                     range: [0, 12],
18590                     loc: {
18591                         start: { line: 1, column: 0 },
18592                         end: { line: 1, column: 12 }
18593                     }
18594                 },
18595                 range: [0, 13],
18596                 loc: {
18597                     start: { line: 1, column: 0 },
18598                     end: { line: 1, column: 13 }
18599                 }
18600             }, {
18601                 type: 'ExpressionStatement',
18602                 expression: {
18603                     type: 'FunctionExpression',
18604                     id: {
18605                         type: 'Identifier',
18606                         name: 'interface',
18607                         range: [24, 33],
18608                         loc: {
18609                             start: { line: 1, column: 24 },
18610                             end: { line: 1, column: 33 }
18611                         }
18612                     },
18613                     params: [],
18614                     defaults: [],
18615                     body: {
18616                         type: 'BlockStatement',
18617                         body: [],
18618                         range: [36, 38],
18619                         loc: {
18620                             start: { line: 1, column: 36 },
18621                             end: { line: 1, column: 38 }
18622                         }
18623                     },
18624                     rest: null,
18625                     generator: false,
18626                     expression: false,
18627                     range: [15, 38],
18628                     loc: {
18629                         start: { line: 1, column: 15 },
18630                         end: { line: 1, column: 38 }
18631                     }
18632                 },
18633                 range: [14, 40],
18634                 loc: {
18635                     start: { line: 1, column: 14 },
18636                     end: { line: 1, column: 40 }
18637                 }
18638             }],
18639             range: [0, 40],
18640             loc: {
18641                 start: { line: 1, column: 0 },
18642                 end: { line: 1, column: 40 }
18643             },
18644             errors: [{
18645                 index: 24,
18646                 lineNumber: 1,
18647                 column: 25,
18648                 message: 'Error: Line 1: Use of future reserved word in strict mode'
18649             }]
18650         },
18651
18652         '"use strict"; function f(eval) {};': {
18653             type: 'Program',
18654             body: [{
18655                 type: 'ExpressionStatement',
18656                 expression: {
18657                     type: 'Literal',
18658                     value: 'use strict',
18659                     raw: '"use strict"',
18660                     range: [0, 12],
18661                     loc: {
18662                         start: { line: 1, column: 0 },
18663                         end: { line: 1, column: 12 }
18664                     }
18665                 },
18666                 range: [0, 13],
18667                 loc: {
18668                     start: { line: 1, column: 0 },
18669                     end: { line: 1, column: 13 }
18670                 }
18671             }, {
18672                 type: 'FunctionDeclaration',
18673                 id: {
18674                     type: 'Identifier',
18675                     name: 'f',
18676                     range: [23, 24],
18677                     loc: {
18678                         start: { line: 1, column: 23 },
18679                         end: { line: 1, column: 24 }
18680                     }
18681                 },
18682                 params: [{
18683                     type: 'Identifier',
18684                     name: 'eval',
18685                     range: [25, 29],
18686                     loc: {
18687                         start: { line: 1, column: 25 },
18688                         end: { line: 1, column: 29 }
18689                     }
18690                 }],
18691                 defaults: [],
18692                 body: {
18693                     type: 'BlockStatement',
18694                     body: [],
18695                     range: [31, 33],
18696                     loc: {
18697                         start: { line: 1, column: 31 },
18698                         end: { line: 1, column: 33 }
18699                     }
18700                 },
18701                 rest: null,
18702                 generator: false,
18703                 expression: false,
18704                 range: [14, 33],
18705                 loc: {
18706                     start: { line: 1, column: 14 },
18707                     end: { line: 1, column: 33 }
18708                 }
18709             }, {
18710                 type: 'EmptyStatement',
18711                 range: [33, 34],
18712                 loc: {
18713                     start: { line: 1, column: 33 },
18714                     end: { line: 1, column: 34 }
18715                 }
18716             }],
18717             range: [0, 34],
18718             loc: {
18719                 start: { line: 1, column: 0 },
18720                 end: { line: 1, column: 34 }
18721             },
18722             errors: [{
18723                 index: 25,
18724                 lineNumber: 1,
18725                 column: 26,
18726                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
18727             }]
18728         },
18729
18730         '"use strict"; function f(arguments) {};': {
18731             type: 'Program',
18732             body: [{
18733                 type: 'ExpressionStatement',
18734                 expression: {
18735                     type: 'Literal',
18736                     value: 'use strict',
18737                     raw: '"use strict"',
18738                     range: [0, 12],
18739                     loc: {
18740                         start: { line: 1, column: 0 },
18741                         end: { line: 1, column: 12 }
18742                     }
18743                 },
18744                 range: [0, 13],
18745                 loc: {
18746                     start: { line: 1, column: 0 },
18747                     end: { line: 1, column: 13 }
18748                 }
18749             }, {
18750                 type: 'FunctionDeclaration',
18751                 id: {
18752                     type: 'Identifier',
18753                     name: 'f',
18754                     range: [23, 24],
18755                     loc: {
18756                         start: { line: 1, column: 23 },
18757                         end: { line: 1, column: 24 }
18758                     }
18759                 },
18760                 params: [{
18761                     type: 'Identifier',
18762                     name: 'arguments',
18763                     range: [25, 34],
18764                     loc: {
18765                         start: { line: 1, column: 25 },
18766                         end: { line: 1, column: 34 }
18767                     }
18768                 }],
18769                 defaults: [],
18770                 body: {
18771                     type: 'BlockStatement',
18772                     body: [],
18773                     range: [36, 38],
18774                     loc: {
18775                         start: { line: 1, column: 36 },
18776                         end: { line: 1, column: 38 }
18777                     }
18778                 },
18779                 rest: null,
18780                 generator: false,
18781                 expression: false,
18782                 range: [14, 38],
18783                 loc: {
18784                     start: { line: 1, column: 14 },
18785                     end: { line: 1, column: 38 }
18786                 }
18787             }, {
18788                 type: 'EmptyStatement',
18789                 range: [38, 39],
18790                 loc: {
18791                     start: { line: 1, column: 38 },
18792                     end: { line: 1, column: 39 }
18793                 }
18794             }],
18795             range: [0, 39],
18796             loc: {
18797                 start: { line: 1, column: 0 },
18798                 end: { line: 1, column: 39 }
18799             },
18800             errors: [{
18801                 index: 25,
18802                 lineNumber: 1,
18803                 column: 26,
18804                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
18805             }]
18806         },
18807
18808         '"use strict"; function f(foo,  foo) {};': {
18809             type: 'Program',
18810             body: [{
18811                 type: 'ExpressionStatement',
18812                 expression: {
18813                     type: 'Literal',
18814                     value: 'use strict',
18815                     raw: '"use strict"',
18816                     range: [0, 12],
18817                     loc: {
18818                         start: { line: 1, column: 0 },
18819                         end: { line: 1, column: 12 }
18820                     }
18821                 },
18822                 range: [0, 13],
18823                 loc: {
18824                     start: { line: 1, column: 0 },
18825                     end: { line: 1, column: 13 }
18826                 }
18827             }, {
18828                 type: 'FunctionDeclaration',
18829                 id: {
18830                     type: 'Identifier',
18831                     name: 'f',
18832                     range: [23, 24],
18833                     loc: {
18834                         start: { line: 1, column: 23 },
18835                         end: { line: 1, column: 24 }
18836                     }
18837                 },
18838                 params: [{
18839                     type: 'Identifier',
18840                     name: 'foo',
18841                     range: [25, 28],
18842                     loc: {
18843                         start: { line: 1, column: 25 },
18844                         end: { line: 1, column: 28 }
18845                     }
18846                 }, {
18847                     type: 'Identifier',
18848                     name: 'foo',
18849                     range: [31, 34],
18850                     loc: {
18851                         start: { line: 1, column: 31 },
18852                         end: { line: 1, column: 34 }
18853                     }
18854                 }],
18855                 defaults: [],
18856                 body: {
18857                     type: 'BlockStatement',
18858                     body: [],
18859                     range: [36, 38],
18860                     loc: {
18861                         start: { line: 1, column: 36 },
18862                         end: { line: 1, column: 38 }
18863                     }
18864                 },
18865                 rest: null,
18866                 generator: false,
18867                 expression: false,
18868                 range: [14, 38],
18869                 loc: {
18870                     start: { line: 1, column: 14 },
18871                     end: { line: 1, column: 38 }
18872                 }
18873             }, {
18874                 type: 'EmptyStatement',
18875                 range: [38, 39],
18876                 loc: {
18877                     start: { line: 1, column: 38 },
18878                     end: { line: 1, column: 39 }
18879                 }
18880             }],
18881             range: [0, 39],
18882             loc: {
18883                 start: { line: 1, column: 0 },
18884                 end: { line: 1, column: 39 }
18885             },
18886             errors: [{
18887                 index: 31,
18888                 lineNumber: 1,
18889                 column: 32,
18890                 message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
18891             }]
18892         },
18893
18894         '"use strict"; (function f(eval) {});': {
18895             type: 'Program',
18896             body: [{
18897                 type: 'ExpressionStatement',
18898                 expression: {
18899                     type: 'Literal',
18900                     value: 'use strict',
18901                     raw: '"use strict"',
18902                     range: [0, 12],
18903                     loc: {
18904                         start: { line: 1, column: 0 },
18905                         end: { line: 1, column: 12 }
18906                     }
18907                 },
18908                 range: [0, 13],
18909                 loc: {
18910                     start: { line: 1, column: 0 },
18911                     end: { line: 1, column: 13 }
18912                 }
18913             }, {
18914                 type: 'ExpressionStatement',
18915                 expression: {
18916                     type: 'FunctionExpression',
18917                     id: {
18918                         type: 'Identifier',
18919                         name: 'f',
18920                         range: [24, 25],
18921                         loc: {
18922                             start: { line: 1, column: 24 },
18923                             end: { line: 1, column: 25 }
18924                         }
18925                     },
18926                     params: [{
18927                         type: 'Identifier',
18928                         name: 'eval',
18929                         range: [26, 30],
18930                         loc: {
18931                             start: { line: 1, column: 26 },
18932                             end: { line: 1, column: 30 }
18933                         }
18934                     }],
18935                     defaults: [],
18936                     body: {
18937                         type: 'BlockStatement',
18938                         body: [],
18939                         range: [32, 34],
18940                         loc: {
18941                             start: { line: 1, column: 32 },
18942                             end: { line: 1, column: 34 }
18943                         }
18944                     },
18945                     rest: null,
18946                     generator: false,
18947                     expression: false,
18948                     range: [15, 34],
18949                     loc: {
18950                         start: { line: 1, column: 15 },
18951                         end: { line: 1, column: 34 }
18952                     }
18953                 },
18954                 range: [14, 36],
18955                 loc: {
18956                     start: { line: 1, column: 14 },
18957                     end: { line: 1, column: 36 }
18958                 }
18959             }],
18960             range: [0, 36],
18961             loc: {
18962                 start: { line: 1, column: 0 },
18963                 end: { line: 1, column: 36 }
18964             },
18965             errors: [{
18966                 index: 26,
18967                 lineNumber: 1,
18968                 column: 27,
18969                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
18970             }]
18971         },
18972
18973
18974         '"use strict"; (function f(arguments) {});': {
18975             type: 'Program',
18976             body: [{
18977                 type: 'ExpressionStatement',
18978                 expression: {
18979                     type: 'Literal',
18980                     value: 'use strict',
18981                     raw: '"use strict"',
18982                     range: [0, 12],
18983                     loc: {
18984                         start: { line: 1, column: 0 },
18985                         end: { line: 1, column: 12 }
18986                     }
18987                 },
18988                 range: [0, 13],
18989                 loc: {
18990                     start: { line: 1, column: 0 },
18991                     end: { line: 1, column: 13 }
18992                 }
18993             }, {
18994                 type: 'ExpressionStatement',
18995                 expression: {
18996                     type: 'FunctionExpression',
18997                     id: {
18998                         type: 'Identifier',
18999                         name: 'f',
19000                         range: [24, 25],
19001                         loc: {
19002                             start: { line: 1, column: 24 },
19003                             end: { line: 1, column: 25 }
19004                         }
19005                     },
19006                     params: [{
19007                         type: 'Identifier',
19008                         name: 'arguments',
19009                         range: [26, 35],
19010                         loc: {
19011                             start: { line: 1, column: 26 },
19012                             end: { line: 1, column: 35 }
19013                         }
19014                     }],
19015                     defaults: [],
19016                     body: {
19017                         type: 'BlockStatement',
19018                         body: [],
19019                         range: [37, 39],
19020                         loc: {
19021                             start: { line: 1, column: 37 },
19022                             end: { line: 1, column: 39 }
19023                         }
19024                     },
19025                     rest: null,
19026                     generator: false,
19027                     expression: false,
19028                     range: [15, 39],
19029                     loc: {
19030                         start: { line: 1, column: 15 },
19031                         end: { line: 1, column: 39 }
19032                     }
19033                 },
19034                 range: [14, 41],
19035                 loc: {
19036                     start: { line: 1, column: 14 },
19037                     end: { line: 1, column: 41 }
19038                 }
19039             }],
19040             range: [0, 41],
19041             loc: {
19042                 start: { line: 1, column: 0 },
19043                 end: { line: 1, column: 41 }
19044             },
19045             errors: [{
19046                 index: 26,
19047                 lineNumber: 1,
19048                 column: 27,
19049                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
19050             }]
19051         },
19052
19053         '"use strict"; (function f(foo,  foo) {});': {
19054             type: 'Program',
19055             body: [{
19056                 type: 'ExpressionStatement',
19057                 expression: {
19058                     type: 'Literal',
19059                     value: 'use strict',
19060                     raw: '"use strict"',
19061                     range: [0, 12],
19062                     loc: {
19063                         start: { line: 1, column: 0 },
19064                         end: { line: 1, column: 12 }
19065                     }
19066                 },
19067                 range: [0, 13],
19068                 loc: {
19069                     start: { line: 1, column: 0 },
19070                     end: { line: 1, column: 13 }
19071                 }
19072             }, {
19073                 type: 'ExpressionStatement',
19074                 expression: {
19075                     type: 'FunctionExpression',
19076                     id: {
19077                         type: 'Identifier',
19078                         name: 'f',
19079                         range: [24, 25],
19080                         loc: {
19081                             start: { line: 1, column: 24 },
19082                             end: { line: 1, column: 25 }
19083                         }
19084                     },
19085                     params: [{
19086                         type: 'Identifier',
19087                         name: 'foo',
19088                         range: [26, 29],
19089                         loc: {
19090                             start: { line: 1, column: 26 },
19091                             end: { line: 1, column: 29 }
19092                         }
19093                     }, {
19094                         type: 'Identifier',
19095                         name: 'foo',
19096                         range: [32, 35],
19097                         loc: {
19098                             start: { line: 1, column: 32 },
19099                             end: { line: 1, column: 35 }
19100                         }
19101                     }],
19102                     defaults: [],
19103                     body: {
19104                         type: 'BlockStatement',
19105                         body: [],
19106                         range: [37, 39],
19107                         loc: {
19108                             start: { line: 1, column: 37 },
19109                             end: { line: 1, column: 39 }
19110                         }
19111                     },
19112                     rest: null,
19113                     generator: false,
19114                     expression: false,
19115                     range: [15, 39],
19116                     loc: {
19117                         start: { line: 1, column: 15 },
19118                         end: { line: 1, column: 39 }
19119                     }
19120                 },
19121                 range: [14, 41],
19122                 loc: {
19123                     start: { line: 1, column: 14 },
19124                     end: { line: 1, column: 41 }
19125                 }
19126             }],
19127             range: [0, 41],
19128             loc: {
19129                 start: { line: 1, column: 0 },
19130                 end: { line: 1, column: 41 }
19131             },
19132             errors: [{
19133                 index: 32,
19134                 lineNumber: 1,
19135                 column: 33,
19136                 message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
19137             }]
19138         },
19139
19140         '"use strict"; x = { set f(eval) {} }' : {
19141             type: 'Program',
19142             body: [{
19143                 type: 'ExpressionStatement',
19144                 expression: {
19145                     type: 'Literal',
19146                     value: 'use strict',
19147                     raw: '"use strict"',
19148                     range: [0, 12],
19149                     loc: {
19150                         start: { line: 1, column: 0 },
19151                         end: { line: 1, column: 12 }
19152                     }
19153                 },
19154                 range: [0, 13],
19155                 loc: {
19156                     start: { line: 1, column: 0 },
19157                     end: { line: 1, column: 13 }
19158                 }
19159             }, {
19160                 type: 'ExpressionStatement',
19161                 expression: {
19162                     type: 'AssignmentExpression',
19163                     operator: '=',
19164                     left: {
19165                         type: 'Identifier',
19166                         name: 'x',
19167                         range: [14, 15],
19168                         loc: {
19169                             start: { line: 1, column: 14 },
19170                             end: { line: 1, column: 15 }
19171                         }
19172                     },
19173                     right: {
19174                         type: 'ObjectExpression',
19175                         properties: [{
19176                             type: 'Property',
19177                             key: {
19178                                 type: 'Identifier',
19179                                 name: 'f',
19180                                 range: [24, 25],
19181                                 loc: {
19182                                     start: { line: 1, column: 24 },
19183                                     end: { line: 1, column: 25 }
19184                                 }
19185                             },
19186                             value : {
19187                                 type: 'FunctionExpression',
19188                                 id: null,
19189                                 params: [{
19190                                     type: 'Identifier',
19191                                     name: 'eval',
19192                                     range: [26, 30],
19193                                     loc: {
19194                                         start: { line: 1, column: 26 },
19195                                         end: { line: 1, column: 30 }
19196                                     }
19197                                 }],
19198                                 defaults: [],
19199                                 body: {
19200                                     type: 'BlockStatement',
19201                                     body: [],
19202                                     range: [32, 34],
19203                                     loc: {
19204                                         start: { line: 1, column: 32 },
19205                                         end: { line: 1, column: 34 }
19206                                     }
19207                                 },
19208                                 rest: null,
19209                                 generator: false,
19210                                 expression: false,
19211                                 range: [32, 34],
19212                                 loc: {
19213                                     start: { line: 1, column: 32 },
19214                                     end: { line: 1, column: 34 }
19215                                 }
19216                             },
19217                             kind: 'set',
19218                             range: [20, 34],
19219                             loc: {
19220                                 start: { line: 1, column: 20 },
19221                                 end: { line: 1, column: 34 }
19222                             }
19223                         }],
19224                         range: [18, 36],
19225                         loc: {
19226                             start: { line: 1, column: 18 },
19227                             end: { line: 1, column: 36 }
19228                         }
19229                     },
19230                     range: [14, 36],
19231                     loc: {
19232                         start: { line: 1, column: 14 },
19233                         end: { line: 1, column: 36 }
19234                     }
19235                 },
19236                 range: [14, 36],
19237                 loc: {
19238                     start: { line: 1, column: 14 },
19239                     end: { line: 1, column: 36 }
19240                 }
19241             }],
19242             range: [0, 36],
19243             loc: {
19244                 start: { line: 1, column: 0 },
19245                 end: { line: 1, column: 36 }
19246             },
19247             errors: [{
19248                 index: 26,
19249                 lineNumber: 1,
19250                 column: 27,
19251                 message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
19252             }]
19253         },
19254
19255         'function hello() { "octal directive\\1"; "use strict"; }': {
19256             type: 'Program',
19257             body: [{
19258                 type: 'FunctionDeclaration',
19259                 id: {
19260                     type: 'Identifier',
19261                     name: 'hello',
19262                     range: [9, 14],
19263                     loc: {
19264                         start: { line: 1, column: 9 },
19265                         end: { line: 1, column: 14 }
19266                     }
19267                 },
19268                 params: [],
19269                 defaults: [],
19270                 body: {
19271                     type: 'BlockStatement',
19272                     body: [{
19273                         type: 'ExpressionStatement',
19274                         expression: {
19275                             type: 'Literal',
19276                             value: 'octal directive\u0001',
19277                             raw: '"octal directive\\1"',
19278                             range: [19, 38],
19279                             loc: {
19280                                 start: { line: 1, column: 19 },
19281                                 end: { line: 1, column: 38 }
19282                             }
19283                         },
19284                         range: [19, 39],
19285                         loc: {
19286                             start: { line: 1, column: 19 },
19287                             end: { line: 1, column: 39 }
19288                         }
19289                     }, {
19290                         type: 'ExpressionStatement',
19291                         expression: {
19292                             type: 'Literal',
19293                             value: 'use strict',
19294                             raw: '"use strict"',
19295                             range: [40, 52],
19296                             loc: {
19297                                 start: { line: 1, column: 40 },
19298                                 end: { line: 1, column: 52 }
19299                             }
19300                         },
19301                         range: [40, 53],
19302                         loc: {
19303                             start: { line: 1, column: 40 },
19304                             end: { line: 1, column: 53 }
19305                         }
19306                     }],
19307                     range: [17, 55],
19308                     loc: {
19309                         start: { line: 1, column: 17 },
19310                         end: { line: 1, column: 55 }
19311                     }
19312                 },
19313                 rest: null,
19314                 generator: false,
19315                 expression: false,
19316                 range: [0, 55],
19317                 loc: {
19318                     start: { line: 1, column: 0 },
19319                     end: { line: 1, column: 55 }
19320                 }
19321             }],
19322             range: [0, 55],
19323             loc: {
19324                 start: { line: 1, column: 0 },
19325                 end: { line: 1, column: 55 }
19326             },
19327             errors: [{
19328                 index: 19,
19329                 lineNumber: 1,
19330                 column: 20,
19331                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
19332             }]
19333         },
19334
19335         '"\\1"; \'use strict\';': {
19336             type: 'Program',
19337             body: [{
19338                 type: 'ExpressionStatement',
19339                 expression: {
19340                     type: 'Literal',
19341                     value: '\u0001',
19342                     raw: '"\\1"',
19343                     range: [0, 4],
19344                     loc: {
19345                         start: { line: 1, column: 0 },
19346                         end: { line: 1, column: 4 }
19347                     }
19348                 },
19349                 range: [0, 5],
19350                 loc: {
19351                     start: { line: 1, column: 0 },
19352                     end: { line: 1, column: 5 }
19353                 }
19354             }, {
19355                 type: 'ExpressionStatement',
19356                 expression: {
19357                     type: 'Literal',
19358                     value: 'use strict',
19359                     raw: '\'use strict\'',
19360                     range: [6, 18],
19361                     loc: {
19362                         start: { line: 1, column: 6 },
19363                         end: { line: 1, column: 18 }
19364                     }
19365                 },
19366                 range: [6, 19],
19367                 loc: {
19368                     start: { line: 1, column: 6 },
19369                     end: { line: 1, column: 19 }
19370                 }
19371             }],
19372             range: [0, 19],
19373             loc: {
19374                 start: { line: 1, column: 0 },
19375                 end: { line: 1, column: 19 }
19376             },
19377             errors: [{
19378                 index: 0,
19379                 lineNumber: 1,
19380                 column: 1,
19381                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
19382             }]
19383         },
19384
19385         '"use strict"; var x = { 014: 3}': {
19386             type: 'Program',
19387             body: [{
19388                 type: 'ExpressionStatement',
19389                 expression: {
19390                     type: 'Literal',
19391                     value: 'use strict',
19392                     raw: '"use strict"',
19393                     range: [0, 12],
19394                     loc: {
19395                         start: { line: 1, column: 0 },
19396                         end: { line: 1, column: 12 }
19397                     }
19398                 },
19399                 range: [0, 13],
19400                 loc: {
19401                     start: { line: 1, column: 0 },
19402                     end: { line: 1, column: 13 }
19403                 }
19404             }, {
19405                 type: 'VariableDeclaration',
19406                 declarations: [{
19407                     type: 'VariableDeclarator',
19408                     id: {
19409                         type: 'Identifier',
19410                         name: 'x',
19411                         range: [18, 19],
19412                         loc: {
19413                             start: { line: 1, column: 18 },
19414                             end: { line: 1, column: 19 }
19415                         }
19416                     },
19417                     init: {
19418                         type: 'ObjectExpression',
19419                         properties: [{
19420                             type: 'Property',
19421                             key: {
19422                                 type: 'Literal',
19423                                 value: 12,
19424                                 raw: '014',
19425                                 range: [24, 27],
19426                                 loc: {
19427                                     start: { line: 1, column: 24 },
19428                                     end: { line: 1, column: 27 }
19429                                 }
19430                             },
19431                             value: {
19432                                 type: 'Literal',
19433                                 value: 3,
19434                                 raw: '3',
19435                                 range: [29, 30],
19436                                 loc: {
19437                                     start: { line: 1, column: 29 },
19438                                     end: { line: 1, column: 30 }
19439                                 }
19440                             },
19441                             kind: 'init',
19442                             range: [24, 30],
19443                             loc: {
19444                                 start: { line: 1, column: 24 },
19445                                 end: { line: 1, column: 30 }
19446                             }
19447                         }],
19448                         range: [22, 31],
19449                         loc: {
19450                             start: { line: 1, column: 22 },
19451                             end: { line: 1, column: 31 }
19452                         }
19453                     },
19454                     range: [18, 31],
19455                     loc: {
19456                         start: { line: 1, column: 18 },
19457                         end: { line: 1, column: 31 }
19458                     }
19459                 }],
19460                 kind: 'var',
19461                 range: [14, 31],
19462                 loc: {
19463                     start: { line: 1, column: 14 },
19464                     end: { line: 1, column: 31 }
19465                 }
19466             }],
19467             range: [0, 31],
19468             loc: {
19469                 start: { line: 1, column: 0 },
19470                 end: { line: 1, column: 31 }
19471             },
19472             errors: [{
19473                 index: 24,
19474                 lineNumber: 1,
19475                 column: 25,
19476                 message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
19477             }]
19478         },
19479
19480         '"use strict"; var x = { get i() {}, get i() {} }': {
19481             type: 'Program',
19482             body: [{
19483                 type: 'ExpressionStatement',
19484                 expression: {
19485                     type: 'Literal',
19486                     value: 'use strict',
19487                     raw: '"use strict"',
19488                     range: [0, 12],
19489                     loc: {
19490                         start: { line: 1, column: 0 },
19491                         end: { line: 1, column: 12 }
19492                     }
19493                 },
19494                 range: [0, 13],
19495                 loc: {
19496                     start: { line: 1, column: 0 },
19497                     end: { line: 1, column: 13 }
19498                 }
19499             }, {
19500                 type: 'VariableDeclaration',
19501                 declarations: [{
19502                     type: 'VariableDeclarator',
19503                     id: {
19504                         type: 'Identifier',
19505                         name: 'x',
19506                         range: [18, 19],
19507                         loc: {
19508                             start: { line: 1, column: 18 },
19509                             end: { line: 1, column: 19 }
19510                         }
19511                     },
19512                     init: {
19513                         type: 'ObjectExpression',
19514                         properties: [{
19515                             type: 'Property',
19516                             key: {
19517                                 type: 'Identifier',
19518                                 name: 'i',
19519                                 range: [28, 29],
19520                                 loc: {
19521                                     start: { line: 1, column: 28 },
19522                                     end: { line: 1, column: 29 }
19523                                 }
19524                             },
19525                             value: {
19526                                 type: 'FunctionExpression',
19527                                 id: null,
19528                                 params: [],
19529                                 defaults: [],
19530                                 body: {
19531                                     type: 'BlockStatement',
19532                                     body: [],
19533                                     range: [32, 34],
19534                                     loc: {
19535                                         start: { line: 1, column: 32 },
19536                                         end: { line: 1, column: 34 }
19537                                     }
19538                                 },
19539                                 rest: null,
19540                                 generator: false,
19541                                 expression: false,
19542                                 range: [32, 34],
19543                                 loc: {
19544                                     start: { line: 1, column: 32 },
19545                                     end: { line: 1, column: 34 }
19546                                 }
19547                             },
19548                             kind: 'get',
19549                             range: [24, 34],
19550                             loc: {
19551                                 start: { line: 1, column: 24 },
19552                                 end: { line: 1, column: 34 }
19553                             }
19554                         }, {
19555                             type: 'Property',
19556                             key: {
19557                                 type: 'Identifier',
19558                                 name: 'i',
19559                                 range: [40, 41],
19560                                 loc: {
19561                                     start: { line: 1, column: 40 },
19562                                     end: { line: 1, column: 41 }
19563                                 }
19564                             },
19565                             value: {
19566                                 type: 'FunctionExpression',
19567                                 id: null,
19568                                 params: [],
19569                                 defaults: [],
19570                                 body: {
19571                                     type: 'BlockStatement',
19572                                     body: [],
19573                                     range: [44, 46],
19574                                     loc: {
19575                                         start: { line: 1, column: 44 },
19576                                         end: { line: 1, column: 46 }
19577                                     }
19578                                 },
19579                                 rest: null,
19580                                 generator: false,
19581                                 expression: false,
19582                                 range: [44, 46],
19583                                 loc: {
19584                                     start: { line: 1, column: 44 },
19585                                     end: { line: 1, column: 46 }
19586                                 }
19587                             },
19588                             kind: 'get',
19589                             range: [36, 46],
19590                             loc: {
19591                                 start: { line: 1, column: 36 },
19592                                 end: { line: 1, column: 46 }
19593                             }
19594                         }],
19595                         range: [22, 48],
19596                         loc: {
19597                             start: { line: 1, column: 22 },
19598                             end: { line: 1, column: 48 }
19599                         }
19600                     },
19601                     range: [18, 48],
19602                     loc: {
19603                         start: { line: 1, column: 18 },
19604                         end: { line: 1, column: 48 }
19605                     }
19606                 }],
19607                 kind: 'var',
19608                 range: [14, 48],
19609                 loc: {
19610                     start: { line: 1, column: 14 },
19611                     end: { line: 1, column: 48 }
19612                 }
19613             }],
19614             range: [0, 48],
19615             loc: {
19616                 start: { line: 1, column: 0 },
19617                 end: { line: 1, column: 48 }
19618             },
19619             errors: [{
19620                 index: 46,
19621                 lineNumber: 1,
19622                 column: 47,
19623                 message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
19624             }]
19625         },
19626
19627         '"use strict"; var x = { i: 42, get i() {} }': {
19628             type: 'Program',
19629             body: [{
19630                 type: 'ExpressionStatement',
19631                 expression: {
19632                     type: 'Literal',
19633                     value: 'use strict',
19634                     raw: '"use strict"',
19635                     range: [0, 12],
19636                     loc: {
19637                         start: { line: 1, column: 0 },
19638                         end: { line: 1, column: 12 }
19639                     }
19640                 },
19641                 range: [0, 13],
19642                 loc: {
19643                     start: { line: 1, column: 0 },
19644                     end: { line: 1, column: 13 }
19645                 }
19646             }, {
19647                 type: 'VariableDeclaration',
19648                 declarations: [{
19649                     type: 'VariableDeclarator',
19650                     id: {
19651                         type: 'Identifier',
19652                         name: 'x',
19653                         range: [18, 19],
19654                         loc: {
19655                             start: { line: 1, column: 18 },
19656                             end: { line: 1, column: 19 }
19657                         }
19658                     },
19659                     init: {
19660                         type: 'ObjectExpression',
19661                         properties: [{
19662                             type: 'Property',
19663                             key: {
19664                                 type: 'Identifier',
19665                                 name: 'i',
19666                                 range: [24, 25],
19667                                 loc: {
19668                                     start: { line: 1, column: 24 },
19669                                     end: { line: 1, column: 25 }
19670                                 }
19671                             },
19672                             value: {
19673                                 type: 'Literal',
19674                                 value: 42,
19675                                 raw: '42',
19676                                 range: [27, 29],
19677                                 loc: {
19678                                     start: { line: 1, column: 27 },
19679                                     end: { line: 1, column: 29 }
19680                                 }
19681                             },
19682                             kind: 'init',
19683                             range: [24, 29],
19684                             loc: {
19685                                 start: { line: 1, column: 24 },
19686                                 end: { line: 1, column: 29 }
19687                             }
19688                         }, {
19689                             type: 'Property',
19690                             key: {
19691                                 type: 'Identifier',
19692                                 name: 'i',
19693                                 range: [35, 36],
19694                                 loc: {
19695                                     start: { line: 1, column: 35 },
19696                                     end: { line: 1, column: 36 }
19697                                 }
19698                             },
19699                             value: {
19700                                 type: 'FunctionExpression',
19701                                 id: null,
19702                                 params: [],
19703                                 defaults: [],
19704                                 body: {
19705                                     type: 'BlockStatement',
19706                                     body: [],
19707                                     range: [39, 41],
19708                                     loc: {
19709                                         start: { line: 1, column: 39 },
19710                                         end: { line: 1, column: 41 }
19711                                     }
19712                                 },
19713                                 rest: null,
19714                                 generator: false,
19715                                 expression: false,
19716                                 range: [39, 41],
19717                                 loc: {
19718                                     start: { line: 1, column: 39 },
19719                                     end: { line: 1, column: 41 }
19720                                 }
19721                             },
19722                             kind: 'get',
19723                             range: [31, 41],
19724                             loc: {
19725                                 start: { line: 1, column: 31 },
19726                                 end: { line: 1, column: 41 }
19727                             }
19728                         }],
19729                         range: [22, 43],
19730                         loc: {
19731                             start: { line: 1, column: 22 },
19732                             end: { line: 1, column: 43 }
19733                         }
19734                     },
19735                     range: [18, 43],
19736                     loc: {
19737                         start: { line: 1, column: 18 },
19738                         end: { line: 1, column: 43 }
19739                     }
19740                 }],
19741                 kind: 'var',
19742                 range: [14, 43],
19743                 loc: {
19744                     start: { line: 1, column: 14 },
19745                     end: { line: 1, column: 43 }
19746                 }
19747             }],
19748             range: [0, 43],
19749             loc: {
19750                 start: { line: 1, column: 0 },
19751                 end: { line: 1, column: 43 }
19752             },
19753             errors: [{
19754                 index: 41,
19755                 lineNumber: 1,
19756                 column: 42,
19757                 message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
19758             }]
19759         },
19760
19761         '"use strict"; var x = { set i(x) {}, i: 42 }': {
19762             type: 'Program',
19763             body: [{
19764                 type: 'ExpressionStatement',
19765                 expression: {
19766                     type: 'Literal',
19767                     value: 'use strict',
19768                     raw: '"use strict"',
19769                     range: [0, 12],
19770                     loc: {
19771                         start: { line: 1, column: 0 },
19772                         end: { line: 1, column: 12 }
19773                     }
19774                 },
19775                 range: [0, 13],
19776                 loc: {
19777                     start: { line: 1, column: 0 },
19778                     end: { line: 1, column: 13 }
19779                 }
19780             }, {
19781                 type: 'VariableDeclaration',
19782                 declarations: [{
19783                     type: 'VariableDeclarator',
19784                     id: {
19785                         type: 'Identifier',
19786                         name: 'x',
19787                         range: [18, 19],
19788                         loc: {
19789                             start: { line: 1, column: 18 },
19790                             end: { line: 1, column: 19 }
19791                         }
19792                     },
19793                     init: {
19794                         type: 'ObjectExpression',
19795                         properties: [{
19796                             type: 'Property',
19797                             key: {
19798                                 type: 'Identifier',
19799                                 name: 'i',
19800                                 range: [28, 29],
19801                                 loc: {
19802                                     start: { line: 1, column: 28 },
19803                                     end: { line: 1, column: 29 }
19804                                 }
19805                             },
19806                             value: {
19807                                 type: 'FunctionExpression',
19808                                 id: null,
19809                                 params: [{
19810                                     type: 'Identifier',
19811                                     name: 'x',
19812                                     range: [30, 31],
19813                                     loc: {
19814                                         start: { line: 1, column: 30 },
19815                                         end: { line: 1, column: 31 }
19816                                     }
19817                                 }],
19818                                 defaults: [],
19819                                 body: {
19820                                     type: 'BlockStatement',
19821                                     body: [],
19822                                     range: [33, 35],
19823                                     loc: {
19824                                         start: { line: 1, column: 33 },
19825                                         end: { line: 1, column: 35 }
19826                                     }
19827                                 },
19828                                 rest: null,
19829                                 generator: false,
19830                                 expression: false,
19831                                 range: [33, 35],
19832                                 loc: {
19833                                     start: { line: 1, column: 33 },
19834                                     end: { line: 1, column: 35 }
19835                                 }
19836                             },
19837                             kind: 'set',
19838                             range: [24, 35],
19839                             loc: {
19840                                 start: { line: 1, column: 24 },
19841                                 end: { line: 1, column: 35 }
19842                             }
19843                         }, {
19844                             type: 'Property',
19845                             key: {
19846                                 type: 'Identifier',
19847                                 name: 'i',
19848                                 range: [37, 38],
19849                                 loc: {
19850                                     start: { line: 1, column: 37 },
19851                                     end: { line: 1, column: 38 }
19852                                 }
19853                             },
19854                             value: {
19855                                 type: 'Literal',
19856                                 value: 42,
19857                                 raw: '42',
19858                                 range: [40, 42],
19859                                 loc: {
19860                                     start: { line: 1, column: 40 },
19861                                     end: { line: 1, column: 42 }
19862                                 }
19863                             },
19864                             kind: 'init',
19865                             range: [37, 42],
19866                             loc: {
19867                                 start: { line: 1, column: 37 },
19868                                 end: { line: 1, column: 42 }
19869                             }
19870                         }],
19871                         range: [22, 44],
19872                         loc: {
19873                             start: { line: 1, column: 22 },
19874                             end: { line: 1, column: 44 }
19875                         }
19876                     },
19877                     range: [18, 44],
19878                     loc: {
19879                         start: { line: 1, column: 18 },
19880                         end: { line: 1, column: 44 }
19881                     }
19882                 }],
19883                 kind: 'var',
19884                 range: [14, 44],
19885                 loc: {
19886                     start: { line: 1, column: 14 },
19887                     end: { line: 1, column: 44 }
19888                 }
19889             }],
19890             range: [0, 44],
19891             loc: {
19892                 start: { line: 1, column: 0 },
19893                 end: { line: 1, column: 44 }
19894             },
19895             errors: [{
19896                 index: 42,
19897                 lineNumber: 1,
19898                 column: 43,
19899                 message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
19900             }]
19901
19902
19903         },
19904
19905         '({ set s() { } })': {
19906             type: 'Program',
19907             body: [{
19908                 type: 'ExpressionStatement',
19909                 expression: {
19910                     type: 'ObjectExpression',
19911                     properties: [{
19912                         type: 'Property',
19913                         key: {
19914                             type: 'Identifier',
19915                             name: 's',
19916                             range: [7, 8],
19917                             loc: {
19918                                 start: { line: 1, column: 7 },
19919                                 end: { line: 1, column: 8 }
19920                             }
19921                         },
19922                         value: {
19923                             type: 'FunctionExpression',
19924                             id: null,
19925                             params: [],
19926                             defaults: [],
19927                             body: {
19928                                 type: 'BlockStatement',
19929                                 body: [],
19930                                 range: [11, 14],
19931                                 loc: {
19932                                     start: { line: 1, column: 11 },
19933                                     end: { line: 1, column: 14 }
19934                                 }
19935                             },
19936                             rest: null,
19937                             generator: false,
19938                             expression: false,
19939                             range: [11, 14],
19940                             loc: {
19941                                 start: { line: 1, column: 11 },
19942                                 end: { line: 1, column: 14 }
19943                             }
19944                         },
19945                         kind: 'set',
19946                         range: [3, 14],
19947                         loc: {
19948                             start: { line: 1, column: 3 },
19949                             end: { line: 1, column: 14 }
19950                         }
19951                     }],
19952                     range: [1, 16],
19953                     loc: {
19954                         start: { line: 1, column: 1 },
19955                         end: { line: 1, column: 16 }
19956                     }
19957                 },
19958                 range: [0, 17],
19959                 loc: {
19960                     start: { line: 1, column: 0 },
19961                     end: { line: 1, column: 17 }
19962                 }
19963             }],
19964             range: [0, 17],
19965             loc: {
19966                 start: { line: 1, column: 0 },
19967                 end: { line: 1, column: 17 }
19968             },
19969             errors: [{
19970                 index: 9,
19971                 lineNumber: 1,
19972                 column: 10,
19973                 message: 'Error: Line 1: Unexpected token )'
19974             }]
19975         },
19976
19977         'foo("bar") = baz': {
19978             type: 'Program',
19979             body: [{
19980                 type: 'ExpressionStatement',
19981                 expression: {
19982                     type: 'AssignmentExpression',
19983                     operator: '=',
19984                     left: {
19985                         type: 'CallExpression',
19986                         callee: {
19987                             type: 'Identifier',
19988                             name: 'foo',
19989                             range: [0, 3],
19990                             loc: {
19991                                 start: { line: 1, column: 0 },
19992                                 end: { line: 1, column: 3 }
19993                             }
19994                         },
19995                         'arguments': [{
19996                             type: 'Literal',
19997                             value: 'bar',
19998                             raw: '"bar"',
19999                             range: [4, 9],
20000                             loc: {
20001                                 start: { line: 1, column: 4 },
20002                                 end: { line: 1, column: 9 }
20003                             }
20004                         }],
20005                         range: [0, 10],
20006                         loc: {
20007                             start: { line: 1, column: 0 },
20008                             end: { line: 1, column: 10 }
20009                         }
20010                     },
20011                     right: {
20012                         type: 'Identifier',
20013                         name: 'baz',
20014                         range: [13, 16],
20015                         loc: {
20016                             start: { line: 1, column: 13 },
20017                             end: { line: 1, column: 16 }
20018                         }
20019                     },
20020                     range: [0, 16],
20021                     loc: {
20022                         start: { line: 1, column: 0 },
20023                         end: { line: 1, column: 16 }
20024                     }
20025                 },
20026                 range: [0, 16],
20027                 loc: {
20028                     start: { line: 1, column: 0 },
20029                     end: { line: 1, column: 16 }
20030                 }
20031             }],
20032             range: [0, 16],
20033             loc: {
20034                 start: { line: 1, column: 0 },
20035                 end: { line: 1, column: 16 }
20036             },
20037             errors: [{
20038                 index: 10,
20039                 lineNumber: 1,
20040                 column: 11,
20041                 message: 'Error: Line 1: Invalid left-hand side in assignment'
20042             }]
20043         },
20044
20045         '1 = 2': {
20046             type: 'Program',
20047             body: [{
20048                 type: 'ExpressionStatement',
20049                 expression: {
20050                     type: 'AssignmentExpression',
20051                     operator: '=',
20052                     left: {
20053                         type: 'Literal',
20054                         value: 1,
20055                         raw: '1',
20056                         range: [0, 1],
20057                         loc: {
20058                             start: { line: 1, column: 0 },
20059                             end: { line: 1, column: 1 }
20060                         }
20061                     },
20062                     right: {
20063                         type: 'Literal',
20064                         value: 2,
20065                         raw: '2',
20066                         range: [4, 5],
20067                         loc: {
20068                             start: { line: 1, column: 4 },
20069                             end: { line: 1, column: 5 }
20070                         }
20071                     },
20072                     range: [0, 5],
20073                     loc: {
20074                         start: { line: 1, column: 0 },
20075                         end: { line: 1, column: 5 }
20076                     }
20077                 },
20078                 range: [0, 5],
20079                 loc: {
20080                     start: { line: 1, column: 0 },
20081                     end: { line: 1, column: 5 }
20082                 }
20083             }],
20084             range: [0, 5],
20085             loc: {
20086                 start: { line: 1, column: 0 },
20087                 end: { line: 1, column: 5 }
20088             },
20089             errors: [{
20090                 index: 1,
20091                 lineNumber: 1,
20092                 column: 2,
20093                 message: 'Error: Line 1: Invalid left-hand side in assignment'
20094             }]
20095         },
20096
20097         '3++': {
20098             type: 'Program',
20099             body: [{
20100                 type: 'ExpressionStatement',
20101                 expression: {
20102                     type: 'UpdateExpression',
20103                     operator: '++',
20104                     argument: {
20105                         type: 'Literal',
20106                         value: 3,
20107                         raw: '3',
20108                         range: [0, 1],
20109                         loc: {
20110                             start: { line: 1, column: 0 },
20111                             end: { line: 1, column: 1 }
20112                         }
20113                     },
20114                     prefix: false,
20115                     range: [0, 3],
20116                     loc: {
20117                         start: { line: 1, column: 0 },
20118                         end: { line: 1, column: 3 }
20119                     }
20120                 },
20121                 range: [0, 3],
20122                 loc: {
20123                     start: { line: 1, column: 0 },
20124                     end: { line: 1, column: 3 }
20125                 }
20126             }],
20127             range: [0, 3],
20128             loc: {
20129                 start: { line: 1, column: 0 },
20130                 end: { line: 1, column: 3 }
20131             },
20132             errors: [{
20133                 index: 1,
20134                 lineNumber: 1,
20135                 column: 2,
20136                 message: 'Error: Line 1: Invalid left-hand side in assignment'
20137             }]
20138         },
20139
20140         '--4': {
20141             type: 'Program',
20142             body: [{
20143                 type: 'ExpressionStatement',
20144                 expression: {
20145                     type: 'UpdateExpression',
20146                     operator: '--',
20147                     argument: {
20148                         type: 'Literal',
20149                         value: 4,
20150                         raw: '4',
20151                         range: [2, 3],
20152                         loc: {
20153                             start: { line: 1, column: 2 },
20154                             end: { line: 1, column: 3 }
20155                         }
20156                     },
20157                     prefix: true,
20158                     range: [0, 3],
20159                     loc: {
20160                         start: { line: 1, column: 0 },
20161                         end: { line: 1, column: 3 }
20162                     }
20163                 },
20164                 range: [0, 3],
20165                 loc: {
20166                     start: { line: 1, column: 0 },
20167                     end: { line: 1, column: 3 }
20168                 }
20169             }],
20170             range: [0, 3],
20171             loc: {
20172                 start: { line: 1, column: 0 },
20173                 end: { line: 1, column: 3 }
20174             },
20175             errors: [{
20176                 index: 3,
20177                 lineNumber: 1,
20178                 column: 4,
20179                 message: 'Error: Line 1: Invalid left-hand side in assignment'
20180             }]
20181         },
20182
20183         'for (5 in []) {}': {
20184             type: 'Program',
20185             body: [{
20186                 type: 'ForInStatement',
20187                 left: {
20188                     type: 'Literal',
20189                     value: 5,
20190                     raw: '5',
20191                     range: [5, 6],
20192                     loc: {
20193                         start: { line: 1, column: 5 },
20194                         end: { line: 1, column: 6 }
20195                     }
20196                 },
20197                 right: {
20198                     type: 'ArrayExpression',
20199                     elements: [],
20200                     range: [10, 12],
20201                     loc: {
20202                         start: { line: 1, column: 10 },
20203                         end: { line: 1, column: 12 }
20204                     }
20205                 },
20206                 body: {
20207                     type: 'BlockStatement',
20208                     body: [],
20209                     range: [14, 16],
20210                     loc: {
20211                         start: { line: 1, column: 14 },
20212                         end: { line: 1, column: 16 }
20213                     }
20214                 },
20215                 each: false,
20216                 range: [0, 16],
20217                 loc: {
20218                     start: { line: 1, column: 0 },
20219                     end: { line: 1, column: 16 }
20220                 }
20221             }],
20222             range: [0, 16],
20223             loc: {
20224                 start: { line: 1, column: 0 },
20225                 end: { line: 1, column: 16 }
20226             },
20227             errors: [{
20228                 index: 6,
20229                 lineNumber: 1,
20230                 column: 7,
20231                 message: 'Error: Line 1: Invalid left-hand side in for-in'
20232             }]
20233         }
20234
20235
20236     }
20237 };
20238